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

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

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

入力引数

obj

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

名前と値の引数

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

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

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');

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

詳細

すべて展開する

ヒント

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

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