Main Content

kfoldfun

分類での関数の交差検証

    説明

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

    すべて折りたたむ

    分類木分類器に学習をさせてから、カスタム k 分割損失関数を使用してこれを交差検証します。

    フィッシャーのアヤメのデータ セットを読み込みます。

    load fisheriris

    分類木分類器を学習させます。

    Mdl = fitctree(meas,species);

    MdlClassificationTree モデルです。

    既定の 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

    入力引数

    すべて折りたたむ

    交差検証済みモデル。ClassificationPartitionedModel オブジェクト、ClassificationPartitionedEnsemble オブジェクトまたは ClassificationPartitionedGAM オブジェクトを指定します。

    交差検証関数。関数ハンドルを指定します。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 行で KFoldN 列の数値行列を返します。

    データ型: double

    拡張機能

    バージョン履歴

    R2011a で導入