Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

resubPredict

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

説明

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

Yfit = resubPredict(tree,Subtrees=subtrees) は、応答を予測する前に、さらに treesubtrees で指定されたレベルまで枝刈りします。

R2021a より前では、等価な構文 Yfit = resubPredict(tree,"Subtrees",subtrees) を使用します。

[Yfit,node] = resubPredict(___) は、前の構文の入力引数のいずれかを使用して、再代入データでの tree のノード数も返します。

すべて折りたたむ

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 に対してプロットします。

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 = 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, xlabel Weight (lbs), ylabel MPG 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 の間隔が大きくなるのでフラットになる傾向があります。

入力引数

すべて折りたたむ

回帰木。関数 fitrtree を使用して作成した RegressionTree オブジェクトとして指定します。

枝刈りレベル。昇順の非負の整数のベクトルまたは "all" として指定します。

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

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

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

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

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

出力引数

すべて折りたたむ

学習データについて予測した再代入応答の値。ベクトルまたは行列として返されます。Yfit のデータ型は学習応答データ tree.Y と同じです。

名前と値の引数 Subtrees が数値スカラーの場合、Yfit は列ベクトルとして返されます。それ以外の場合、Yfitm 列の行列として返されます。m は部分木の数です。各列は、対応する部分木の予測を表します。

各データ行に関連付けられる tree のノード数。数値ベクトルまたは数値行列として返されます。

名前と値の引数 Subtrees が数値スカラーの場合、noden 要素の列ベクトルとして返されます。ntree.X の行数です。それ以外の場合、node はサイズが nm 列の行列として返されます。m は部分木の数です。各列は、対応するサブツリーのノード予測を表します。

拡張機能

バージョン履歴

R2011a で導入