ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

predict

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

構文

Label = predict(Mdl,X)
[Label,Score] = predict(Mdl,X)

説明

Label = predict(Mdl,X) は、バイナリ ガウス カーネル分類モデル Mdl に基づいて、予測子データ 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 = confusionmat(Y,label)
ConfusionTrain = 2×2

   224     1
     1   125

このモデルは、各クラスについて 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 = confusionmat(Y(trainingInds),labelTrain)
ConfusionTrain = 2×2

   190     1
     1   107

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

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

ConfusionTest = confusionmat(Y(testInds),labelTest)
ConfusionTest = 2×2

    17     1
     5    29

このモデルは、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) の事後確率が格納されます。

偽陽性率と真陽性率を取得し、曲線の下の面積 (AUC) を推定します。2 番目のクラスが陽性クラスであることを指定します。

[fpr,tpr,~,auc] = perfcurve(Y(testInds),posterior(:,2),Mdl.ClassNames(2));
auc
auc = 0.9042

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

ROC 曲線をプロットします。

figure;
plot(fpr,tpr)
h = gca;
h.XLim(1) = -0.1;
h.YLim(2) = 1.1;
xlabel('False positive rate')
ylabel('True positive rate')
title('ROC Curve')

入力引数

すべて折りたたむ

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

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

データ型: single | double

出力引数

すべて折りたたむ

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

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

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

分類スコア。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 で導入