exponenta event banner

incrementalLearner

Преобразование линейной модели для двоичной классификации в инкрементную

Описание

пример

IncrementalMdl = incrementalLearner(Mdl) возвращает линейную модель двоичной классификации для инкрементного обучения, IncrementalMdl, используя гиперпараметры и коэффициенты традиционно обученной линейной модели для двоичной классификации, Mdl. Потому что его имущественные ценности отражают знания, полученные от Mdl, IncrementalMdl может прогнозировать метки с учетом новых наблюдений, и это тепло, что означает, что его прогностическая производительность отслеживается.

пример

IncrementalMdl = incrementalLearner(Mdl,Name,Value) использует дополнительные параметры, заданные одним или несколькими аргументами пары имя-значение. Некоторые варианты требуют обучения IncrementalMdl перед отслеживанием его прогностической эффективности. Например, 'MetricsWarmupPeriod',50,'MetricsWindowSize',100 определяет предварительный период инкрементного обучения из 50 наблюдений до отслеживания метрик производительности и определяет обработку 100 наблюдений перед обновлением метрик производительности.

Примеры

свернуть все

Обучение модели линейной классификации для двоичного обучения с помощью fitclinear, а затем преобразовать его в добавочного учащегося.

Загрузка и предварительная обработка данных

Загрузите набор данных о деятельности персонала.

load humanactivity

Для получения подробной информации о наборе данных введите Description в командной строке.

Ответы могут быть одним из пяти классов: Sitting, Standing, Walking, Running, или Dancing. Дихотомизировать ответ, определив, движется ли субъект (actid > 2).

Y = actid > 2;

Модель линейной классификации поездов

Поместите модель линейной классификации во весь набор данных.

TTMdl = fitclinear(feat,Y)
TTMdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'none'
              Beta: [60x1 double]
              Bias: -0.2005
            Lambda: 4.1537e-05
           Learner: 'svm'


  Properties, Methods

TTMdl является ClassificationLinear объект модели, представляющий традиционно обученную модель линейной классификации.

Преобразовать обученную модель

Преобразование традиционно обученной модели линейной классификации в линейную модель двоичной классификации для инкрементного обучения.

IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = 
  incrementalClassificationLinear

            IsWarm: 1
           Metrics: [1x2 table]
        ClassNames: [0 1]
    ScoreTransform: 'none'
              Beta: [60x1 double]
              Bias: -0.2005
           Learner: 'svm'


  Properties, Methods

IncrementalMdl является incrementalClassificationLinear объект модели, подготовленный для инкрементного обучения с использованием SVM.

  • incrementalLearner Инициализирует добавочного учащегося, передавая ему усвоенные коэффициенты вместе с другой информацией TTMdl извлекается из данных обучения.

  • IncrementalMdl теплый (IsWarm является 1), что означает, что инкрементные функции обучения могут начать отслеживать метрики производительности.

  • incrementalLearner функция обучает модель с помощью адаптивного инвариантного решателя масштаба, тогда как fitclinear обученный TTMdl с помощью решателя BFGS.

Прогнозирование ответов

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

Прогнозирование показателей классификации для всех наблюдений с использованием обеих моделей.

[~,ttscores] = predict(TTMdl,feat);
[~,ilscores] = predict(IncrementalMdl,feat);
compareScores = norm(ttscores(:,1) - ilscores(:,1))
compareScores = 0

Разница между оценками, сгенерированными моделями, равна 0.

При обучении модели линейной классификации с использованием решателя SGD или ASGD incrementalLearner сохраняет решатель, тип линейной модели и связанные значения гиперпараметров при преобразовании модели линейной классификации.

Загрузите набор данных о деятельности персонала.

load humanactivity

Для получения подробной информации о наборе данных введите Description в командной строке.

Отклики могут быть одним из пяти классов: Сидя, Стоя, Валинг, Бега или Танцы. Дихотомизировать ответ, определив, движется ли субъект (actid > 2).

Y = actid > 2;

Случайное разделение данных пополам: первая половина для обучения модели традиционно, и вторая половина для инкрементного обучения.

n = numel(Y);
rng(1) % For reproducibility
cvp = cvpartition(n,'Holdout',0.5);
idxtt = training(cvp);
idxil = test(cvp);

% First half of data 
Xtt = feat(idxtt,:);
Ytt = Y(idxtt);

% Second half of data
Xil = feat(idxil,:);
Yil = Y(idxil);

Создайте набор из 11 логарифмически разнесенных уровней регуляризации от 10-6 до 10-0,5.

Lambda = logspace(-6,-0.5,11);

Поскольку переменные находятся в разных масштабах, используйте неявное расширение для стандартизации данных предиктора.

Xtt = (Xtt - mean(Xtt))./std(Xtt);

Настройте параметр регуляризации L2, применив пятикратную перекрестную проверку. Укажите стандартный решатель SGD.

TTCVMdl = fitclinear(Xtt,Ytt,'KFold',5,'Learner','logistic',...
    'Solver','sgd','Lambda',Lambda);

TTCVMdl является ClassificationPartitionedLinear модель, представляющая пять моделей, созданных во время перекрестной проверки (см. TTCVMdl.Trained). Процедура перекрестной проверки включает обучение с каждым заданным значением регуляризации.

Вычислите кросс-проверенную ошибку классификации для каждой модели и регуляризации.

cvloss = kfoldLoss(TTCVMdl)
cvloss = 1×11

    0.0054    0.0039    0.0034    0.0033    0.0030    0.0027    0.0027    0.0031    0.0036    0.0056    0.0077

cvloss содержит потери классификации тестовой выборки для каждого значения регуляризации в Lamba.

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

[~,idxmin] = min(cvloss);
TTMdl = fitclinear(Xtt,Ytt,'Learner','logistic','Solver','sgd',...
    'Lambda',Lambda(idxmin));

TTMdl является ClassificationLinear модель.

Преобразование традиционно обученной модели линейной классификации в линейную модель двоичной классификации для инкрементного обучения. Укажите стандартный решатель SGD. Подготовьте инкрементные обучающие функции для стандартизации предикторов. Это действие требует начального периода для оценки предикторных средств и стандартных отклонений. Укажите период оценки 2000 наблюдения (по умолчанию 1000 когда требуются предикторные моменты).

IncrementalMdl = incrementalLearner(TTMdl,'Standardize',true,'EstimationPeriod',2000);

IncrementalMdl является incrementalClassificationLinear объект модели. incrementalLearner передает решатель и силу регуляризации, среди прочего, информацию, извлеченную из обучения TTMdlКому IncrementalMdl.

Поместите инкрементную модель во вторую половину данных с помощью fit функция. При каждой итерации:

  • Моделирование потока данных путем одновременной обработки 10 наблюдений.

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

  • Сохраните β1, чтобы увидеть, как он развивается во время обучения.

% Preallocation
nil = numel(Yil);
numObsPerChunk = 10;
nchunk = floor(nil/numObsPerChunk);
learnrate = [IncrementalMdl.LearnRate; zeros(nchunk,1)];
beta1 = [IncrementalMdl.Beta(1); zeros(nchunk,1)];

% Incremental fitting
for j = 1:nchunk
    ibegin = min(nil,numObsPerChunk*(j-1) + 1);
    iend   = min(nil,numObsPerChunk*j);
    idx = ibegin:iend;
    IncrementalMdl = fit(IncrementalMdl,Xil(idx,:),Yil(idx));
    beta1(j + 1) = IncrementalMdl.Beta(1);
end

IncrementalMdl является incrementalClassificationLinear объект модели обучен всем данным в потоке.

Постройте график β1, чтобы увидеть, как он развивался.

plot(beta1)
ylabel('\beta_1') 
xline(IncrementalMdl.EstimationPeriod/numObsPerChunk,'r-.');
xlabel('Iteration')

Figure contains an axes. The axes contains 2 objects of type line, constantline.

Поскольку fit не соответствует модели потоковым данным в течение периода оценки, β1 является постоянной для первых 200 итераций (2000 наблюдений). Затем β1 резко изменяется во время инкрементного фитинга.

Используйте обученную модель линейной классификации для инициализации добавочного ученика. Подготовьте дополнительного учащегося, указав период прогрева метрик, в течение которого updateMetricsAndFit функция подходит только для модели. Укажите размер окна метрик, равный 500 наблюдениям.

Загрузите набор данных о деятельности персонала.

load humanactivity

Для получения подробной информации о наборе данных введите Description в командной строке.

Отклики могут быть одним из пяти классов: Сидя, стоя, Ходьба, Бега и Танцы. Дихотомизировать ответ, определив, движется ли субъект (actid > 2).

Y = actid > 2;

Поскольку набор данных сгруппирован по операциям, тасуйте его для простоты. Затем случайным образом разделить данные пополам: первая половина для обучения модели традиционно, а вторая половина для инкрементного обучения.

n = numel(Y);

rng(1) % For reproducibility
cvp = cvpartition(n,'Holdout',0.5);
idxtt = training(cvp);
idxil = test(cvp);
shuffidx = randperm(n);
X = feat(shuffidx,:);
Y = Y(shuffidx);

% First half of data
Xtt = X(idxtt,:);
Ytt = Y(idxtt);

% Second half of data
Xil = X(idxil,:);
Yil = Y(idxil);

Подгонка модели линейной классификации к первой половине данных.

TTMdl = fitclinear(Xtt,Ytt);

Преобразование традиционно обученной модели линейной классификации в линейную модель двоичной классификации для инкрементного обучения. Укажите следующее:

  • Период прогрева показателей производительности, состоящий из 2000 наблюдений

  • Размер окна метрик 500 наблюдений

  • Использование ошибки классификации и потери шарнира для измерения производительности модели

IncrementalMdl = incrementalLearner(TTMdl,'MetricsWarmupPeriod',2000,'MetricsWindowSize',500,...
    'Metrics',["classiferror" "hinge"]);

Поместите инкрементную модель во вторую половину данных с помощью updateMetricsAndFit функция. При каждой итерации:

  • Моделирование потока данных, который обрабатывает порцию из 20 наблюдений.

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

  • Сохраните β1, кумулятивные метрики и оконные метрики, чтобы увидеть, как они развиваются во время инкрементного обучения.

% Preallocation
nil = numel(Yil);
numObsPerChunk = 20;
nchunk = ceil(nil/numObsPerChunk);
ce = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]);
hinge = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]);
beta1 = zeros(nchunk,1);    

% Incremental fitting
for j = 1:nchunk
    ibegin = min(nil,numObsPerChunk*(j-1) + 1);
    iend   = min(nil,numObsPerChunk*j);
    idx = ibegin:iend;    
    IncrementalMdl = updateMetricsAndFit(IncrementalMdl,Xil(idx,:),Yil(idx));
    ce{j,:} = IncrementalMdl.Metrics{"ClassificationError",:};
    hinge{j,:} = IncrementalMdl.Metrics{"HingeLoss",:};
    beta1(j + 1) = IncrementalMdl.Beta(1);
end

IncrementalMdl является incrementalClassificationLinear модель обучена всем данным в потоке. Во время инкрементного обучения и после разогрева модели updateMetricsAndFit проверяет производительность модели на входящем наблюдении, а затем подгоняет модель под это наблюдение.

Чтобы увидеть, как метрики производительности и β1 развивались во время обучения, постройте их график на отдельных вложенных графиках.

figure;
subplot(3,1,1)
plot(beta1)
ylabel('\beta_1')
xlim([0 nchunk]);
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
subplot(3,1,2)
h = plot(ce.Variables);
xlim([0 nchunk]);
ylabel('Classification Error')
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
legend(h,ce.Properties.VariableNames,'Location','northwest')
subplot(3,1,3)
h = plot(hinge.Variables);
xlim([0 nchunk]);
ylabel('Hinge Loss')
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
legend(h,hinge.Properties.VariableNames,'Location','northwest')
xlabel('Iteration')

Figure contains 3 axes. Axes 1 contains 2 objects of type line, constantline. Axes 2 contains 3 objects of type line, constantline. These objects represent Cumulative, Window. Axes 3 contains 3 objects of type line, constantline. These objects represent Cumulative, Window.

Сюжет говорит о том, что updateMetricsAndFit выполняет следующее:

  • Вписать β1 во все инкрементные итерации обучения.

  • Вычислите показатели производительности только после периода прогрева показателей.

  • Вычислите кумулятивные метрики во время каждой итерации.

  • Вычислите метрику окна после обработки 500 наблюдений (25 итераций).

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

свернуть все

Традиционно обученная линейная модель для двоичной классификации, указанная как ClassificationLinear объект модели, возвращенный fitclinear.

Примечание

  • Если Mdl.Lambda является числовым вектором, необходимо выбрать модель, соответствующую одной силе регуляции в пути регуляции, используя selectModels.

  • Инкрементные функции обучения поддерживают только числовые входные данные предиктора. Если Mdl подходил для категориальных данных, использование dummyvar преобразовать каждую категориальную переменную в числовую матрицу фиктивных переменных и объединить все фиктивные матрицы переменных и любые другие числовые предикторы. Дополнительные сведения см. в разделе Фиктивные переменные.

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

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

Пример: 'Solver','scale-invariant','MetricsWindowSize',100 задает адаптивный инвариантный по масштабу решатель для объективной оптимизации и определяет обработку 100 наблюдений перед обновлением метрик производительности.
Общие параметры

свернуть все

Метод минимизации целевой функции, указанный как пара, разделенная запятыми, состоящая из 'Solver' и значение в этой таблице.

СтоимостьОписаниеПримечания
'scale-invariant'

Адаптивный инвариантный решатель масштаба для инкрементного обучения [1]

  • Этот алгоритм не содержит параметров и может адаптироваться к различиям в шкалах предикторов. Попробуйте использовать этот алгоритм перед использованием SGD или ASGD.

  • Перетасовка входящих партий перед fit функция подходит для модели, набор Shuffle кому true.

'sgd'Стохастический градиентный спуск (SGD) [3][2]

  • Чтобы эффективно работать с SGD, стандартизируйте данные и укажите адекватные значения для гиперпараметров, используя опции, перечисленные в опциях решателя SGD и ASGD.

  • fit функция всегда тасует входящий пакет данных перед подгонкой модели.

'asgd'Средний стохастический градиентный спуск (ASGD) [4]

  • Чтобы эффективно работать с ASGD, стандартизируйте данные и укажите адекватные значения для гиперпараметров, используя опции, перечисленные в опциях решателя SGD и ASGD.

  • fit функция всегда тасует входящий пакет данных перед подгонкой модели.

Пример: 'Solver','sgd'

Типы данных: char | string

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

Примечание

  • Если Mdl подготовлен к инкрементному обучению (указаны все гиперпараметры, необходимые для обучения), incrementalLearner силы 'EstimationPeriod' кому 0.

  • Если Mdl не подготовлен к инкрементному обучению, incrementalLearner наборы 'EstimationPeriod' кому 1000.

Дополнительные сведения см. в разделе Период оценки.

Пример: 'EstimationPeriod',100

Типы данных: single | double

Флаг для стандартизации данных предиктора, указанный как пара, разделенная запятыми, состоящая из 'Standardize' и значение в этой таблице.

СтоимостьОписание
trueПрограммное обеспечение стандартизирует данные предиктора. Дополнительные сведения см. в разделе Стандартизация данных.
falseПрограммное обеспечение не стандартизирует данные предиктора.

Пример: 'Standardize',true

Типы данных: logical

Опции решателя SGD и ASGD

свернуть все

Размер мини-партии, указанный как разделенная запятыми пара, состоящая из 'BatchSize' и положительное целое число. При каждой итерации во время обучения, incrementalLearner использование min(BatchSize,numObs) наблюдения для вычисления подградуора, где numObs - количество наблюдений в данных обучения, переданных fit или updateMetricsAndFit.

  • Если Mdl.ModelParameters.Solver является 'sgd' или 'asgd', нельзя установить 'BatchSize'. Вместо этого incrementalLearner наборы 'BatchSize' кому Mdl.ModelParameters.BatchSize.

  • В противном случае BatchSize является 10.

Пример: 'BatchSize',1

Типы данных: single | double

Сила термина регуляризации гребня (L2), определяемая как разделенная запятыми пара, состоящая из 'Lambda' и неотрицательный скаляр.

Когда Mdl.Regularization является 'ridge (L2)':

  • Если Mdl.ModelParameters.Solver является 'sgd' или 'asgd', нельзя установить 'Lambda'. Вместо этого incrementalLearner наборы 'Lambda' кому Mdl.Lambda.

  • В противном случае Lambda является 1e-5.

Примечание

incrementalLearner не поддерживает регуляризацию лассо. Если Mdl.Regularization является 'lasso (L1)', incrementalLearner вместо этого использует регуляризацию гребня и устанавливает 'Solver' аргумент пары имя-значение для 'scale-invariant' по умолчанию.

Пример: 'Lambda',0.01

Типы данных: single | double

Скорость обучения, указанная как разделенная запятыми пара, состоящая из 'LearnRate' и 'auto' или положительный скаляр. LearnRate управляет размером шага оптимизации путем масштабирования целевого подградуира.

  • Если Mdl.ModelParameters.Solver является 'sgd' или 'asgd', нельзя установить 'LearnRate'. Вместо этого incrementalLearner наборы 'LearnRate' кому Mdl.ModelParameters.LearnRate.

  • В противном случае LearnRate является 'auto'.

Для 'auto':

  • Если EstimationPeriod является 0, начальная скорость обучения 0.7.

  • Если EstimationPeriod > 0, начальная скорость обучения 1/sqrt(1+max(sum(X.^2,obsDim))), где obsDim является 1 если наблюдения составляют столбцы данных предиктора, и 2 в противном случае. fit и updateMetricsAndFit задайте значение при передаче модели и данных обучения любой из функций.

Аргумент пары имя-значение 'LearnRateSchedule' определяет скорость обучения для последующих циклов обучения.

Пример: 'LearnRate',0.001

Типы данных: single | double | char | string

График скорости обучения, указанный как пара, разделенная запятыми, состоящая из 'LearnRateSchedule' и значение в этой таблице, где LearnRate определяет ɣ0 начальной скорости обучения.

СтоимостьОписание
'constant'Уровень обучения является ɣ0 для всех циклов обучения.
'decaying'

Скорость обучения в учебном цикле t составляет

γ t = γ 0 (1 + λ γ 0t) c.

  • λ - значение Lambda.

  • Если Solver является 'sgd', то c = 1.

  • Если Solver является 'asgd', то c равно 0,75 [4].

Если Mdl.ModelParameters.Solver является 'sgd' или 'asgd', нельзя установить 'LearnRateSchedule'.

Пример: 'LearnRateSchedule','constant'

Типы данных: char | string

Опции адаптивного масштабирования-инвариантного решателя

свернуть все

Флаг для тасования наблюдений в пакете на каждой итерации, указанный как разделенная запятыми пара, состоящая из 'Shuffle' и значение в этой таблице.

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

Пример: 'Shuffle',false

Типы данных: logical

Параметры показателей производительности

свернуть все

Моделирование показателей производительности для отслеживания во время инкрементного обучения с помощью updateMetrics или updateMetricsAndFit функция, заданная как имя встроенной функции потери, строковый вектор имен, дескриптор функции (@metricName), структурный массив дескрипторов функций или вектор ячеек имен, дескрипторов функций или структурных массивов.

В следующей таблице перечислены имена встроенных функций потери. С помощью вектора строки можно указать несколько.

ИмяОписание
"binodeviance"Биномиальное отклонение
"classiferror"Ошибка классификации
"exponential"Показательный
"hinge"Стержень
"logit"Логистический
"quadratic"Квадратный

Дополнительные сведения о встроенных функциях потери см. в разделе loss.

Пример: 'Metrics',["classiferror" "hinge"]

Чтобы указать пользовательскую функцию, возвращающую метрику производительности, используйте нотацию дескриптора функции. Функция должна иметь следующую форму:

metric = customMetric(C,S)

  • Выходной аргумент metric является n-на-1 числовым вектором, где каждый элемент является потерей соответствующего наблюдения в данных путем обработки инкрементных функций обучения в течение цикла обучения.

  • Указывается имя функции (customMetric).

  • C - логическая матрица n-by-2 со строками, указывающими класс, которому принадлежит соответствующее наблюдение. Порядок столбцов соответствует порядку классов в Mdl.ClassNames. Создать C путем установки C(p,q) = 1, если наблюдение p находится в классе q, для каждого наблюдения в указанных данных. Установка другого элемента в строке p кому 0.

  • S представляет собой n-на-2 числовую матрицу прогнозируемых показателей классификации. S аналогичен score вывод predict, где строки соответствуют наблюдениям в данных, а порядок столбцов соответствует порядку классов в Mdl.ClassNames. S(p,q) - классификационный балл наблюдения p классифицируется по классу q.

Чтобы указать несколько пользовательских метрик и назначить каждому пользовательское имя, используйте массив структуры. Чтобы задать комбинацию встроенных и пользовательских метрик, используйте вектор ячейки.

Пример: 'Metrics',struct('Metric1',@customMetric1,'Metric2',@customMetric2)

Пример: 'Metrics',{@customMetric1 @customeMetric2 'logit' struct('Metric3',@customMetric3)}

updateMetrics и updateMetricsAndFit сохранить указанные метрики в таблице в свойстве IncrementalMdl.Metrics. Тип данных Metrics определяет имена строк таблицы.

'Metrics' Тип данных значенияОписание Metrics Имя строки свойстваПример
Строковый или символьный векторНаименование соответствующей встроенной метрикиИмя строки для "classiferror" является "ClassificationError"
Структурный массивИмя поляИмя строки для struct('Metric1',@customMetric1) является "Metric1"
Дескриптор функции для функции, сохраненной в файле программыНаименование функцииИмя строки для @customMetric является "customMetric"
Анонимная функцияCustomMetric_j, где j является метрикой j в MetricsИмя строки для @(C,S)customMetric(C,S)... является CustomMetric_1

Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.

Типы данных: char | string | struct | cell | function_handle

Количество наблюдений, которым должна соответствовать инкрементная модель, прежде чем она будет отслеживать метрики производительности в своей Metrics свойство, указанное как пара, разделенная запятыми, состоящая из 'MetricsWarmupPeriod' и неотрицательное целое число. Инкрементная модель нагревается после подгонки инкрементных функций фитинга MetricsWarmupPeriod наблюдения за инкрементной моделью (EstimationPeriod + MetricsWarmupPeriod наблюдения).

Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.

Типы данных: single | double

Число наблюдений, используемых для вычисления метрик производительности окна, указанных как положительное целое число.

Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.

Типы данных: single | double

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

свернуть все

Линейная модель двоичной классификации для инкрементного обучения, возвращенная как incrementalClassificationLinear объект модели. IncrementalMdl также сконфигурирован для генерации прогнозов с учетом новых данных (см. predict).

Инициализировать IncrementalMdl для инкрементного обучения, incrementalLearner передает значения Mdl свойства в этой таблице к конгруэнтным свойствам IncrementalMdl.

СобственностьОписание
BetaКоэффициенты линейной модели, числовой вектор
BiasПерехват модели, числовой скаляр
ClassNamesМетки классов для двоичной классификации, двухэлементный список
ModelParameters.FitBiasФлаг включения пересечения линейной модели
LearnerТип модели линейной классификации
PriorРаспределение меток предыдущего класса, числовой вектор

Подробнее

свернуть все

Инкрементное обучение

Инкрементное обучение, или онлайн-обучение, - это ветвь машинного обучения, связанная с обработкой входящих данных из потока данных, возможно, без знания распределения переменных предиктора, аспектов предсказания или целевой функции (включая значения параметров настройки) или того, помечены ли наблюдения. Инкрементное обучение отличается от традиционного машинного обучения, когда достаточно помеченных данных доступно для соответствия модели, выполнения перекрестной проверки для настройки гиперпараметров и вывода распределения предиктора.

Учитывая поступающие наблюдения, модель инкрементного обучения обрабатывает данные любым из следующих способов, но обычно в таком порядке:

  • Прогнозировать метки.

  • Измерьте прогностическую производительность.

  • Проверьте наличие структурных разрывов или дрейфа в модели.

  • Подгоните модель к входящим наблюдениям.

Адаптивный решатель масштаба - инвариантный решатель для инкрементного обучения

Адаптивный инвариантный по масштабу решатель для инкрементного обучения, представленный в [1], представляет собой целевой решатель на основе градиентного спуска для обучения линейным прогностическим моделям. Решатель свободен от гиперпараметров, нечувствителен к различиям в шкалах переменных предиктора и не требует предварительного знания распределения переменных предиктора. Эти характеристики делают его хорошо подходящим для инкрементного обучения.

Стандартные решатели SGD и ASGD чувствительны к различным масштабам переменных предиктора, что приводит к моделям, которые могут работать плохо. Для достижения лучшей точности с использованием SGD и ASGD можно стандартизировать данные предиктора, а настройка параметров регуляризации и скорости обучения может потребовать настройки. Для традиционного машинного обучения доступно достаточно данных для настройки гиперпараметров путем перекрестной проверки и стандартизации предикторов. Однако для инкрементного обучения достаточное количество данных может быть недоступно (например, наблюдения могут быть доступны только по одному), и распределение предикторов может быть неизвестно. Эти характеристики делают настройку параметров и стандартизацию предиктора трудной или невозможной во время инкрементного обучения.

Инкрементные функции фитинга для классификации fit и updateMetricsAndFit использовать более агрессивную ScInOL2 версию алгоритма.

Алгоритмы

свернуть все

Период оценки

В течение периода оценки инкрементные фитинговые функции fit и updateMetricsAndFit использовать первый входящий EstimationPeriod наблюдения для оценки (настройки) гиперпараметров, необходимых для дополнительного обучения. В этой таблице описываются гиперпараметры и время их оценки или настройки.

ГиперпараметрСвойство моделиИспользоватьОценка гиперпараметров
Предикторные средства и стандартные отклонения

Mu и Sigma

Стандартизация данных предиктора

При установке 'Standardize',true (см. раздел Стандартизация данных)

Уровень обученияLearnRateНастройка размера шага решателя

Если применяются оба этих условия:

  • Вы изменяете решатель Mdl к SGD или ASGD (см. Solver).

  • Вы не устанавливаете 'LearnRate' аргумент пары имя-значение.

Функции соответствуют только последнему наблюдению периода оценки инкрементной модели, и они не используют ни одно из наблюдений для отслеживания производительности модели. В конце периода оценки функции обновляют свойства, хранящие гиперпараметры.

Стандартизация данных

Если инкрементные функции обучения сконфигурированы для стандартизации переменных предиктора, они делают это, используя средства и стандартные отклонения, сохраненные в Mu и Sigma свойства модели инкрементного обучения IncrementalMdl.

  • При установке 'Standardize',true, и IncrementalMdl.Mu и IncrementalMdl.Sigma пусты, применяются следующие условия:

    • Если период оценки положительный (см. EstimationPeriod имущество IncrementalMdl), средства оценки инкрементных функций подгонки и стандартные отклонения с использованием наблюдений периода оценки.

    • Если период оценки равен 0, incrementalLearner заставляет период оценки 1000. Следовательно, функции инкрементной подгонки оценивают новые предикторные переменные средства и стандартные отклонения в течение периода принудительной оценки.

  • Когда функции инкрементной подгонки оценивают предикторные средства и стандартные отклонения, функции вычисляют взвешенные средства и взвешенные стандартные отклонения, используя наблюдения периода оценки. В частности, функции стандартизируют предиктор j (xj), используя

    xj∗=xj−μj∗σj∗.

    где

    • xj - предиктор j, и xjk - наблюдение k предиктора j в периоде оценки.

    • μj∗=1∑kwk∗∑kwk∗xjk.

    • (σj∗) 2=1∑kwk∗∑kwk∗ (xjk−μj∗) 2.

    • wj∗=wj∑∀j∈Class kwjpk, где

      • pk - предшествующая вероятность класса k (Prior свойство инкрементной модели).

      • wj - наблюдаемый вес j.

Показатели производительности

  • updateMetrics и updateMetricsAndFit функции - это функции инкрементного обучения, отслеживающие метрики производительности модели ('Metrics') из новых данных, когда инкрементная модель является теплой (IsWarm свойство). Инкрементная модель нагревается после fit или updateMetricsAndFit вписать инкрементную модель в 'MetricsWarmupPeriod' наблюдения, которые являются периодом прогрева метрик.

    Если 'EstimationPeriod' > 0, функции оценивают гиперпараметры перед подгонкой модели к данным. Поэтому функции должны обрабатывать дополнительную EstimationPeriod наблюдения перед тем, как модель начнет период прогрева метрик.

  • Metrics свойство инкрементной модели хранит две формы каждой метрики производительности в качестве переменных (столбцов) таблицы, Cumulative и Window, с отдельными метриками в строках. Когда инкрементная модель является теплой, updateMetrics и updateMetricsAndFit обновить метрики на следующих частотах:

    • Cumulative - Функции вычисляют кумулятивные метрики с момента начала отслеживания производительности модели. Функции обновляют метрики при каждом вызове функций и основывают расчет на всем предоставленном наборе данных.

    • Window - Функции вычисляют метрики на основе всех наблюдений в пределах окна, определяемого 'MetricsWindowSize' аргумент пары имя-значение. 'MetricsWindowSize' также определяет частоту обновления программного обеспечения Window метрики. Например, если MetricsWindowSize 20, функции вычисляют метрики на основе последних 20 наблюдений в предоставленных данных (X((end – 20 + 1):end,:) и Y((end – 20 + 1):end)).

      Инкрементные функции, отслеживающие метрики производительности в пределах окна, используют следующий процесс:

      1. Для каждой заданной метрики сохраните буфер длиной MetricsWindowSize и буфер весов наблюдения.

      2. Заполните элементы буфера метрик производительностью модели на основе пакетов входящих наблюдений и сохраните соответствующие веса наблюдений в буфере весов.

      3. При заполнении буфера перезаписать IncrementalMdl.Metrics.Window со средневзвешенной производительностью в окне метрик. Если буфер переполнен, когда функция обрабатывает пакет наблюдений, последний входящий MetricsWindowSize наблюдения поступают в буфер, а самые ранние наблюдения удаляются из буфера. Например, предположим MetricsWindowSize равно 20, буфер метрик имеет 10 значений из ранее обработанного пакета, и 15 значений являются входящими. Для создания окна длины 20 используются измерения из 15 входящих наблюдений и 5 последних измерений из предыдущего пакета.

Ссылки

[1] Кемпка, Михал, Войцех Котловский и Манфред К. Вармут. «Адаптивный масштаб - инвариантные онлайн-алгоритмы для обучения линейным моделям». КоРР (февраль 2019). https://arxiv.org/abs/1902.07528.

[2] Лэнгфорд, Дж., Л. Ли и Т. Чжан. «Разреженное онлайн-обучение через усеченный градиент». Дж. Мач. Рес., т. 10, 2009, стр. 777-801.

[3] Шалев-Шварц, С., Я. Сингер и Н. Сребро. «Pegasos: Основной оценочный вычислитель субпогренов для SVM». Материалы 24-й Международной конференции по машинному обучению, ICML "07, 2007, стр. 807-814.

[4] Сюй, Вэй. «К оптимальному однопроходному крупномасштабному обучению со усредненным стохастическим градиентным спуском». CoRR, abs/1107.2490, 2011.

Представлен в R2020b