ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

cvshrink

クラス: ClassificationDiscriminant

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

構文

err = cvshrink(obj)
[err,gamma] = cvshrink(obj)
[err,gamma,delta] = cvshrink(obj)
[err,gamma,delta,numpred] = cvshrink(obj)
[err,...] = cvshrink(obj,Name,Value)

説明

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

[err,gamma] = cvshrink(obj) も Gamma 値のベクトルを返します。

[err,gamma,delta] = cvshrink(obj) も Delta 値のベクトルを返します。

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

[err,...] = cvshrink(obj,Name,Value) は、追加のオプションを使用して交差検証を行います。このオプションは Name,Value のペアの引数で指定されたものです。

入力引数

obj

fitcdiscr を使用して作成された判別分析分類器。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

'delta'

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

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

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

既定値: 0

'gamma'

交差検証に使用する Gamma 値のベクトル。

既定値: 0:0.1:1

'NumDelta'

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

既定値: 0

'NumGamma'

交差検証に対する Gamma 区間の個数。cvshrinkNumGamma + 1 個の Gamma の値を使用して判別式を交差検証します。Gamma の値は MinGamma から 1 までの間で均等な間隔になります。gamma を設定した場合、cvshrinkNumGamma を無視します。

既定値: 10

'verbose'

詳細/簡易レベル。0 から 2 までの整数です。値が大きいほど進捗メッセージの数が増えます。

既定値: 0

出力引数

err

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

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

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

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

gamma

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

delta

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

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

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

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

numpred

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

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

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

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

すべて展開する

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

データ 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');

詳細

すべて展開する

ヒント

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

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