Main Content

kfoldfun

交差検証済み ECOC モデルを使用する交差検証関数

説明

vals = kfoldfun(CVMdl,fun) は、交差検証済み ECOC モデル CVMdl に格納されているデータに fun を適用することにより、関数 fun を交差検証します。関数 fun は、関数ハンドルとして渡す必要があります。

すべて折りたたむ

マルチクラス ECOC 分類器に学習をさせてから、カスタム k 分割損失関数を使用してモデルを交差検証します。

フィッシャーのアヤメのデータ セットを読み込みます。予測子データ X、応答データ Y、および Y 内のクラスの順序を指定します。

load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y); % Class order
rng(1); % For reproducibility

サポート ベクター マシン (SVM) バイナリ分類器を使用して、ECOC モデルの学習と交差検証を行います。SVM テンプレートを使用して予測子を標準化し、クラスの順序を指定します。

t = templateSVM('Standardize',1);
CVMdl = fitcecoc(X,Y,'CrossVal','on','Learners',t,...
    'ClassNames',classOrder);

CVMdlClassificationPartitionedECOC モデルです。既定では、10 分割交差検証が実行されます。

検証分割観測値の分類誤差 (誤分類された観測値の比率) を計算します。

L = kfoldLoss(CVMdl)
L = 0.0400

花を versicolor として誤分類するコストが 10、他の誤分類のコストが 1 である場合の結果を確認します。一般的な誤分類の場合のコストとして 1、花を versicolor に誤分類する場合のコストとして 10 を割り当てる、noversicolor という名前の関数を作成します。

この例のライブ スクリプト ファイルを使用している場合、関数 noversicolor は既にファイルの終わりに含まれています。それ以外の場合は、この関数を .m ファイルの終わりに作成するか、MATLAB® パス上のファイルとして追加する必要があります。

noversicolor コストの平均誤分類誤差を計算します。

foldLoss = kfoldfun(CVMdl,@noversicolor);
mean(foldLoss)
ans = single
    0.0667

次のコードは、関数 noversicolor を作成します。

function averageCost = noversicolor(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
% noversicolor: Example custom cross-validation function that assigns a cost of
%   10 for misclassifying versicolor irises and a cost of 1 for misclassifying
%   the other irises. This example function requires the fisheriris data
%   set.
Ypredict = predict(CMP,Xtest);
misclassified = not(strcmp(Ypredict,Ytest)); % Different result
classifiedAsVersicolor = strcmp(Ypredict,'versicolor'); % Index of bad decisions
cost = sum(misclassified) + ...
    9*sum(misclassified & classifiedAsVersicolor); % Total differences
averageCost = single(cost/numel(Ytest)); % Average error
end

入力引数

すべて折りたたむ

交差検証 ECOC モデル。ClassificationPartitionedECOC モデルとして指定します。

交差検証関数。関数ハンドルを指定します。fun の構文は次のとおりです。

testvals = fun(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
  • CMP は、CVMdl.Trained プロパティの 1 つの要素に格納されているコンパクト モデルです。

  • Xtrain は、予測値の学習行列です。

  • Ytrain は、応答値の学習配列です。

  • Wtrain は、観測値に対する一連の学習の重みです。

  • Xtest および Ytest は、重み Wtest が関連付けられた検証データです。

  • 戻り値 testvals は、すべての分割で同じサイズでなければなりません。

データ型: function_handle

出力引数

すべて折りたたむ

交差検証の結果。数値行列として返されます。vals は出力 testvals の配列に対応し、すべての分割で垂直に連結されます。たとえば、すべての分割からの testvals が、長さ n の数値ベクトルである場合、kfoldfun は、1 つの分割につき 1 行で KFold 行 n 列の数値行列を返します。

拡張機能

バージョン履歴

R2014b で導入