упорядочить

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

Синтаксис

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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.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

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

Больше о

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