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

resubLoss

再代入によるサポート ベクター マシン (SVM) 分類器の分類損失を計算

説明

L = resubLoss(SVMModel) は、SVMModel.X に格納されている学習データと SVMModel.Y に格納されている対応するクラス ラベルを使用して、サポート ベクター マシン (SVM) 分類器 SVMModel の再代入による分類損失 (標本内分類損失) L を返します。

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

L = resubLoss(SVMModel,'LossFun',lossFun) は、LossFun で指定された損失関数を使用して、再代入による分類損失を返します。

すべて折りたたむ

ionosphere データセットを読み込みます。

load ionosphere

SVM 分類器を学習させます。データを標準化し、'g' が陽性クラスであることを指定します。

SVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true);

SVMModel は学習させた ClassificationSVM 分類器です。

再代入損失 (標本内分類誤差) を推定します。

L = resubLoss(SVMModel)
L = 0.0570

SVM 分類器は、学習標本レーダー反射のうち約 5.7% を誤分類しています。

ionosphere データセットを読み込みます。

load ionosphere

SVM 分類器を学習させます。データを標準化し、'g' が陽性クラスであることを指定します。

SVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true);

SVMModel は学習させた ClassificationSVM 分類器です。

標本内ヒンジ損失を推定します。

L = resubLoss(SVMModel,'LossFun','hinge')
L = 0.1603

ヒンジ損失は 0.1603 です。分類器のヒンジ損失は 0 に近いことが推奨されます。

入力引数

すべて折りたたむ

完全な学習済み SVM 分類器。fitcsvm で学習をさせた ClassificationSVM モデルを指定します。

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

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

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

    'mincost' は、事後確率である分類スコアに適しています。SVM モデルの場合に事後確率を分類スコアとして使用するように指定するには、fitcsvm を使用してモデルを交差検証するときに 'FitPosterior',true を設定します。

  • 関数ハンドル表記を使用して、独自の関数を指定します。

    nX 内の観測値の個数、K は入力モデル (SVMModel) の作成に使用した異なるクラスの個数 (numel(SVMModel.ClassNames)) であるとします。使用する関数のシグネチャは次のようになっていなければなりません。

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

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

    • 関数名 (lossfun) を選択します。

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

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

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

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

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

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

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

例: 'LossFun','binodeviance'

データ型: char | string | function_handle

詳細

すべて折りたたむ

分類損失

"分類損失" 関数は分類モデルの予測誤差を評価します。複数のモデルで同じタイプの損失を比較した場合、損失が低い方が予測モデルとして優れていることになります。

以下のシナリオを考えます。

  • L は加重平均分類損失です。

  • n は標本サイズです。

  • バイナリ分類は以下です。

    • yj は観測されたクラス ラベルです。陰性クラスを示す -1 または陽性クラスを示す 1 を使用して符号化されます。

    • f(Xj) は予測子データ X の観測値 (行) j に対する生の分類スコアです。

    • mj = yjf(Xj) は、yj に対応するクラスに観測値 j を分類する分類スコアです。正の値の mj は正しい分類を示しており、平均損失に対する寄与は大きくありません。負の値の mj は正しくない分類を示しており、平均損失に大きく寄与します。

  • マルチクラス分類 (つまり、K ≧ 3) をサポートするアルゴリズムの場合、次のようになります。

    • yj* は、K - 1 個の 0 と、観測された真のクラス yj に対応する位置の 1 から構成されるベクトルです。たとえば、2 番目の観測値の真のクラスが 3 番目のクラスであり K = 4 の場合、y*2 = [0 0 1 0]′になります。クラスの順序は入力モデルの ClassNames プロパティ内の順序に対応します。

    • f(Xj) は予測子データ X の観測値 j に対するクラス スコアのベクトルで、長さは K です。スコアの順序は入力モデルの ClassNames プロパティ内のクラスの順序に対応します。

    • mj = yj*′f(Xj).したがって mj は、観測された真のクラスについてモデルが予測するスカラー分類スコアです。

  • 観測値 j の重みは wj です。観測値の重みは正規化され、合計は対応するクラスの事前確率になります。また、事前確率は合計が 1 になるように正規化されます。したがって、次のようになります。

    j=1nwj=1.

この状況では、名前と値のペアの引数 'LossFun' を使用して指定できる、サポートされる損失関数は次の表のようになります。

損失関数LossFun の値
二項分布からの逸脱度'binodeviance'L=j=1nwjlog{1+exp[2mj]}.
指数損失'exponential'L=j=1nwjexp(mj).
分類誤差'classiferror'

L=j=1nwjI{y^jyj}.

これは重み付きの誤分類観測値の比率です。y^j は、事後確率が最大であるクラスに対応するクラス ラベルです。I{x} はインジケーター関数です。

ヒンジ損失'hinge'L=j=1nwjmax{0,1mj}.
ロジット損失'logit'L=j=1nwjlog(1+exp(mj)).
最小コスト'mincost'

最小コスト。重み付きの最小コストは、次の手順を観測値 j = 1、...、n について使用することにより計算されます。

  1. 観測値 j の予測分類コストから構成される 1 行 K 列のベクトルを推定します。

    γj=f(Xj)C.

    f(Xj) はバイナリおよびマルチクラス分類におけるクラスの事後確率の列ベクトルです。C は入力モデルの Cost プロパティに格納されるコスト行列です。

  2. 最小の予測分類コストに対応するクラス ラベルを観測値 j について予測します。

    y^j=minj=1,...,K(γj).

  3. C を使用して、予測を行うために必要なコスト (cj) を求めます。

重み付きの平均最小コスト損失は次のようになります。

L=j=1nwjcj.

二次損失'quadratic'L=j=1nwj(1mj)2.

次の図では、mに対する 1 つの観測値の ('mincost' 以外の) 損失関数を比較しています。一部の関数は、[0,1] を通過するように正規化されています。

分類スコア

観測値 x を分類するための SVM の "分類スコア" は、x から判定境界 (範囲は -∞ ~ +∞) までの符号付き距離です。クラスの正のスコアは、x がそのクラスにあると予測されることを示します。負のスコアはそうではないことを示します。

正のクラス分類スコア f(x) は、学習済み SVM 分類関数です。f(x) は x に対する数値的な予測応答でもあり、x を陽性クラスとして予測するスコアでもあります。

f(x)=j=1nαjyjG(xj,x)+b,

(α1,...,αn,b) は推定された SVM パラメーター、G(xj,x) は予測子空間における x とサポート ベクターの間のドット積です。合計には学習セットの観測値が含まれます。x に対する負のクラス分類スコア、つまり x を陰性クラスとして予測するスコアは、–f(x) です。

G(xj,x) = xj′x (線形カーネル) の場合、スコア関数は次のように縮小されます。

f(x)=(x/s)β+b.

s はカーネル スケール、β は近似線形係数のベクトルです。

詳細は、サポート ベクター マシンについてを参照してください。

参照

[1] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning, second edition. Springer, New York, 2008.

R2014a で導入