ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

loss

構文

L = loss(ens,tbl,ResponseVarName)
L = loss(ens,tbl,Y)
L = loss(ens,X,Y)
L = loss(___,Name,Value)

説明

L = loss(ens,tbl,ResponseVarName) は、予測子のテーブル tbl と真のクラス ラベル tbl.ResponseVarName を使用して計算したアンサンブル ens の分類誤差を返します。

L = loss(ens,tbl,Y) は、予測子のテーブル tbl と真のクラス ラベル Y を使用して計算したアンサンブル ens の分類誤差を返します。

L = loss(ens,X,Y) は、予測の行列 X と真のクラス ラベル Y を使用して計算されたアンサンブル ens の分類誤差を返します。

L = loss(___,Name,Value) は、前の構文のいずれかを使用し、1 つ以上の Name,Value ペア引数で指定されたオプションを追加して、分類誤差を計算します。

loss は損失を計算するときに、ensPrior に格納されている、学習に使用したクラス確率になるように、ResponseVarName または Y のクラス確率を正規化します。

入力引数

ens

関数 fitcensemble で作成されたアンサンブル分類、または、compact を使用して作成されたコンパクト アンサンブル分類。

tbl

標本データ。テーブルとして指定します。tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。tbl には、モデルを学習させるために使用したすべての予測子が含まれていなければなりません。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。

table に含まれている標本データを使用して ens を学習させた場合、このメソッドの入力データもテーブルでなければなりません。

ResponseVarName

応答変数の名前。tbl 内の変数の名前で指定します。

ResponseVarName には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、応答変数 Ytbl.Y として格納されている場合、'Y' として指定します。それ以外の場合、モデルを学習させるときに、tbl の列は Y を含めてすべて予測子として扱われます。

X

分類するデータの行列。X の各行は 1 つの観測値を表し、各列は、1 つの予測子を表します。X は、ens の学習に使用されるデータと同じ列数でなければなりません。X は、Y に含まれる要素数と同じ数の行がなければなりません。

行列に含まれている標本データを使用して ens を学習させた場合、このメソッドの入力データも行列でなければなりません。

Y

tbl または X における観測値のクラス ラベル。Y のデータ型は ens の学習に使用した分類と同じでなければならず、要素数は tbl または X の行数に等しくなければなりません。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

'learners'

1 から ens.NumTrained までのアンサンブルに含まれる弱学習器のインデックス。loss は、これらの学習器を損失計算にのみ使用します。

既定値: 1:NumTrained

'Lossfun'

損失関数。'LossFun' と組み込みの損失関数名または関数ハンドルから構成されるコンマ区切りのペアとして指定します。

  • 次の表は、使用可能な損失関数の一覧です。対応する文字ベクトルまたは string スカラーを使用して、いずれかを指定します。

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

    '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 のクラスの順序に対応します。

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

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

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

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

    'LossFun',@lossfun を使用して独自の関数を指定します。

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

既定値: 'classiferror'

'mode'

出力 L の意味:

  • 'ensemble'L は、アンサンブル全体に対する損失を表すスカラー値です。

  • 'individual'L は、学習された学習器ごとに 1 つの要素をもつベクトルです。

  • 'cumulative'L は、学習器の入力リストから学習器 1:J を使用して要素 J が取得されたベクトルです。

既定値: 'ensemble'

'UseObsForLearner'

NT 列のサイズの logical 行列です。

  • NX の行の数です。

  • T は、ens に存在する弱学習器の数です。

UseObsForLearner(i,j)true のとき、学習器 jX の行 i のクラスの予測に使用されます。

既定値: true(N,T)

'weights'

非負のエントリをもつ、観測の重みのベクトル。weights の長さは、X の行数と等しくなければなりません。重みを指定すると、loss は各クラスの観測の重みを正規化し、そのクラスの事前確率の合計になるようにします。

既定値: ones(size(X,1),1)

出力引数

L

分類損失。既定の設定では、誤分類データの比率です。L はベクトルになる可能性があり、名前と値のペアの引数の設定によっては意味が異なります。

すべて展開する

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

load fisheriris

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

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

学習観測値を使用してモデルの分類誤差を推定します。

L = loss(ens,meas,species)
L = 0.0333

または、ens がコンパクトでない場合は、ensresubLoss に渡すことにより学習標本の分類誤差を推定できます。

詳細

すべて展開する

拡張機能

参考

| | |