このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
resubLoss
判別分析分類器の再代入分類損失
説明
例
再代入の分類誤差
フィッシャーのアヤメのデータについて、再代入した分類誤差を計算します。
フィッシャーのアヤメのデータの分類モデルを作成します。
load fisheriris
mdl = fitcdiscr(meas,species);
再代入の分類誤差を計算します。
L = resubLoss(mdl)
L = 0.0200
入力引数
mdl
— 学習済みの判別分析分類器
ClassificationDiscriminant
モデル オブジェクト
学習済みの判別分析分類器。ClassificationDiscriminant
モデル オブジェクトとして指定します。判別分析分類器の作成には fitcdiscr
を使用します。
lossf
— 損失関数
"mincost"
(既定値) | "binodeviance"
| "classifcost"
| "classiferror"
| "exponential"
| "hinge"
| "logit"
| "quadratic"
| 関数ハンドル
損失関数。組み込みの損失関数名または関数ハンドルとして指定します。
次の表は、使用可能な損失関数の一覧です。対応する文字ベクトルまたは string スカラーを使用して、いずれかを指定します。
値 説明 "binodeviance"
二項分布からの逸脱度 "classifcost"
観測誤分類コスト "classiferror"
10 進数の誤分類率 "exponential"
指数損失 "hinge"
ヒンジ損失 "logit"
ロジスティック損失 "mincost"
最小予測誤分類コスト (事後確率である分類スコアの場合) "quadratic"
二次損失 "mincost"
は、事後確率である分類スコアに適しています。既定の設定では、判別分析モデルは分類スコアとして事後確率を返します (predict
を参照)。関数ハンドル表記を使用して独自の関数を指定します。
X
内の観測値数をn
、異なるクラスの数 (numel(mdl.ClassNames)
) をK
とします。使用する関数のシグネチャは次のようになっていなければなりません。ここで、lossvalue =
lossfun
(C,S,W,Cost)出力引数
lossvalue
はスカラーです。関数名 (
lossfun
) を選択します。C
はn
行K
列の logical 行列で、行は対応する観測値が属するクラスを示しています。列の順序はmdl.ClassNames
のクラスの順序に対応します。C
を作成するには、各行について観測値p
がクラスq
に含まれている場合にC(p,q) = 1
を設定します。行p
の他のすべての要素を0
に設定します。S
は、分類スコアのn
行K
列の行列です。列の順序はmdl.ClassNames
のクラスの順序に対応します。S
は分類スコアの行列で、predict
の出力と同様です。W
は、観測値の重みのn
行 1 列の数値ベクトルです。W
を渡す場合、要素は正規化され、合計が1
になります。Cost
は、誤分類コストの、K 行K
列の数値行列です。たとえば、Cost = ones(K) - eye(K)
は、正しい分類のコストとして0
を、誤分類のコストとして1
を指定します。
LossFun=@
を使用して独自の関数を指定します。lossfun
損失関数の詳細については、分類損失を参照してください。
データ型: char
| string
| function_handle
詳細
分類損失
"分類損失" 関数は分類モデルの予測誤差を評価します。複数のモデルで同じタイプの損失を比較した場合、損失が低い方が予測モデルとして優れていることになります。
以下のシナリオを考えます。
L は加重平均分類損失です。
n は標本サイズです。
バイナリ分類は以下です。
yj は観測されたクラス ラベルです。陰性クラスを示す -1 または陽性クラスを示す 1 (あるいは、
ClassNames
プロパティの最初のクラスを示す -1 または 2 番目のクラスを示す 1) を使用して符号化されます。f(Xj) は予測子データ X の観測値 (行) j に対する陽性クラスの分類スコアです。
mj = yjf(Xj) は、yj に対応するクラスに観測値 j を分類する分類スコアです。正の値の mj は正しい分類を示しており、平均損失に対する寄与は大きくありません。負の値の mj は正しくない分類を示しており、平均損失に大きく寄与します。
マルチクラス分類 (つまり、K ≥ 3) をサポートするアルゴリズムの場合、次のようになります。
yj* は、K - 1 個の 0 と、観測された真のクラス yj に対応する位置の 1 から構成されるベクトルです。たとえば、2 番目の観測値の真のクラスが 3 番目のクラスであり K = 4 の場合、y2* = [
0 0 1 0
]′ になります。クラスの順序は入力モデルのClassNames
プロパティ内の順序に対応します。f(Xj) は予測子データ X の観測値 j に対するクラス スコアのベクトルで、長さは K です。スコアの順序は入力モデルの
ClassNames
プロパティ内のクラスの順序に対応します。mj = yj*′f(Xj).したがって mj は、観測された真のクラスについてモデルが予測するスカラー分類スコアです。
観測値 j の重みは wj です。観測値の重みは、その合計が
Prior
プロパティに格納された対応するクラスの事前確率になるように正規化されます。そのため、次のようになります。
この状況では、名前と値の引数 LossFun
を使用して指定できる、サポートされる損失関数は次の表のようになります。
損失関数 | LossFun の値 | 式 |
---|---|---|
二項分布からの逸脱度 | "binodeviance" | |
観測誤分類コスト | "classifcost" | ここで、 はスコアが最大のクラスに対応するクラス ラベル、 は真のクラスが yj である場合に観測値をクラス に分類するユーザー指定のコストです。 |
10 進数の誤分類率 | "classiferror" | ここで、I{·} はインジケーター関数です。 |
クロスエントロピー損失 | "crossentropy" |
加重クロスエントロピー損失は次となります。 ここで重み は、合計が 1 ではなく n になるように正規化されます。 |
指数損失 | "exponential" | |
ヒンジ損失 | "hinge" | |
ロジット損失 | "logit" | |
最小予測誤分類コスト | "mincost" |
重み付きの最小予測分類コストは、次の手順を観測値 j = 1、...、n について使用することにより計算されます。
最小予測誤分類コスト損失の加重平均は次となります。 |
二次損失 | "quadratic" |
既定のコスト行列 (正しい分類の場合の要素値は 0、誤った分類の場合の要素値は 1) を使用する場合、"classifcost"
、"classiferror"
、および "mincost"
の損失の値は同じです。既定以外のコスト行列をもつモデルでは、ほとんどの場合は "classifcost"
の損失と "mincost"
の損失が等価になります。これらの損失が異なる値になる可能性があるのは、最大の事後確率をもつクラスへの予測と最小の予測コストをもつクラスへの予測が異なる場合です。"mincost"
は分類スコアが事後確率の場合にしか適さないことに注意してください。
次の図では、1 つの観測値のスコア m に対する損失関数 ("classifcost"
、"crossentropy"
、および "mincost"
を除く) を比較しています。いくつかの関数は、点 (0,1) を通過するように正規化されています。
事後確率
点 x がクラス k に属する事後確率は、事前確率と多変量正規密度の積です。1 行 d 列の平均 μk および 1 行 d 列の点 x における d 行 d 列の共分散 Σk をもつ、多変量正規密度関数は次のとおりです。
ここで、 は Σk の行列式、 は逆行列です。
P(k) でクラス k の事前確率を表してみます。すると、観測 x がクラス k になる事後確率は次のとおりです。
ここで P(x) は正規化定数、P(x|k)P(k) の合計 k です。
事前確率
事前確率は次の 3 つの選択肢のいずれかです。
'uniform'
— クラスk
の事前確率は、クラスの総数に対して 1 です。'empirical'
— クラスk
の事前確率は、クラスk
の学習標本の数を学習標本の合計で除算した値です。カスタム — クラス
k
の事前確率は、prior
ベクトルのk
番目の要素です。fitcdiscr
を参照してください。
分類モデル (Mdl
) を作成した後で、ドット表記を使用して事前確率を設定できます。
Mdl.Prior = v;
ここで v
は各要素が発生する頻度を表す正の要素のベクトルです。新しい事前確率を設定する場合に、分類器に再学習させる必要はありません。
コスト
観測ごとの予測コストの行列は、コストで定義されています。
バージョン履歴
R2011b で導入R2023b: 予測子に欠損値がある観測値を再代入と交差検証の計算に使用
R2023b 以降では、次の分類モデルのオブジェクト関数において、予測子に欠損値がある観測値が再代入 ("resub") と交差検証 ("kfold") による分類エッジ、損失、マージン、および予測の計算でその一部として使用されます。
以前のリリースでは、予測子に欠損値がある観測値は再代入と交差検証の計算で省略されていました。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)