kfoldfun
交差検証済み ECOC モデルを使用する交差検証関数
説明
例
カスタム損失関数の使用による分類誤差の推定
マルチクラス 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);
CVMdl
は ClassificationPartitionedECOC
モデルです。既定では、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
入力引数
CVMdl
— 交差検証 ECOC モデル
ClassificationPartitionedECOC
モデル
交差検証 ECOC モデル。ClassificationPartitionedECOC
モデルとして指定します。
fun
— 交差検証関数
関数ハンドル
交差検証関数。関数ハンドルを指定します。fun
の構文は次のとおりです。
testvals = fun(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
CMP
は、CVMdl.Trained
プロパティの 1 つの要素に格納されているコンパクト モデルです。Xtrain
は、予測値の学習行列です。Ytrain
は、応答値の学習配列です。Wtrain
は、観測値に対する一連の学習の重みです。Xtest
およびYtest
は、重みWtest
が関連付けられた検証データです。戻り値
testvals
は、すべての分割で同じサイズでなければなりません。
データ型: function_handle
出力引数
vals
— 交差検証の結果
数値行列
交差検証の結果。数値行列として返されます。vals
は出力 testvals
の配列に対応し、すべての分割で垂直に連結されます。たとえば、すべての分割からの testvals
が、長さ n の数値ベクトルである場合、kfoldfun
は、1 つの分割につき 1 行で KFold
行 n 列の数値行列を返します。
拡張機能
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2014b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)