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)