Main Content

margin

ガウス カーネル分類モデルの分類マージン

説明

m = margin(Mdl,X,Y) は、X 内の予測子データと Y 内の対応するクラス ラベルを使用して、バイナリ ガウス カーネル分類モデル Mdl分類マージンを返します。

m = margin(Mdl,Tbl,ResponseVarName) は、テーブル Tbl に含まれている予測子データと Tbl.ResponseVarName に含まれているクラス ラベルを使用して学習させたカーネル分類器 Mdl の分類マージンを返します。

m = margin(Mdl,Tbl,Y) は、table Tbl 内の予測子データとベクトル Y 内のクラス ラベルを使用して、分類器 Mdl の分類マージンを返します。

すべて折りたたむ

ionosphere データセットを読み込みます。このデータセットには、レーダー反射についての 34 個の予測子と、不良 ('b') または良好 ('g') という 351 個の二項反応が含まれています。

load ionosphere

データ セットを学習セットとテスト セットに分割します。テスト セット用に 30% のホールドアウト標本を指定します。

rng('default') % For reproducibility
Partition = cvpartition(Y,'Holdout',0.30);
trainingInds = training(Partition); % Indices for the training set
testInds = test(Partition); % Indices for the test set

学習セットを使用してバイナリ カーネル分類モデルに学習をさせます。

Mdl = fitckernel(X(trainingInds,:),Y(trainingInds));

学習セットのマージンとテストセットのマージンを推定します。

mTrain = margin(Mdl,X(trainingInds,:),Y(trainingInds));
mTest = margin(Mdl,X(testInds,:),Y(testInds));

箱ひげ図を使用して、両方のマージンのセットをプロットします。

boxplot([mTrain; mTest],[zeros(size(mTrain,1),1); ones(size(mTest,1),1)], ...
    'Labels',{'Training set','Test set'});
title('Training-Set and Test-Set Margins')

Figure contains an axes object. The axes object with title Training-Set and Test-Set Margins contains 14 objects of type line. One or more of the lines displays its values using only markers

学習セットのマージン分布はテスト セットのマージン分布より高い位置にあります。

複数のモデルによるテストセットのマージンを比較することにより、特徴選択を実行します。この基準のみに基づくと、マージンが大きい方が分類器として優れています。

ionosphere データセットを読み込みます。このデータセットには、レーダー反射についての 34 個の予測子と、不良 ('b') または良好 ('g') という 351 個の二項反応が含まれています。

load ionosphere

データ セットを学習セットとテスト セットに分割します。テスト セット用に 15% のホールドアウト標本を指定します。

rng('default') % For reproducibility
Partition = cvpartition(Y,'Holdout',0.15);
trainingInds = training(Partition); % Indices for the training set
XTrain = X(trainingInds,:);
YTrain = Y(trainingInds);
testInds = test(Partition); % Indices for the test set
XTest = X(testInds,:);
YTest = Y(testInds);

予測子変数の 10% を無作為に選択します。

p = size(X,2); % Number of predictors
idxPart = randsample(p,ceil(0.1*p));

2 つのバイナリ カーネル分類モデルに学習をさせます。1 つではすべての予測子を、もう 1 つではランダムな 10% の予測子を使用します。

Mdl = fitckernel(XTrain,YTrain);
PMdl = fitckernel(XTrain(:,idxPart),YTrain);

Mdl および PMdlClassificationKernel モデルです。

各分類器についてテストセットのマージンを推定します。

fullMargins = margin(Mdl,XTest,YTest);
partMargins = margin(PMdl,XTest(:,idxPart),YTest);

箱ひげ図を使用して、マージン セットの分布をプロットします。

boxplot([fullMargins partMargins], ...
    'Labels',{'All Predictors','10% of the Predictors'});
title('Test-Set Margins')

Figure contains an axes object. The axes object with title Test-Set Margins contains 14 objects of type line. One or more of the lines displays its values using only markers

PMdl のマージン分布は Mdl のマージン分布より高い位置にあります。したがって、PMdl モデルの方が優れた分類器です。

入力引数

すべて折りたたむ

バイナリ カーネル分類モデル。ClassificationKernel モデル オブジェクトを指定します。ClassificationKernel モデル オブジェクトは、fitckernel を使用して作成できます。

予測子データ。n 行 p 列の数値行列を指定します。n は観測値の個数、p は Mdl の学習に使用した予測子の個数です。

Y の長さと X の観測値数は同じでなければなりません。

データ型: single | double

クラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。

  • Y のデータ型は Mdl.ClassNames のデータ型と同じでなければなりません。(string 配列は文字ベクトルの cell 配列として扱われます)。

  • Y の各クラスは Mdl.ClassNames のサブセットでなければなりません。

  • Y が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。

  • Y の長さは X または Tbl の観測値の数と等しくなければなりません。

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

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

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

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

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

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

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

データ型: char | string

出力引数

すべて折りたたむ

分類マージン。n 行 1 列の数値列ベクトルとして返されます。n は X 内の観測値の個数です。

詳細

すべて折りたたむ

分類マージン

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

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

m=2yf(x).

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

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

分類スコア

カーネル分類モデルの場合、観測値 x (行列ベクトル) を陽性クラスに分類する生の "分類スコア" は次のように定義されます。

f(x)=T(x)β+b.

  • T(·) は特徴量を拡張するための観測値の変換です。

  • β は推定された係数の列ベクトルです。

  • b は推定されたスカラー バイアスです。

x を陰性クラスに分類する生の分類スコアは −f(x) です。このソフトウェアでは、スコアが正になるクラスに観測値が分類されます。

カーネル分類モデルがロジスティック回帰学習器から構成されている場合、'logit' スコア変換が生の分類スコアに適用されます (ScoreTransform を参照)。

拡張機能

バージョン履歴

R2017b で導入