ドキュメンテーション

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

regularize

再代入誤差とペナルティー項を最小限にするための重み検索

構文

ens1 = regularize(ens)
ens1 = regularize(ens,Name,Value)

説明

ens1 = regularize(ens) は LASSO 正則化によって ens の学習器の最適な重みを求めます。regularizeens と同じアンサンブル回帰を返しますが、Regularization プロパティが埋め込まれています。

ens1 = regularize(ens,Name,Value) では、1 つまたは複数の Name,Value のペア引数で指定された追加オプションを使用して、最適な重みを計算します。Name1,Value1,…,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

入力引数

ens

関数 fitrensemble で作成されたアンサンブル回帰。

名前と値のペアの引数

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

'lambda'

LASSO に指定する非負の正則化パラメーター値のベクトル。lambda の既定の設定を使用した場合、regularize は、学習器のすべての最適な重みが 0 となる最小値 lambda_max を計算します。lambda の既定値は、0 および lambda_max/1000 から lambda_max までの 9 のべき乗数を含むベクトルです。

既定値: [0 logspace(log10(lambda_max/1000),log10(lambda_max),9)]

'MaxIter'

許容される最大反復回数。正の整数を指定します。収束許容誤差に達する前に MaxIter 回実行が反復された場合、反復が停止され、警告メッセージが返されます。lambda の値の個数または npass が 1 より大きい場合、複数の警告が返される可能性があります。

既定値: 1e3

'npass'

LASSO 最適化のパスの最大数で、正の整数。

既定値: 10

'reltol'

LASSO の正則化された損失の相対許容誤差、正の数値スカラー。

既定値: 1e-3

'verbose'

0 または 1 の詳細レベル。1 に設定した場合、regularize の実行時に追加情報が表示されます。

既定値: 0

出力引数

ens1

アンサンブル回帰。通常、ens1ens と同じ名前に設定します。

すべて展開する

バギングされた木のアンサンブルを正則化します。

標本データを生成します。

rng(10,'twister') % For reproducibility
X = rand(2000,20);
Y = repmat(-1,2000,1);
Y(sum(X(:,1:5),2)>2.5) = 1;

300 本の木によるバギングされたアンサンブル分類を標本データから作成できます。

bag = fitrensemble(X,Y,'Method','Bag','NumLearningCycles',300);

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

t = templateTree('Reproducible',true); % For reproducibiliy of random predictor selections
bag = fitrensemble(X,Y,'Method','Bag','NumLearningCycles',300,'Learners',t);

バギングされた回帰木のアンサンブルを正則化します。

bag = regularize(bag,'lambda',[0.001 0.1],'verbose',1);
Starting lasso minimization for Lambda=0.001. Initial MSE=0.110607.
    Lasso minimization completed pass 1 for Lambda=0.001
        MSE = 0.0899652
        Relative change in MSE = 0.229442
        Number of learners with non-zero weights = 12
    Lasso minimization completed pass 2 for Lambda=0.001
        MSE = 0.064488
        Relative change in MSE = 0.39507
        Number of learners with non-zero weights = 43
    Lasso minimization completed pass 3 for Lambda=0.001
        MSE = 0.0608422
        Relative change in MSE = 0.0599211
        Number of learners with non-zero weights = 64
    Lasso minimization completed pass 4 for Lambda=0.001
        MSE = 0.060069
        Relative change in MSE = 0.0128723
        Number of learners with non-zero weights = 82
    Lasso minimization completed pass 5 for Lambda=0.001
        MSE = 0.0599398
        Relative change in MSE = 0.00215497
        Number of learners with non-zero weights = 96
    Lasso minimization completed pass 6 for Lambda=0.001
        MSE = 0.0599369
        Relative change in MSE = 4.80374e-05
        Number of learners with non-zero weights = 109
    Lasso minimization completed pass 7 for Lambda=0.001
        MSE = 0.0599364
        Relative change in MSE = 9.35973e-06
        Number of learners with non-zero weights = 113
    Lasso minimization completed pass 8 for Lambda=0.001
        MSE = 0.0599364
        Relative change in MSE = 1.99253e-08
        Number of learners with non-zero weights = 114
    Lasso minimization completed pass 9 for Lambda=0.001
        MSE = 0.0599364
        Relative change in MSE = 5.04823e-08
        Number of learners with non-zero weights = 113
    Completed lasso minimization for Lambda=0.001.
    Resubstitution MSE changed from 0.110607 to 0.0599364.
    Number of learners reduced from 300 to 113.
Starting lasso minimization for Lambda=0.1. Initial MSE=0.110607.
    Lasso minimization completed pass 1 for Lambda=0.1
        MSE = 0.113013
        Relative change in MSE = 0.0212927
        Number of learners with non-zero weights = 10
    Lasso minimization completed pass 2 for Lambda=0.1
        MSE = 0.086583
        Relative change in MSE = 0.30526
        Number of learners with non-zero weights = 27
    Lasso minimization completed pass 3 for Lambda=0.1
        MSE = 0.080426
        Relative change in MSE = 0.0765551
        Number of learners with non-zero weights = 42
    Lasso minimization completed pass 4 for Lambda=0.1
        MSE = 0.0795375
        Relative change in MSE = 0.0111715
        Number of learners with non-zero weights = 57
    Lasso minimization completed pass 5 for Lambda=0.1
        MSE = 0.0792383
        Relative change in MSE = 0.00377496
        Number of learners with non-zero weights = 67
    Lasso minimization completed pass 6 for Lambda=0.1
        MSE = 0.0786905
        Relative change in MSE = 0.00696198
        Number of learners with non-zero weights = 75
    Lasso minimization completed pass 7 for Lambda=0.1
        MSE = 0.0787969
        Relative change in MSE = 0.00134974
        Number of learners with non-zero weights = 77
    Lasso minimization completed pass 8 for Lambda=0.1
        MSE = 0.0788049
        Relative change in MSE = 0.00010252
        Number of learners with non-zero weights = 87
    Lasso minimization completed pass 9 for Lambda=0.1
        MSE = 0.0788065
        Relative change in MSE = 1.98213e-05
        Number of learners with non-zero weights = 87
    Completed lasso minimization for Lambda=0.1.
    Resubstitution MSE changed from 0.110607 to 0.0788065.
    Number of learners reduced from 300 to 87.

regularize では、進捗が報告されます。

生成された正則化の構造体を調べます。

bag.Regularization
ans = struct with fields:
               Method: 'Lasso'
       TrainedWeights: [300x2 double]
               Lambda: [1.0000e-03 0.1000]
    ResubstitutionMSE: [0.0599 0.0788]
       CombineWeights: @classreg.learning.combiner.WeightedSum

正則化されたアンサンブル内に重みが正である学習器がいくつあるかを調べます。これらは、縮小されたアンサンブルに含まれている学習器です。

sum(bag.Regularization.TrainedWeights > 0)
ans = 1×2

   113    87

Lambda = 0.1 による重みを使用してアンサンブルを縮小します。

cmp = shrink(bag,'weightcolumn',2)
cmp = 
  classreg.learning.regr.CompactRegressionEnsemble
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
               NumTrained: 87


  Properties, Methods

コンパクトなアンサンブルには、元の 300 個の 1/3 より少ない 87 個のメンバーが含まれています。

詳細

すべて展開する