Main Content

predict

ガウス カーネル分類モデルのラベルの予測

説明

Label = predict(Mdl,X) は、バイナリ ガウス カーネル分類モデル Mdl に基づいて、行列または table X 内の予測子データに対する予測クラス ラベルのベクトルを返します。

[Label,Score] = predict(Mdl,X) は、両方のクラスの分類スコアも返します。

すべて折りたたむ

バイナリ カーネル分類モデルを使用して学習セットのラベルを予測し、生成された分類の混同行列を表示します。

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

load ionosphere

レーダー反射が不良 ('b') と良好 ('g') のどちらであるかを識別するバイナリ カーネル分類モデルに学習をさせます。

rng('default') % For reproducibility
Mdl = fitckernel(X,Y);

MdlClassificationKernel モデルです。

学習セット (再代入) のラベルを予測します。

label = predict(Mdl,X); 

混同行列を作成します。

ConfusionTrain = confusionchart(Y,label);

Figure contains an object of type ConfusionMatrixChart.

このモデルは、各クラスについて 1 つずつのレーダー反射を誤分類します。

バイナリ カーネル分類モデルを使用してテスト セットのラベルを予測し、生成された分類の混同行列を表示します。

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
testInds = test(Partition); % Indices for the test set

学習セットを使用してバイナリ カーネル分類モデルに学習をさせます。クラスの順序を定義することをお勧めします。

Mdl = fitckernel(X(trainingInds,:),Y(trainingInds),'ClassNames',{'b','g'}); 

学習セットのラベルとテスト セットのラベルを予測します。

labelTrain = predict(Mdl,X(trainingInds,:));
labelTest = predict(Mdl,X(testInds,:));

学習セットの混同行列を作成します。

ConfusionTrain = confusionchart(Y(trainingInds),labelTrain);

Figure contains an object of type ConfusionMatrixChart.

このモデルは、各クラスについて 1 つずつのレーダー反射のみを誤分類します。

テスト セットの混同行列を作成します。

ConfusionTest = confusionchart(Y(testInds),labelTest);

Figure contains an object of type ConfusionMatrixChart.

このモデルは、1 つの不良なレーダー反射を良好な反射として、5 つの良好なレーダー反射を不良な反射として誤分類します。

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

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), ...
    'ClassNames',{'b','g'},'Learner','logistic');

テスト セットの事後クラス確率を予測します。

[~,posterior] = predict(Mdl,X(testInds,:));

Mdl 内の正則化強度は 1 つなので、出力 posterior は列数が 2 で行数がテスト セットの観測値数と同じである行列になります。列 i には、与えられた特定の観測値に対する Mdl.ClassNames(i) の事後確率が格納されます。

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

rocObj = rocmetrics(Y(testInds),posterior,Mdl.ClassNames);

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

plot(rocObj,ClassNames=Mdl.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.9042), g Model Operating Point.

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

入力引数

すべて折りたたむ

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

分類対象の予測子データ。数値行列またはテーブルを指定します。

X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。

  • 数値行列の場合

    • X の列に含まれている変数の順序は、Mdl に学習させた予測子変数の順序と同じでなければなりません。

    • テーブル (たとえば Tbl) を使用して Mdl に学習をさせた場合、Tbl に含まれている予測子変数がすべて数値変数であれば、X を数値行列にすることができます。学習時に Tbl 内の数値予測子をカテゴリカルとして扱うには、fitckernel の名前と値のペアの引数 CategoricalPredictors を使用してカテゴリカル予測子を指定します。Tbl に種類の異なる予測子変数 (数値および categorical データ型など) が混在し、X が数値行列である場合、predict でエラーがスローされます。

  • テーブルの場合

    • predict は、文字ベクトルの cell 配列ではない cell 配列や複数列の変数をサポートしません。

    • テーブル (たとえば Tbl) を使用して Mdl に学習をさせた場合、X 内のすべての予測子変数は変数名およびデータ型が、Mdl に学習させた (Mdl.PredictorNames に格納されている) 変数と同じでなければなりません。ただし、X の列の順序が Tbl の列の順序に対応する必要はありません。また、TblX に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

    • 数値行列を使用して Mdl に学習をさせた場合、Mdl.PredictorNames 内の予測子名と X 内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定する方法については、fitckernel の名前と値のペアの引数 PredictorNames を参照してください。X 内の予測子変数はすべて数値ベクトルでなければなりません。X に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

データ型: table | double | single

出力引数

すべて折りたたむ

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

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

関数 predict は、スコアが最高になるクラスに観測値を分類します。観測値のスコアが NaN の場合、関数はこの観測値を、学習ラベルの最大比率を占める多数クラスに分類します。

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

Mdl.Learner'logistic' の場合、分類スコアは事後確率です。

詳細

すべて折りたたむ

分類スコア

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

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

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

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

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

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

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

拡張機能

バージョン履歴

R2017b で導入

すべて展開する