Main Content

resubPredict

再代入による分類木の観測値の分類

説明

label = resubPredict(tree) は、tree.X に格納されている予測子データを使用して、学習済み分類木モデル tree の予測クラス ラベルを返します。label のデータ型は学習応答データ tree.Y と同じす。

label = resubPredict(tree,Subtrees=subtrees) は、subtrees で指定されたレベルまで tree の枝刈りも行います。

[label,posterior,node,cnum] = resubPredict(tree) は、前の構文におけるいずれかの入力引数を使用して、再代入データの tree の事後クラス確率、予測クラス番号、ノード番号も返します。

すべて折りたたむ

分類木では誤分類されるフィッシャーのアヤメのデータの総数を求めます。

load fisheriris
tree = fitctree(meas,species);
Ypredict = resubPredict(tree);    % The predictions
Ysame = strcmp(Ypredict,species); % True when ==
sum(~Ysame) % How many are different?
ans = 3

フィッシャーのアヤメのデータ セットを読み込みます。データを学習セット (50%) に分割します。

load fisheriris

すべての花弁の測定値を使用して分類木を成長させます。

Mdl = fitctree(meas(:,3:4),species);
n = size(meas,1); % Sample size
K = numel(Mdl.ClassNames); % Number of classes

分類木を表示します。

view(Mdl,'Mode','graph');

この分類木には 4 つの枝刈りレベルがあります。レベル 0 は、(表示のように) 枝刈りされていない完全な木です。レベル 4 はルート ノードのみ (分割なし) です。

レベル 1 および 3 まで枝刈りした部分木を使用して、各クラスの事後確率を推定します。

[~,Posterior] = resubPredict(Mdl,'Subtrees',[1 3]);

Posterior は、事後確率が格納されている n x K x 2 の配列です。Posterior の各行は観測値に、各列は Mdl.ClassNames の順序でクラスに、各ページは枝刈りレベルに対応します。

各部分木を使用して、アヤメ 125 のクラス事後確率を表示します。

Posterior(125,:,:)
ans = 
ans(:,:,1) =

         0    0.0217    0.9783


ans(:,:,2) =

         0    0.5000    0.5000

決定株 (Posterior の 2 ページ) では、アヤメ 125 が versicolor と virginica のどちらであるかを正しく予測することが困難です。

予測子 XX < 0.15 または X > 0.95 の場合は true に分類し、それ以外の場合は false に分類します。

0 と 1 の間で一様分布する 100 個の乱数を生成し、ツリー モデルを使用してそれらを分類します。

rng("default") % For reproducibility
X = rand(100,1);
Y = (abs(X - 0.55) > 0.4);
tree = fitctree(X,Y);
view(tree,"Mode","graph")

ツリーを枝刈りします。

tree1 = prune(tree,"Level",1);
view(tree1,"Mode","graph")

枝刈りされたツリーは、0.15 未満の観測値を正しく true に分類しています。また、0.15 から 0.95 までの観測値についても、正しく false に分類しています。しかし、0.95 より大きい観測値は false に誤って分類されます。そのため、0.15 より大きい観測値のスコアは、true では 0.05/0.85=0.06、false では 0.8/0.85=0.94 になります。

X の先頭から 10 行までの予測スコア (事後確率) を計算します。

[~,score] = resubPredict(tree1);
[score(1:10,:) X(1:10)]
ans = 10×3

    0.9059    0.0941    0.8147
    0.9059    0.0941    0.9058
         0    1.0000    0.1270
    0.9059    0.0941    0.9134
    0.9059    0.0941    0.6324
         0    1.0000    0.0975
    0.9059    0.0941    0.2785
    0.9059    0.0941    0.5469
    0.9059    0.0941    0.9575
    0.9059    0.0941    0.9649

実際に、X で 0.15 より小さいすべての値 (右端の列) には、0 と 1 のスコアが関連付けられ (左の列と中央の列)、X のその他の値には、約 0.91 と 0.09 のスコアが関連付けられています。スコアの違い (想定した 0.06 ではなく、0.09) は、統計変動によるものです。範囲 (0.95,1) の X には、想定した 5 個ではなく 8 個の観測値があります。

sum(X > 0.95)
ans = 8

入力引数

すべて折りたたむ

分類木モデル。fitctree で学習させた ClassificationTree モデル オブジェクトとして指定します。

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

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

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

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

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

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

出力引数

すべて折りたたむ

学習データに対する予測クラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として返されます。label のデータ型は学習応答データ tree.Y と同じです。

subtreesm > 1 のエントリが含まれる場合、labelm 列の行列として返され、各列が対応する部分木の予測を表します。それ以外の場合、label はベクトルとして返されます。

tree で予測されるクラスの事後確率。数値行列または配列配列として返されます。

subtrees がスカラーであるか指定されていない場合、resubPredictposteriornk 列の数値行列として返します。ここで、n は学習データ tree.X の行数、k はクラスの数です。

subtreesm > 1 のエントリが含まれる場合、resubPredictposteriorn×k×m の数値配列として返します。ここで、それぞれの m の行列は対応する部分木の事後確率を示します。

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

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

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

再代入データの予測クラス番号。数値列ベクトルまたは数値行列として返されます。

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

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

詳細

すべて折りたたむ

事後確率

あるノードにおける分類の事後確率とは、分類によって実際にそのノードに達するのに要した学習シーケンスの数を、そのノードまでの学習シーケンスの数で除算した値です。

例については、分類木の事後確率の定義を参照してください。

拡張機能

バージョン履歴

R2011a で導入