resubPredict
再代入による分類木の観測値の分類
構文
説明
例
分類木では誤分類されるフィッシャーのアヤメのデータの総数を求めます。
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 のどちらであるかを正しく予測することが困難です。
予測子 X を X < 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 を呼び出すために、tree の PruneList プロパティと PruneAlpha プロパティは空以外でなければなりません。言い換えると、fitctree を使用するときに Prune="on" を設定して tree を成長させるか、prune を使用して tree を枝刈りすることで成長させます。
データ型: single | double | char | string
出力引数
学習データに対する予測クラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として返されます。label のデータ型は学習応答データ tree.Y と同じです。
subtrees に m > 1 のエントリが含まれる場合、label は m 列の行列として返され、各列が対応する部分木の予測を表します。それ以外の場合、label はベクトルとして返されます。
予測クラスのノード番号。数値列ベクトルまたは数値行列として返されます。
subtrees がスカラーであるか指定されていない場合、resubPredict は node を n 行 (tree.X と同じ行数) の数値列ベクトルとして返します。
subtrees に m > 1 のエントリが含まれる場合、node は n 行 m 列の数値行列になります。各列は、対応するサブツリーのノード予測を表します。
再代入データの予測クラス番号。数値列ベクトルまたは数値行列として返されます。
subtrees がスカラーであるか指定されていない場合、cnum は n 行 (tree.X と同じ行数) の数値列ベクトルになります。
subtrees に m > 1 のエントリが含まれる場合、cnum は n 行 m 列の数値行列になります。各列は、対応するサブツリーのクラス予測を表します。
詳細
あるノードにおける分類の事後確率とは、分類によって実際にそのノードに達するのに要した学習シーケンスの数を、そのノードまでの学習シーケンスの数で除算した値です。
例については、分類木の事後確率の定義を参照してください。
拡張機能
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2011a で導入
参考
resubEdge | resubMargin | resubLoss | predict | fitctree | ClassificationTree
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)