kfoldfun
分類での関数の交差検証
説明
例
カスタム損失関数の使用による分類損失の推定
分類木分類器に学習をさせてから、カスタム k 分割損失関数を使用してこれを交差検証します。
フィッシャーのアヤメのデータセットを読み込みます。
load fisheriris
分類木分類器を学習させます。
Mdl = fitctree(meas,species);
Mdl
は ClassificationTree
モデルです。
既定の 10 分割交差検証を使用して Mdl
を交差検証します。検証分割観測値の分類誤差 (誤分類された観測値の比率) を計算します。
rng(1); % For reproducibility CVMdl = crossval(Mdl); L = kfoldLoss(CVMdl,'LossFun','classiferror')
L = 0.0467
花を versicolor
として誤分類するコストが 10
、他の誤分類のコストが 1
である場合の結果を確認します。カスタム関数 noversicolor
(この例の終わりに掲載) を作成します。この関数は、花を versicolor
と誤分類する場合のコストを 10
として、他の誤分類のコストを 1
とします。
noversicolor
コストの平均誤分類誤差を計算します。
mean(kfoldfun(CVMdl,@noversicolor))
ans = 0.2267
次のコードは、関数 noversicolor
を作成します。
function averageCost = noversicolor(CMP,~,~,~,Xtest,Ytest,~) % noversicolor Example custom cross-validation function % Attributes a cost of 10 for misclassifying versicolor irises, and 1 for % 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 = cost/numel(Ytest); % Average error end
入力引数
CVMdl
— 交差検証済みモデル
ClassificationPartitionedModel
オブジェクト | ClassificationPartitionedEnsemble
オブジェクト | ClassificationPartitionedGAM
オブジェクト
交差検証済みモデル。ClassificationPartitionedModel
オブジェクト、ClassificationPartitionedEnsemble
オブジェクトまたは ClassificationPartitionedGAM
オブジェクトを指定します。
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
列の数値行列を返します。
データ型: double
拡張機能
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
この関数は、次の交差検証済みモデル オブジェクトの GPU 配列を完全にサポートします。
fitcensemble
で学習させたアンサンブル分類器fitcknn
で学習させた k 最近傍分類器fitcsvm
で学習させたサポート ベクター マシン分類器fitctree
で学習させたマルチクラス分類用の二分決定木
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2011a で導入
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)