Main Content

resubPredict

再代入による回帰木の応答の予測

説明

Yfit = resubPredict(tree) は、データ tree.X について tree で予測された応答を含む tree.X 要素のベクトルを返します。Yfit には、fitrtreeens の作成に使用されたデータに関する tree の予測が格納されます。

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

[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

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

入力引数

すべて折りたたむ

回帰木モデル。fitrtree で学習させた RegressionTree モデル オブジェクトとして指定します。

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

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

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

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

関数で subtrees を呼び出すために、treePruneList プロパティと PruneAlpha プロパティは空以外でなければなりません。言い換えると、fitrtree を使用するときに Prune="on" を設定して tree を成長させるか、prune を使用して tree を枝刈りすることで成長させます。

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

出力引数

すべて折りたたむ

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

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

予測クラスのノード番号。数値列ベクトルまたは数値行列として返されます。

subtrees がスカラーであるか指定されていない場合、resubPredictnoden 行 (tree.X と同じ行数) の数値列ベクトルとして返します。

subtreesm > 1 のエントリが含まれる場合、nodenm 列の数値行列になります。各列は、対応するサブツリーのノード予測を表します。

拡張機能

バージョン履歴

R2011a で導入