Main Content

resubPredict

クラス: RegressionTree

ツリーの再代入応答の予測

構文

Yfit = resubPredict(tree)
[Yfit,node] = resubPredict(tree)
[Yfit,node] = resubPredict(tree,Name,Value)

説明

Yfit = resubPredict(tree) は、データ tree.X について tree が予測した応答を返します。Yfit は、関数 fitrtreetree の作成に使用したデータに関する tree の予測です。

[Yfit,node] = resubPredict(tree) は、再代入データでの tree のノード数を返します。

[Yfit,node] = resubPredict(tree,Name,Value) では、1 つ以上の Name,Value の引数ペアで指定された追加オプションを使用して、予測を行います。

入力引数

すべて展開する

tree

fitrtree を使用して構築された回帰木。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

枝刈りレベル。'Subtrees' と昇順の非負の整数のベクトルまたは 'all' から構成されるコンマ区切りのペアとして指定します。

ベクトルを指定する場合、すべての要素が 0 から max(tree.PruneList) の範囲になければなりません。0 は枝刈りしない完全な木を、max(tree.PruneList) は完全に枝刈りした木 (つまり、ルート ノードのみ) を表します。

'all' を指定した場合、resubPredict はすべての部分木 (枝刈り順序全体) に作用します。これは、0:max(tree.PruneList) を指定することと同じです。

resubPredict では、Subtrees で指定された各レベルまで tree の枝刈りを行ってから、対応する出力引数を推定します。Subtrees のサイズにより、一部の出力引数のサイズが決まります。

Subtrees を呼び出すために、treePruneList プロパティまたは PruneAlpha プロパティを空にすることはできません。言い換えると、'Prune','on' を設定して tree を成長させるか、prune を使用して tree の枝刈りを行います。

例: 'Subtrees','all'

データ型: single | double | char | string

出力引数

Yfit

応答 tree は、学習データについて予測します。

Subtrees 名前と値のペアの引数がスカラーまたは欠損値である場合、label は、学習応答データ tree.Y と同じデータ型です。

Subtreesm>1 のエントリが含まれる場合、label には m 列が含まれ、それぞれが対応するサブツリーの予測を表します。

node

tree が各データ行を送出する、tree のノード数。

Subtrees 名前と値の引数がスカラーであるか、引数がない場合、node は、tree.X と同じ行数の n 行をもつ数値列ベクトルです。

Subtreesm>1 のエントリが含まれる場合、node は、n x m の行列です。各列は、対応するサブツリーのノード予測を表します。

すべて展開する

carsmall データセットを読み込みます。DisplacementHorsepower および Weight が応答 MPG の予測子であると考えます。

load carsmall
X = [Displacement Horsepower Weight];

すべての観測値を使用して回帰木を成長させます。

Mdl = fitrtree(X,MPG);

再代入の MSE を計算します。

Yfit = resubPredict(Mdl);
mean((Yfit - Mdl.Y).^2)
ans = 4.8952

resubLoss を使用すると同じ結果が得られます。

resubLoss(Mdl)
ans = 4.8952

carsmall データセットを読み込みます。Weight が応答 MPG の予測子であると考えます。

load carsmall
idxNaN = isnan(MPG + Weight);
X = Weight(~idxNaN);
Y = MPG(~idxNaN);
n = numel(X);

すべての観測値を使用して回帰木を成長させます。

Mdl = fitrtree(X,Y);

いくつかの枝刈りレベルで部分木の再代入の近似値を計算します。

m = max(Mdl.PruneList);
pruneLevels = 1:4:m; % Pruning levels to consider
z = numel(pruneLevels);
Yfit = resubPredict(Mdl,'SubTrees',pruneLevels);

Yfit は、近似値が含まれている nz 列の行列です。各行は観測値に、各列は部分木に対応しています。

YfitY のいくつかの列を X に対してプロットします。

figure;
sortDat = sortrows([X Y Yfit],1); % Sort all data with respect to X
plot(repmat(sortDat(:,1),1,size(Yfit,2) + 1),sortDat(:,2:end))...
    % Vectorize for efficiency
lev = cellstr(num2str((pruneLevels)','Level %d MPG'));
legend(['Observed MPG'; lev])
title 'In-Sample Fitted Responses'
xlabel 'Weight (lbs)';
ylabel 'MPG';
h = findobj(gcf);
set(h(4:end),'LineWidth',3) % Widen all lines

Figure contains an axes object. The axes object with title In-Sample Fitted Responses contains 5 objects of type line. These objects represent Observed MPG, Level 1 MPG, Level 5 MPG, Level 9 MPG, Level 13 MPG.

下位の枝刈りレベルでは、Yfit の値が上位レベルよりデータに近づく傾向があります。上位の枝刈りレベルでは、X の間隔が大きくなるのでフラットになる傾向があります。

拡張機能