メインコンテンツ

cvshrink

線形判別の正則化の交差検証

説明

err = cvshrink(Mdl) は、正則化パラメーター gamma の異なる値で交差検証された分類誤差の値を含むベクトルを返します。

[err,gamma] = cvshrink(Mdl) は、gamma の値のベクトルも返します。

[err,gamma,delta] = cvshrink(Mdl) は、delta の値のベクトルも返します。

[err,gamma,delta,numpred] = cvshrink(Mdl) は、パラメーター gamma および delta の各設定に対する非ゼロの予測子の数を含むベクトルまたは行列を返します。

[___] = cvshrink(Mdl,Name=Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、交差検証用の delta 区間および gamma 区間の数や進捗メッセージの詳細レベルを指定できます。

すべて折りたたむ

判別分析分類器を正則化し、モデル内の予測子の数と分類精度の間のトレードオフを表示します。

データ ovariancancer の線形判別分析分類器を作成します。結果のモデルを適度に小さく維持するためにオプション SaveMemory とオプション FillCoeffs を設定します。

load ovariancancer
obj = fitcdiscr(obs,grp,...
    'SaveMemory','on','FillCoeffs','off');

Gamma の 10 レベルと Delta の 10 レベルを使用して、適切なパラメーターを検索します。この検索には時間がかかります。進行状況を表示するために Verbose1 に設定します。

rng('default') % for reproducibility
[err,gamma,delta,numpred] = cvshrink(obj,...
    'NumGamma',9,'NumDelta',9,'Verbose',1);
Done building cross-validated model.
Processing Gamma step 1 out of 10.
Processing Gamma step 2 out of 10.
Processing Gamma step 3 out of 10.
Processing Gamma step 4 out of 10.
Processing Gamma step 5 out of 10.
Processing Gamma step 6 out of 10.
Processing Gamma step 7 out of 10.
Processing Gamma step 8 out of 10.
Processing Gamma step 9 out of 10.
Processing Gamma step 10 out of 10.

予測子の数に対して分類誤差率をプロットします。

plot(err,numpred,'k.')
xlabel('Error rate');
ylabel('Number of predictors');

Figure contains an axes object. The axes object with xlabel Error rate, ylabel Number of predictors contains 10 objects of type line. One or more of the lines displays its values using only markers

入力引数

すべて折りたたむ

学習済みの判別分析分類器。fitcdiscr で学習させた ClassificationDiscriminant モデル オブジェクトとして指定します。

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: [err,gamma,delta,numpred] = cvshrink(Mdl,NumGamma=9,NumDelta=9,Verbose=1);

交差検証用の Delta 値。数値スカラー、行ベクトル、または行列として指定します。

  • スカラー deltacvshrink は、この delta の値と gamma のすべての値を正則化に使用します。

  • 行ベクトル delta — 各 i および j に対して、cvshrinkdelta(j)gamma(i) を正則化に使用します。

  • 行列 deltadelta の行数は gamma に含まれる要素の数と等しくなければなりません。各 i および jに対して、cvshrinkdelta(i,j)gamma(i) を正則化に使用します。

例: delta=[0 .01 .1]

データ型: double

交差検証用の Gamma 値。数値ベクトルとして指定します。

例: gamma=[0 .01 .1]

データ型: double

交差検証用の delta 区間の数。非負の整数として指定します。cvshrink は、すべての gamma の値について、ゼロから delta の最大値までの NumDelta + 1 個の等間隔な delta の値を使用して判別式を交差検証します。最大値では、すべての予測子がこの値の gamma について排除されます。delta を設定した場合、cvshrinkNumDelta を無視します。

例: NumDelta=3

データ型: double

交差検証用の gamma 区間の数。非負の整数として指定します。cvshrink は、MinGamma から 1 までの NumGamma + 1 個の等間隔な gamma の値を使用して判別式を交差検証します。gamma を設定した場合、cvshrinkNumGamma を無視します。

例: NumGamma=3

データ型: double

詳細レベル。01、または 2 を指定します。値が大きいほど進捗メッセージの数が増えます。

例: Verbose=2

データ型: double

出力引数

すべて折りたたむ

誤分類誤差率。誤差の数値のベクトルまたは行列として返されます。誤分類誤差率は、すべての分割で誤分類されたデータの平均の比率です。

  • delta がスカラー (既定) の場合、err(i)gamma(i) で正則化された Mdl に対する誤分類誤差率です。

  • delta がベクトルの場合、err(i,j)gamma(i)delta(j) で正則化された Mdl に対する誤分類誤差率です。

  • delta が行列の場合、err(i,j)gamma(i)delta(i,j) で正則化された Mdl に対する誤分類誤差率です。

正則化に使用された Gamma 値。数値ベクトルとして返されます。ガンマとデルタを参照してください。

正則化に使用された Delta 値。数値ベクトルまたは行列として返されます。ガンマとデルタを参照してください。

  • 名前と値の引数 delta にスカラーを指定した場合、出力 deltagamma と同じサイズで、入力スカラーと等しいエントリをもつ行ベクトルになります。

  • 名前と値の引数 delta に行ベクトルを指定した場合、出力 delta はこの行ベクトルと同じ列数で gamma の要素の数と等しい行数の行列になります。出力 delta(i,j) は入力 delta(j) と等しくなります。

  • 名前と値の引数 delta に行列を指定した場合、出力 delta はこの入力行列と同じになります。delta の行数は、gamma 内の要素の数と等しくなければなりません。

さまざまな正則化を実行したときのモデル内の予測子の数。数値ベクトルまたは行列として返されます。numprederr と同じサイズです。

  • delta がスカラー (既定) の場合、numpred(i)gamma(i)delta で正則化された Mdl の予測子の数です。

  • delta がベクトルの場合、numpred(i,j)gamma(i)delta(j) で正則化された Mdl の予測子の数です。

  • delta が行列の場合、numpred(i,j)gamma(i)delta(i,j) で正則化された Mdl の予測子の数です。

詳細

すべて折りたたむ

ヒント

  • err および numpred 出力を調べて、交差検証誤差と予測子の数の間のトレードオフを確認します。満足のいく点が見つかったら、ドット表記を使用して対応する gamma および delta プロパティをモデルに設定します。たとえば、(i,j) が満足のいく点の位置である場合は、次のように設定します。

    Mdl.Gamma = gamma(i);
    Mdl.Delta = delta(i,j);

バージョン履歴

R2012b で導入