メインコンテンツ

loss

判別分析分類器の分類損失

説明

L = loss(Mdl,Tbl,ResponseVarName) は、分類損失を返します。これは、Tbl.ResponseVarName 内の真のクラス ラベルと比較して、学習済みの判別分析分類器 Mdl が table Tbl 内の予測子データをどの程度の精度で分類するかを表すスカラーです。

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

loss は、L を計算するときに、MdlPrior プロパティに格納されている、学習に使用されたクラス確率に対して、Tbl.ResponseVarName のクラス確率を正規化します。

L = loss(Mdl,Tbl,Y) は、table Tbl 内の予測子データと Y 内のクラス ラベルを使用して、分類器 Mdl の分類損失を返します。

L = loss(Mdl,X,Y) は、予測子データ XY 内の対応するクラス ラベルを使用して、学習済み判別分析分類器 Mdl の分類損失を返します。

L = loss(___,Name=Value) では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、分類損失関数や観測値の重みを指定できます。

メモ

予測子データ X に欠損値があり、LossFun"mincost" または "classiferror" に設定されていない場合、関数 lossNaN が返されることがあります。詳細については、欠損値がある予測子データに対して loss で NaN が返されることがあるを参照してください。

すべて折りたたむ

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

load fisheriris

データ内の観測値をすべて使用して、判別分析モデルに学習をさせます。

Mdl = fitcdiscr(meas,species);

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

L = loss(Mdl,meas,species)
L = 
0.0200

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

入力引数

すべて折りたたむ

学習済みの判別分析分類器。fitcdiscr で学習させた ClassificationDiscriminant モデル オブジェクト、または compact で作成した CompactClassificationDiscriminant モデル オブジェクトとして指定します。

モデルを学習させるために使用する標本データ。table として指定します。Tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。カテゴリカル予測子変数はサポートされていません。必要に応じて、応答変数 (カテゴリカルにすることが可能) 用および観測値の重み用の追加列を Tbl に含めることができます。Tbl には、Mdl に学習させるために使用したすべての予測子変数が含まれていなければなりません。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。

Mdl を学習させるために使用した応答変数が Tbl に含まれている場合、ResponseVarName または Y を指定する必要はありません。

table に格納されている標本データを使用して Mdl に学習をさせた場合、loss の入力データも table に含まれていなければなりません。

データ型: table

応答変数の名前。Tbl 内の変数の名前で指定します。Mdl を学習させるために使用した応答変数が Tbl に含まれている場合、ResponseVarName を指定する必要はありません。

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

応答変数は、categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列でなければなりません。応答変数が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。

データ型: char | string

予測子データ。数値行列として指定します。X の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。カテゴリカル予測子変数はサポートされていません。X の列内の変数は、Mdl の学習に使用した変数と同じでなければなりません。X の行数は Y の行数と等しくなければなりません。

行列に格納されている標本データを使用して Mdl に学習させた場合、loss の入力データも行列でなければなりません。

データ型: single | double

クラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Y のデータ型は、Mdl の学習に使用した応答データと同じでなければなりません。(string 配列は文字ベクトルの cell 配列として扱われます)。

Y の長さは、Tbl または X の行数と等しくなければなりません。

データ型: categorical | char | string | logical | single | double | cell

名前と値の引数

すべて折りたたむ

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

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

例: L = loss(Mdl,meas,species,LossFun="binodeviance")

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

次の表に、組み込みの損失関数の値を示します。対応する文字ベクトルまたは string スカラーを使用して、いずれかを指定します。

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

"mincost" は、事後確率である分類スコアに適しています。既定では、判別分析分類器は分類スコアとして事後確率を返します (predict を参照)。

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

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

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

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

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

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

  • S は、分類スコアの nK 列の行列です。列の順序は Mdl.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

観測値の重み。数値ベクトルまたは Tbl 内の変数の名前を指定します。X または Tbl の各行に含まれている観測値には、Weights の対応する重みが適用されます。

数値ベクトルで Weights を指定する場合、Weights のサイズは X または Tbl の行数と等しくなければなりません。

Tbl 内の変数名を Weights として指定する場合、文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、重みが Tbl.W として格納されている場合、Weights"W" として指定します。それ以外の場合、Tbl の列は Tbl.W を含めてすべて予測子として扱われます。

独自の損失関数を指定しない場合、Weights が正規化され、合計が各クラスの事前確率の値になります。

例: Weights="W"

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

詳細

すべて折りたたむ

拡張機能

すべて展開する

バージョン履歴

R2011b で導入

すべて展開する