Main Content

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

resubMargin

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

説明

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

m は、Y と同じ長さの数値ベクトルとして返されます。m の各エントリの推定は、学習させた SVM 分類器 SVMModelX の対応する行、真のクラス ラベル Y を使用して実行されます。

すべて折りたたむ

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

load ionosphere

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

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

SVMModelClassificationSVM 分類器です。

標本内分類マージンを推定します。

m = resubMargin(SVMModel);
m(10:20)
ans = 11×1

    5.5625
    4.2918
    1.9990
    4.5521
   -1.4904
    3.2817
    4.0261
    4.5421
   16.4460
    2.0006
      ⋮

観測マージンは、観測された (真の) クラスのスコアから、当該のクラスのすべてのスコアの中で最大の偽のクラスのスコアを差し引いたものです。分類器のマージンは比較的大きいことが推奨されます。

複数のモデルによる標本内マージンを比較することにより、特徴選択を実行します。この比較のみに基づくと、マージンが最大である分類器が最良の分類器です。

ionosphere データセットを読み込みます。次の 2 つのデータセットを定義します。

  • fullX。すべての予測子が格納されます (削除された 0 の列を除く)。

  • partX。最後の 20 個の予測子が格納されます。

load ionosphere
fullX = X;
partX = X(:,end-20:end);

予測子セットごとに SVM 分類器を学習させます。

FullSVMModel = fitcsvm(fullX,Y);
PartSVMModel = fitcsvm(partX,Y);

分類器ごとに標本内マージンを推定します。

fullMargins = resubMargin(FullSVMModel);
partMargins = resubMargin(PartSVMModel);
n = size(X,1);
p = sum(fullMargins < partMargins)/n
p = 0.2251

完全なモデルからのマージンの約 22% が、予測子が少ないモデルからのマージンより小さくなっています。これは、すべての予測子によって学習をさせたモデルの方が優れていることを示しています。

入力引数

すべて折りたたむ

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

詳細

すべて折りたたむ

分類エッジ

"エッジ" は、"分類マージン" の加重平均値です。

重みはクラスの事前確率です。重みを渡すと、この重みは正規化され、各クラス内の事前確率の合計になります。この再正規化された重みを使用して、加重平均が計算されます。

特徴選択を実行する場合などに複数の分類器から選択する方法の 1 つは、エッジが最大になる分類器を選択することです。

分類マージン

バイナリ分類の "分類マージン" は、各観測値における真のクラスの分類スコアと偽のクラスの分類スコアの差です。

このソフトウェアでは、バイナリ分類の分類マージンは次のように定義されます。

m=2yf(x).

x は観測値です。x の真のラベルが陽性クラスである場合、y は 1、それ以外の場合は –1 です。f(x) は観測値 x についての陽性クラスの分類スコアです。一般的には、分類マージンは m = yf(x) と定義されています。

各マージンのスケールが同じである場合、マージンを分類の信頼尺度として使用できます。複数の分類器の中で、マージンが大きい分類器の方が優れています。

分類スコア

観測値 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 はカーネル スケール、β は近似線形係数のベクトルです。

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

アルゴリズム

バイナリ分類の場合、観測値 j のマージン mj は次のように定義されます。

mj=2yjf(xj),

ここで、yj ∊ {-1,1} であり、f(xj) は陽性クラスにおける観測値 j の予測スコアです。ただし一般的には、マージンの定義として mj = yjf(xj) が使用されます。

参照

[1] Christianini, N., and J. C. Shawe-Taylor. An Introduction to Support Vector Machines and Other Kernel-Based Learning Methods. Cambridge, UK: Cambridge University Press, 2000.

R2014a で導入