regularize

Найдите веса, чтобы минимизировать ошибку восстановления плюс срок штрафа

Синтаксис

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

Описание

ens1 = regularize(ens) находит оптимальные веса для учащихся в ens путем регуляризации лассо. regularize возвращает регрессионный ансамбль, идентичный ens, но с заполненным Regularization свойство.

ens1 = regularize(ens,Name,Value) вычисляет оптимальные веса с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар. Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,…,NameN,ValueN.

Входные параметры

ens

Регрессионный ансамбль, созданный fitrensemble.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

'lambda'

Вектор значений неотрицательных параметров регуляризации для лассо. Для настройки по умолчанию lambda, regularize вычисляет наименьшее значение lambda_max для которых все оптимальные веса для учащихся 0. Значение по умолчанию lambda - вектор, включающий 0 и девять чисел с пространственными интервалами от lambda_max/1000 на lambda_max.

По умолчанию: [0 logspace(log10(lambda_max/1000),log10(lambda_max),9)]

'MaxIter'

Максимально допустимое количество итераций, заданное как положительное целое число. Если алгоритм выполняется MaxIter итерации перед достижением допуска сходимости, затем функция останавливает итерацию и возвращает предупреждающее сообщение. Функция может вернуть несколько предупреждений при любом из них npass или количество lambda значения больше 1.

По умолчанию: 1e3

'npass'

Максимальное количество проходов для оптимизации лассо, положительное целое число.

По умолчанию: 10

'reltol'

Относительная погрешность на регуляризованные потери для лассо, числовой положительной скалярной величины.

По умолчанию: 1e-3

'verbose'

Уровень подробностей, либо 0 или 1. Когда установлено значение 1, regularize отображает больше информации во время ее выполнения.

По умолчанию: 0

Выходные аргументы

ens1

Регрессионный ансамбль. Обычно вы задаете ens1 на то же имя что и ens.

Примеры

расширить все

Упорядочить ансамбль мешанных деревьев.

Сгенерируйте выборочные данные.

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

fitrensemble использует древовидный объект шаблона по умолчанию templateTree() как слабый ученик, когда 'Method' является 'Bag'. В этом примере для воспроизводимости задайте '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.109923.
    Lasso minimization completed pass 1 for Lambda=0.001
        MSE = 0.086912
        Relative change in MSE = 0.264768
        Number of learners with non-zero weights = 15
    Lasso minimization completed pass 2 for Lambda=0.001
        MSE = 0.0670602
        Relative change in MSE = 0.296029
        Number of learners with non-zero weights = 34
    Lasso minimization completed pass 3 for Lambda=0.001
        MSE = 0.0623931
        Relative change in MSE = 0.0748019
        Number of learners with non-zero weights = 51
    Lasso minimization completed pass 4 for Lambda=0.001
        MSE = 0.0605444
        Relative change in MSE = 0.0305348
        Number of learners with non-zero weights = 70
    Lasso minimization completed pass 5 for Lambda=0.001
        MSE = 0.0599666
        Relative change in MSE = 0.00963517
        Number of learners with non-zero weights = 94
    Lasso minimization completed pass 6 for Lambda=0.001
        MSE = 0.0598835
        Relative change in MSE = 0.00138719
        Number of learners with non-zero weights = 105
    Lasso minimization completed pass 7 for Lambda=0.001
        MSE = 0.0598608
        Relative change in MSE = 0.000379227
        Number of learners with non-zero weights = 113
    Lasso minimization completed pass 8 for Lambda=0.001
        MSE = 0.0598586
        Relative change in MSE = 3.72856e-05
        Number of learners with non-zero weights = 115
    Lasso minimization completed pass 9 for Lambda=0.001
        MSE = 0.0598587
        Relative change in MSE = 6.42954e-07
        Number of learners with non-zero weights = 115
    Lasso minimization completed pass 10 for Lambda=0.001
        MSE = 0.0598587
        Relative change in MSE = 4.53658e-08
        Number of learners with non-zero weights = 115
    Completed lasso minimization for Lambda=0.001.
    Resubstitution MSE changed from 0.109923 to 0.0598587.
    Number of learners reduced from 300 to 115.
Starting lasso minimization for Lambda=0.1. Initial MSE=0.109923.
    Lasso minimization completed pass 1 for Lambda=0.1
        MSE = 0.104917
        Relative change in MSE = 0.0477191
        Number of learners with non-zero weights = 12
    Lasso minimization completed pass 2 for Lambda=0.1
        MSE = 0.0851031
        Relative change in MSE = 0.232821
        Number of learners with non-zero weights = 30
    Lasso minimization completed pass 3 for Lambda=0.1
        MSE = 0.081245
        Relative change in MSE = 0.0474877
        Number of learners with non-zero weights = 40
    Lasso minimization completed pass 4 for Lambda=0.1
        MSE = 0.0796749
        Relative change in MSE = 0.0197067
        Number of learners with non-zero weights = 53
    Lasso minimization completed pass 5 for Lambda=0.1
        MSE = 0.0788411
        Relative change in MSE = 0.0105746
        Number of learners with non-zero weights = 64
    Lasso minimization completed pass 6 for Lambda=0.1
        MSE = 0.0784959
        Relative change in MSE = 0.00439793
        Number of learners with non-zero weights = 81
    Lasso minimization completed pass 7 for Lambda=0.1
        MSE = 0.0784429
        Relative change in MSE = 0.000676468
        Number of learners with non-zero weights = 88
    Lasso minimization completed pass 8 for Lambda=0.1
        MSE = 0.078447
        Relative change in MSE = 5.24449e-05
        Number of learners with non-zero weights = 88
    Completed lasso minimization for Lambda=0.1.
    Resubstitution MSE changed from 0.109923 to 0.078447.
    Number of learners reduced from 300 to 88.

regularize доклады о достигнутом прогрессе.

Осмотрите полученную структуру регуляризации.

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

Проверяйте, сколько учащихся в регуляризованном ансамбле имеют положительные веса. Это учащиеся, входящие в усохший ансамбль.

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

   115    88

Сжимайте ансамбль, используя веса из Lambda = 0.1.

cmp = shrink(bag,'weightcolumn',2)
cmp = 
  CompactRegressionEnsemble
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
               NumTrained: 88


  Properties, Methods

Компактный ансамбль содержит 87 представителей, менее 1/3 от исходного 300.

Подробнее о

расширить все