Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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,δ] = cvshrink(obj)も Delta 値のベクトルを返します。

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

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

入力引数

obj

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

名前と値の引数

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

δ

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

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

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

既定値:0

gamma

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

既定値:0:0.1:1

NumDelta

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

既定値:0

NumGamma

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

既定値:10

verbose

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

既定値:0

出力引数

err

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

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

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

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

gamma

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

δ

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

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

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

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

numpred

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

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

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

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

すべて展開する

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

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

loadovariancancerobj = 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 contains 10 objects of type line.

詳細

すべて展開する

ヒント

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

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