Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

cvshrink

縮小 (枝刈り) アンサンブルの交差検証

説明

vals = cvshrink(ens) は、平均二乗誤差の交差検証値をもつ LT 列の行列を返します。L は、構造体 ens.RegularizationLambda 値の数です。T は、弱学習器の重みに対する Threshold 値の数です。関数 regularize で指定された値を格納する Regularization プロパティが ens にない場合は、名前と値の引数 Lambda を設定します。

[vals,nlearn] = cvshrink(ens) は、交差検証を使用したアンサンブル内の学習器の平均数を表す LT 列の行列を追加で返します。

[___] = cvshrink(ens,Name=Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、使用する分割数、ホールドアウト検証に使用するデータの比率、弱学習器の重みの低域カットオフを指定できます。

入力引数

すべて展開する

アンサンブル回帰モデル。fitrensemble で学習させた RegressionEnsemble モデル オブジェクトとして指定します。

名前と値の引数

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

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

例: cvshrink(ens,Holdout=0.1,Threshold=[0 .01 .1]) は、データの 10% をホールドアウト検証用に確保し、1 番目、2 番目、3 番目の弱学習器に対する重みのカットオフをそれぞれ 0、0.01、1 と指定します。

交差検証分割。交差検証のタイプと学習セットおよび検証セットのインデックス付けを指定する cvpartition オブジェクトとして指定します。

交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: cvp = cvpartition(500,KFold=5) を使用して、500 個の観測値に対する 5 分割交差検証について無作為な分割を作成するとします。この場合、CVPartition=cvp を設定して交差検証分割を指定できます。

ホールドアウト検証に使用するデータの比率。範囲 [0,1] のスカラー値として指定します。Holdout=p を指定した場合、以下の手順が実行されます。

  1. p*100% のデータを無作為に選択して検証データとして確保し、残りのデータを使用してモデルに学習をさせる。

  2. コンパクトな学習済みモデルを交差検証済みモデルの Trained プロパティに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: Holdout=0.1

データ型: double | single

交差検証済みモデルで使用する分割の数。1 より大きい正の整数値として指定します。KFold=k を指定した場合、以下の手順が実行されます。

  1. データを無作為に k 個のセットに分割する。

  2. 各セットについて、そのセットを検証データとして確保し、他の k – 1 個のセットを使用してモデルに学習をさせる。

  3. k 個のコンパクトな学習済みモデルを、交差検証済みモデルの Trained プロパティに含まれている k 行 1 列の cell ベクトルに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: KFold=5

データ型: single | double

LASSO の正則化パラメーターの値。非負のスカラー値のベクトルとして指定します。この引数の値が空の場合、cvshrink は交差検証を実行しません。

例: Lambda=[.01 .1 1]

データ型: single | double

Leave-one-out 法の交差検証のフラグ。"on" または "off" として指定します。Leaveout="on" を指定した場合、n 個の観測値 (n は、モデルの NumObservations プロパティで指定される、欠損観測値を除外した観測値の個数) のそれぞれについて以下の手順が実行されます。

  1. いずれかの観測値を検証データとして確保し、他の n - 1 個の観測値を使用してモデルに学習をさせる。

  2. n 個のコンパクトな学習済みモデルを、交差検証済みモデルの Trained プロパティに含まれている n 行 1 列の cell ベクトルに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: Leaveout="on"

データ型: char | string

重みのしきい値。弱学習器の重みに対する低域カットオフの数値ベクトルとして指定します。cvshrink は、交差検証の計算で Threshold より低い重みの学習器を破棄します。

例: Threshold=[0 .01 .1]

データ型: single | double

出力引数

すべて展開する

平均二乗誤差の交差検証値。LT 列の数値行列として返されます。L は正則化パラメーター Lambda の値の数、T は弱学習器の重みに対する Threshold の値の数です。

交差検証を使用したアンサンブル内の学習器の平均数。LT 列の数値行列として返されます。L は正則化パラメーター Lambda の値の数、T は弱学習器の重みに対する Threshold の値の数です。

すべて展開する

carsmall データから燃費を予測するためのアンサンブル回帰を作成します。アンサンブルの交差検証を実行します。

carsmall データ セットを読み込み、排気量、馬力および車両重量を予測子として選択します。

load carsmall
X = [Displacement Horsepower Weight];

バギング回帰木のアンサンブルに学習をさせることができます。

ens = fitrensemble(X,Y,Method="Bag")

'Method''Bag' である場合、fircensemble は既定の木テンプレート オブジェクト templateTree() を弱学習器として使用します。この例では、再現性を得るため、木テンプレート オブジェクトを作成するときに 'Reproducible',true を指定し、このオブジェクトを弱学習器として使用します。

rng('default') % For reproducibility
t = templateTree(Reproducible=true); % For reproducibiliy of random predictor selections
ens = fitrensemble(X,MPG,Method="Bag",Learners=t);

LambdaThreshold の値を指定します。これらの値を使用してアンサンブルの交差検証を実行します。

[vals,nlearn] = cvshrink(ens,Lambda=[.01 .1 1],Threshold=[0 .01 .1])
vals = 3×3

   18.9150   19.0092  128.5935
   18.9099   18.9504  128.8449
   19.0328   18.9636  116.8500

nlearn = 3×3

   13.7000   11.6000    4.1000
   13.7000   11.7000    4.1000
   13.9000   11.6000    4.1000

しきい値に 0.1 を設定すると、許容できないほどの誤差を示していますが、0.01 の場合には、0 を設定したときと同程度の誤差であることがわかります。しきい値が 0.01 の場合は学習器の平均個数が約 11.4 ですが、しきい値が 0 の場合は約 13.8 になります。

拡張機能

バージョン履歴

R2011a で導入