Main Content

kfoldPredict

交差検証済みカーネル分類モデルの観測値の分類

説明

label = kfoldPredict(CVMdl) は、交差検証済みバイナリ カーネル モデル (ClassificationPartitionedKernel) CVMdl によって予測されたクラス ラベルを返します。kfoldPredict は、すべての分割について、学習分割観測値に対して学習をさせたモデルを使用して、検証分割観測値のクラス ラベルを予測します。

[label,score] = kfoldPredict(CVMdl) は、両方のクラスの分類スコアも返します。

すべて折りたたむ

交差検証済みバイナリ カーネル分類器を使用して観測値を分類し、生成された分類の混同行列を表示します。

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

load ionosphere

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

rng(1); % For reproducibility 
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' を指定します。

分割の学習で fitckernel が使用しない観測値を分類します。

label = kfoldPredict(CVMdl);

混同行列を作成して、観測値の真のクラスを予測されたラベルと比較します。

C = confusionchart(Y,label);

Figure contains an object of type ConfusionMatrixChart.

CVMdl モデルは、32 個の良好な ('g' の) レーダー反射を不良 ('b') として誤分類し、7 個の不良なレーダー反射を良好として誤分類します。

交差検証済みバイナリ カーネル分類器を使用して事後クラス確率を推定し、受信者動作特性 (ROC) 曲線をプロットしてモデルの品質を判断します。交差検証済みカーネル分類モデルは、ロジスティック回帰学習器の場合のみ事後確率を返します。

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

load ionosphere

このデータを使用して、バイナリ カーネル分類モデルを交差検証します。クラスの順序を指定し、ロジスティック回帰学習器を当てはめます。

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


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

分割の学習で fitckernel が使用しない観測値の事後クラス確率を予測します。

[~,posterior] = kfoldPredict(CVMdl);

出力 posteriorn 行 2 列の行列です。n は観測値の個数です。列 i には、与えられた特定の観測値に対する CVMdl.ClassNames(i) の事後確率が格納されます。

rocmetricsオブジェクトを作成し、ROC 曲線のパフォーマンス メトリクス (真陽性率と偽陽性率) を計算して ROC 曲線の下の領域 (AUC) の値を求めます。

rocObj = rocmetrics(Y,posterior,CVMdl.ClassNames);

rocmetrics の関数 plot を使用して、2 番目のクラスの ROC 曲線をプロットします。

plot(rocObj,ClassNames=CVMdl.ClassNames(2))

Figure contains an axes object. The axes object with title ROC Curve, xlabel False Positive Rate, ylabel True Positive Rate contains 3 objects of type roccurve, scatter, line. These objects represent g (AUC = 0.9441), g Model Operating Point.

AUC は 1 に近いので、モデルによるラベルの予測精度が高いことがわかります。

入力引数

すべて折りたたむ

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

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

出力引数

すべて折りたたむ

予測クラス ラベル。categorical 配列、文字配列、logical 行列、数値行列、または文字ベクトルの cell 配列として返されます。

label の行数は n (n は X 内の観測値の個数)、データ型は CVMdl の学習に使用した、観測されたクラス ラベル (Y) と同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。

kfoldPredict は、スコアが最高になるクラスに観測値を分類します。

分類スコア。n 行 2 列の数値配列として返されます。n は X 内の観測値の個数です。score(i,j) は、観測値 i をクラス j に分類するスコアです。クラスの順序は CVMdl.ClassNames に格納されます。

CVMdl.Trained{1}.Learner'logistic' の場合、分類スコアは事後確率です。

詳細

すべて折りたたむ

分類スコア

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

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

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

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

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

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

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

バージョン履歴

R2018b で導入

すべて展開する