メインコンテンツ

resubLoss

アンサンブル分類モデルの再代入分類損失

説明

L = resubLoss(ens) は、ens.X に格納されている学習データと ens.Y に格納されている対応する真のクラス ラベルを使用して、学習済みアンサンブル分類モデル ens の再代入による分類損失 L を返します。resubLoss で既定で使用される損失は、fitcensemble での ens の作成に使用されたデータについて計算された損失です。

分類損失 (L) は再代入の品質に対する尺度です。解釈は損失関数 (LossFun) と加重スキームによって異なりますが、一般に、優れた分類器の方が分類損失値が小さくなります。LossFun の既定値は "classiferror" (10 進数の誤分類率) です。

L = resubLoss(ens,Name=Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、損失関数、損失の計算に使用する弱学習器のインデックス、出力の集約レベルを指定できます。

すべて折りたたむ

フィッシャーのアヤメのデータ セットを読み込みます。

load fisheriris

AdaBoostM2 を使用して、100 本の決定木によるアンサンブル分類に学習をさせます。弱学習器として木の切り株を指定します。

t = templateTree(MaxNumSplits=1);
ens = fitcensemble(meas,species,Method="AdaBoostM2",Learners=t);

再代入分類誤差を推定します。

loss = resubLoss(ens)
loss = 
0.0333

入力引数

すべて折りたたむ

アンサンブル分類モデル。fitcensemble で学習させた ClassificationEnsemble または ClassificationBaggedEnsemble モデル オブジェクトとして指定します。

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: resubLoss(ens,LossFun="exponential",UseParallel=true) は、指数の損失関数を使用し、計算を並列に実行するように指定します。

resubLoss で使用するアンサンブル内の弱学習器のインデックス。範囲 [1:ens.NumTrained] の正の整数のベクトルとして指定します。既定では、この関数はすべての学習器を使用します。

例: Learners=[1 2 4]

データ型: single | double

損失関数。組み込みの損失関数名または関数ハンドルを指定します。

次の表に、組み込みの損失関数の値を示します。

説明
"binodeviance"二項分布からの逸脱度
"classifcost"観測誤分類コスト
"classiferror"10 進数の誤分類率
"exponential"指数損失
"hinge"ヒンジ損失
"logit"ロジスティック損失
"mincost"最小予測誤分類コスト (事後確率である分類スコアの場合)
"quadratic"二次損失

  • "mincost" は、事後確率である分類スコアに適しています。

  • 既定の設定では、バギング アンサンブルと部分空間アンサンブルは事後確率を返します (ens.Method"Bag" または "Subspace")。

  • アンサンブル法が "AdaBoostM1""AdaBoostM2""GentleBoost"、または "LogitBoost" の場合に事後確率を分類スコアとして使用するには、次のように入力してダブルロジットのスコア変換を指定する必要があります。

    ens.ScoreTransform = "doublelogit";

  • 他のすべてのアンサンブル法の場合、事後確率は分類スコアとしてサポートされていません。

関数ハンドル表記を使用して独自の関数を指定できます。nX 内の観測値の個数、K は異なるクラスの個数 (numel(ens.ClassNames)ens は入力モデル) であるとします。使用する関数のシグネチャは次のようになっていなければなりません。

lossvalue = lossfun(C,S,W,Cost)
ここで

  • 出力引数 lossvalue はスカラーです。

  • 関数名 (lossfun) を指定します。

  • CnK 列の logical 行列であり、対応する観測値が属するクラスを各行が示します。列の順序は ens.ClassNames のクラスの順序に対応します。

    各行について観測値 p がクラス q に属する場合は C(p,q) = 1 を設定することにより、C を作成します。行 p の他のすべての要素を 0 に設定します。

  • S は、分類スコアの nK 列の行列です。列の順序は ens.ClassNames のクラスの順序に対応します。S は分類スコアの行列で、predict の出力と同様です。

  • W は、観測値の重みの n 行 1 列の数値ベクトルです。W を渡す場合、重みは合計が 1 になるように正規化されます。

  • Cost は、誤分類コストの、KK 列の数値行列です。たとえば、Cost = ones(K) - eye(K) は、正しい分類のコストとして 0 を、誤分類のコストとして 1 を指定します。

損失関数の詳細については、分類損失を参照してください。

例: LossFun="binodeviance"

例: LossFun=@Lossfun

データ型: char | string | function_handle

出力の集約レベル。"ensemble""individual"、または "cumulative" として指定します。

説明
"ensemble"出力は、アンサンブル全体に対する損失を表すスカラー値になります。
"individual"出力は、学習させた学習器ごとに 1 つの要素をもつベクトルになります。
"cumulative"出力は、学習器の入力リストから学習器 1:J を使用して要素 J が取得されたベクトルになります。

例: Mode="individual"

データ型: char | string

並列実行のフラグ。数値または logical の 1 (true) または 0 (false) として指定します。UseParallel=true を指定した場合、関数 resubLossparfor を使用して for ループの反復を実行します。Parallel Computing Toolbox™ がある場合、ループが並列に実行されます。

例: UseParallel=true

データ型: logical

詳細

すべて折りたたむ

拡張機能

すべて展開する

バージョン履歴

R2011a で導入

すべて展開する