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.

Больше о

развернуть все