incrementalLearner

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

Описание

пример

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

пример

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

Примеры

свернуть все

Обучите регрессионую модель SVM при помощи fitrsvm, а затем преобразуйте его в пошагового ученика.

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

Загрузите набор данных по корпусу NYC 2015 года. Для получения дополнительной информации о данных смотрите Открытые данные NYC.

load NYCHousing2015

Извлеките переменную отклика SALEPRICE со таблицы. Для числовой устойчивости шкалы SALEPRICE по 1e6.

Y = NYCHousing2015.SALEPRICE/1e6;
NYCHousing2015.SALEPRICE = [];

Создайте фиктивные матрицы из категориальных предикторов.

catvars = ["BOROUGH" "BUILDINGCLASSCATEGORY" "NEIGHBORHOOD"];
dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015,...
    'InputVariables',catvars);
dumvarmat = table2array(dumvarstbl);
NYCHousing2015(:,catvars) = [];

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

idxnum = varfun(@isnumeric,NYCHousing2015,'OutputFormat','uniform');
X = [dumvarmat NYCHousing2015{:,idxnum}];

Обучите регрессионую модель SVM

Подгонка регрессионной модели SVM к 5000 случайным образом нарисованных наблюдений из набора данных. Отбросьте поддерживающие векторы (Alpha) из модели так, чтобы программное обеспечение использовало линейные коэффициенты (Beta) для предсказания.

N = numel(Y);
n = 5000;
rng(1); % For reproducibility
idx = randsample(N,n);

TTMdl = fitrsvm(X(idx,:),Y(idx));
TTMdl = discardSupportVectors(TTMdl)
TTMdl = 
  RegressionSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
                     Beta: [312x1 double]
                     Bias: -3.2469e+11
         KernelParameters: [1x1 struct]
          NumObservations: 5000
           BoxConstraints: [5000x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [5000x1 logical]
                   Solver: 'SMO'


  Properties, Methods

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

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

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

IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = 
  incrementalRegressionLinear

               IsWarm: 1
              Metrics: [1x2 table]
    ResponseTransform: 'none'
                 Beta: [312x1 double]
                 Bias: -3.2469e+11
              Learner: 'svm'


  Properties, Methods

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

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

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

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

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

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

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

ttyfit = predict(TTMdl,X);
ilyfit = predict(IncrementalMdl,X);
compareyfit = norm(ttyfit - ilyfit)
compareyfit = 0

Различие между подобранными значениями, сгенерированными моделями, равняется 0.

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

Загрузите и перетащите набор данных о корпусе NYC 2015 года. Для получения дополнительной информации о данных смотрите Открытые данные NYC.

load NYCHousing2015

rng(1) % For reproducibility
n = size(NYCHousing2015,1);
shuffidx = randsample(n,n);
NYCHousing2015 = NYCHousing2015(shuffidx,:);

Извлеките переменную отклика SALEPRICE со таблицы. Для числовой устойчивости шкалы SALEPRICE по 1e6.

Y = NYCHousing2015.SALEPRICE/1e6;
NYCHousing2015.SALEPRICE = [];

Создайте фиктивные матрицы из категориальных предикторов.

catvars = ["BOROUGH" "BUILDINGCLASSCATEGORY" "NEIGHBORHOOD"];
dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015,...
    'InputVariables',catvars);
dumvarmat = table2array(dumvarstbl);
NYCHousing2015(:,catvars) = [];

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

idxnum = varfun(@isnumeric,NYCHousing2015,'OutputFormat','uniform');
X = [dumvarmat NYCHousing2015{:,idxnum}];

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

cvp = cvpartition(n,'Holdout',0.95);
idxtt = training(cvp);
idxil = test(cvp);

% 5% set for traditional training 
Xtt = X(idxtt,:);
Ytt = Y(idxtt);

% 95% set for incremental learning
Xil = X(idxil,:);
Yil = Y(idxil);

Подбор регрессионной модели SVM к 5% данных.

TTMdl = fitrsvm(Xtt,Ytt);

Преобразуйте традиционно обученную регрессионую модель SVM в линейную регрессионую модель для инкрементного обучения. Задайте стандартный решатель SGD и период оценки 2e4 наблюдения (по умолчанию это 1000 когда требуется скорость обучения).

IncrementalMdl = incrementalLearner(TTMdl,'Solver','sgd','EstimationPeriod',2e4);

IncrementalMdl является incrementalRegressionLinear объект модели.

Подгонка инкрементной модели к остальной части данных с помощью 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);
    learnrate(j + 1) = IncrementalMdl.LearnRate;
end

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

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

subplot(2,1,1)
plot(beta1)
hold on
ylabel('\beta_1')
xline(IncrementalMdl.EstimationPeriod/numObsPerChunk,'r-.');
subplot(2,1,2)
plot(learnrate)
ylabel('Learning Rate')
xline(IncrementalMdl.EstimationPeriod/numObsPerChunk,'r-.');
xlabel('Iteration')

Figure contains 2 axes. Axes 1 contains 2 objects of type line, constantline. Axes 2 contains 2 objects of type line, constantline.

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

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

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

Загрузите набор данных руки робота.

load robotarm

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

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

n = numel(ytrain);

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

% 5% set for traditional training
Xtt = Xtrain(idxtt,:);
Ytt = ytrain(idxtt);

% 95% set for incremental learning
Xil = Xtrain(idxil,:);
Yil = ytrain(idxil);

Подбор регрессионной модели SVM к первому набору.

TTMdl = fitrsvm(Xtt,Ytt);

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

  • Период прогрева показателей эффективности 2000 наблюдений.

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

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

maefcn = @(z,zfit)abs(z - zfit);
maemetric = struct("MeanAbsoluteError",maefcn);
IncrementalMdl = incrementalLearner(TTMdl,'MetricsWarmupPeriod',2000,'MetricsWindowSize',500,...
    'Metrics',{'epsiloninsensitive' 'mse' maemetric});

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

  • Симулируйте поток данных путем обработки 50 наблюдений за раз.

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

  • Сохраните оцененный коэффициент β10, совокупные метрики и метрики окна, чтобы увидеть, как они развиваются во время инкрементного обучения.

% Preallocation
nil = numel(Yil);
numObsPerChunk = 50;
nchunk = floor(nil/numObsPerChunk);
ei = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]);
mse = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]);
mae = 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));
    ei{j,:} = IncrementalMdl.Metrics{"EpsilonInsensitiveLoss",:};
    mse{j,:} = IncrementalMdl.Metrics{"MeanSquaredError",:};
    mae{j,:} = IncrementalMdl.Metrics{"MeanAbsoluteError",:};
    beta1(j + 1) = IncrementalMdl.Beta(10);
end

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

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

figure;
subplot(2,2,1)
plot(beta1)
ylabel('\beta_{10}')
xlim([0 nchunk]);
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
xlabel('Iteration')
subplot(2,2,2)
h = plot(ei.Variables);
xlim([0 nchunk]);
ylabel('Epsilon Insensitive Loss')
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
legend(h,ei.Properties.VariableNames)
xlabel('Iteration')
subplot(2,2,3)
h = plot(mse.Variables);
xlim([0 nchunk]);
ylabel('MSE')
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
legend(h,mse.Properties.VariableNames)
xlabel('Iteration')
subplot(2,2,4)
h = plot(mae.Variables);
xlim([0 nchunk]);
ylabel('MAE')
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
legend(h,mae.Properties.VariableNames)
xlabel('Iteration')

Figure contains 4 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. Axes 4 contains 3 objects of type line, constantline. These objects represent Cumulative, Window.

График предполагает, что updateMetricsAndFit делает следующее:

  • Подгонка β10 во время всех итераций инкрементного обучения.

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

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

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

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

свернуть все

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

Объект моделиФункция обучения или обработки
RegressionSVMfitrsvm
CompactRegressionSVMfitrsvm или compact

Примечание

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

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

Задайте необязательные разделенные разделенными запятой парами 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 Solver Options.

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

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

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

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

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

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

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

Примечание

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

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

Для получения дополнительной информации смотрите Период оценки.

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

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

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

ЗначениеОписание
'auto'incrementalLearner определяет, нужно ли стандартизировать переменные предиктора. См. Раздел «Стандартизация данных»
trueПрограммное обеспечение стандартизирует данные предиктора.
falseПрограммное обеспечение не стандартизирует данные предиктора.

При некоторых условиях, incrementalLearner может переопределить спецификацию. Для получения дополнительной информации см. раздел Стандартизация данных.

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

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

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

свернуть все

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

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

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

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

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

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

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

Для '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].

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

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

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

свернуть все

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

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

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

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

Опции метрики эффективности

свернуть все

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

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

ИмяОписание
"epsiloninsensitive"Эпсилоновые нечувствительные потери
"mse"Средневзвешенная квадратичная невязка

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

Пример: 'Metrics',["epsiloninsensitive" "mse"]

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

metric = customMetric(Y,YFit)

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

  • Вы выбираете имя функции (customMetric).

  • Y является длинным n числовым вектором наблюдаемых откликов, где n - размер выборки.

  • YFit является длинным n числовым вектором соответствующих предсказанных откликов.

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

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

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

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

'Metrics' Тип данных значенияОписание Metrics Имя строки свойстваПример
Строка или вектор символовИмя соответствующей встроенной метрикиИмя строки для "epsiloninsensitive" является "EpsilonInsensitiveLoss"
Массив структурИмя поляИмя строки для struct('Metric1',@customMetric1) является "Metric1"
Указатель на функцию для функции, сохраненной в программном файлеИмя функцииИмя строки для @customMetric является "customMetric"
Анонимная функцияCustomMetric_<reservedrangesplaceholder0 >, где j метрический j в MetricsИмя строки для @(Y,YFit)customMetric(Y,YFit)... является CustomMetric_1

Для получения дополнительной информации о опциях показателей эффективности см. Раздел «Показатели эффективности».

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

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

Для получения дополнительной информации о опциях показателей эффективности см. Раздел «Показатели эффективности».

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

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

Для получения дополнительной информации о опциях показателей эффективности см. Раздел «Показатели эффективности».

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

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

свернуть все

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

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

СвойствоОписание
BetaЛинейные коэффициенты модели, числовой вектор
BiasМодель точки пересечения, числовой скаляр
EpsilonПоловина ширины эпсилоновой нечувствительной полосы, неотрицательный скаляр
MuПеременная предиктора означает, числовой вектор
SigmaСтандартные отклонения переменной предиктора, числовой вектор

Подробнее о

свернуть все

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

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

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

  • Спрогнозируйте метки.

  • Измерьте прогнозирующую эффективность.

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

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

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

Этот adaptive scale-invariant solver for incremental learning, введенный в [1], является основанным на градиенте-спуске целевым решателем для настройки линейных прогнозирующих моделей. Решатель свободен от гиперпараметра, нечувствителен к различиям в шкалах переменных предиктора и не требует предварительного знания распределения переменных предиктора. Эти характеристики делают его хорошо подходящим для инкрементного обучения.

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

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

Алгоритмы

свернуть все

Расчетный период

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

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

Mu и Sigma

Стандартизируйте данные предиктора

Когда оба эти условия применяются:

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

Когда оба из этих условий применяются:

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

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

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

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

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

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

    • incrementalLearner передает средство в Mdl.Mu и стандартные отклонения в Mdl.Sigma к конгруэнтным свойствам инкрементальной модели обучения.

    • Инкрементные функции обучения всегда стандартизируют данные предиктора, независимо от значения 'Standardize' аргумент пары "имя-значение".

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

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

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

  • Если вы задаете 'Standardize','auto' (по умолчанию) применяются следующие условия.

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

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

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

    xj=xjμjσj.

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

    • μj=1kwkkwkxjk.

    • (σj)2=1kwkkwk(xjkμj)2.

    • wj - j веса наблюдения.

Метрики эффективности

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

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

  • The 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] Кемпка, Михал, Войцех Котловский и Манфред К. Вармут. Адаптивные онлайновые алгоритмы масштабирования-инвариантные для обучения линейным моделям. CoRR (февраль 2019). https://arxiv.org/abs/1902.07528.

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

[3] Шалев-Шварц, С., Я. Сингер, и Н. Сребру. Pegasos: Primal Estimated Sub-Gradient Solver for SVM (неопр.) (недоступная ссылка). Материалы 24-й Международной конференции по машинному обучению, ICML "07, 2007, стр. 807-814.

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

Введенный в R2020b