Main Content

kfoldMargin

交差検証済みカーネル分類モデルの分類マージン

説明

margin = kfoldMargin(CVMdl) は、交差検証済みのバイナリ カーネル モデル (ClassificationPartitionedKernel) CVMdl によって取得した分類マージンを返します。kfoldMargin は、すべての分割について、学習分割観測値に対して学習をさせたモデルを使用して、検証分割観測値の分類マージンを計算します。

すべて折りたたむ

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

load ionosphere

このデータを使用して、バイナリ カーネル分類モデルを交差検証します。

CVMdl = fitckernel(X,Y,'Crossval','on')
CVMdl = 
  ClassificationPartitionedKernel
    CrossValidatedModel: 'Kernel'
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


CVMdlClassificationPartitionedKernel モデルです。既定では、10 分割交差検証が実行されます。異なる分割数を指定するには、'Crossval' ではなく名前と値のペアの引数 'KFold' を指定します。

検証分割観測値の分類マージンを推定します。

m = kfoldMargin(CVMdl);
size(m)
ans = 1×2

   351     1

m は 351 行 1 列のベクトルです。m(j) は観測値 j の分類マージンです。

箱ひげ図を使用して k 分割マージンをプロットします。

boxplot(m,'Labels','All Observations')
title('Distribution of Margins')

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

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

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

load ionosphere

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

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

2 つのバイナリ カーネル分類モデルを交差検証します。1 つではすべての予測子を、もう 1 つでは予測子の 10% を使用します。

CVMdl = fitckernel(X,Y,'CrossVal','on');
PCVMdl = fitckernel(X(:,idxPart),Y,'CrossVal','on');

CVMdl および PCVMdlClassificationPartitionedKernel モデルです。既定では、10 分割交差検証が実行されます。異なる分割数を指定するには、'Crossval' ではなく名前と値のペアの引数 'KFold' を指定します。

各分類器の k 分割マージンを推定します。

fullMargins = kfoldMargin(CVMdl);
partMargins = kfoldMargin(PCVMdl);

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

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

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

PCVMdl のマージン分布の四分位数は CVMdl のマージン分布の四分位数より高い位置にあるので、PCVMdl モデルの方が優れた分類器であることがわかります。

入力引数

すべて折りたたむ

交差検証済みのバイナリ カーネル分類モデル。ClassificationPartitionedKernel モデル オブジェクトを指定します。ClassificationPartitionedKernel モデルは、fitckernel を使用し、交差検証の名前と値のペアの引数のいずれかを指定することにより作成できます。

推定値を取得するため、kfoldMargin はカーネル分類モデルの交差検証に使用したものと同じデータ (X および Y) を適用します。

出力引数

すべて折りたたむ

分類マージン。数値ベクトルとして返されます。margin は n 行 1 列のベクトルであり、各行は対応する観測のマージンです。n は観測値の個数 (size(CVMdl.Y,1)) です。

詳細

すべて折りたたむ

分類マージン

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

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

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 を参照)。

バージョン履歴

R2018b で導入

すべて展開する