メインコンテンツ

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 を使用して作成できます。

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

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

モデルを学習させるために使用する標本データ。table として指定します。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 列の数値列ベクトルとして返されます。nX 内の観測値の個数です。

詳細

すべて折りたたむ

拡張機能

すべて展開する

バージョン履歴

R2017b で導入

すべて展開する