exponenta event banner

incrementalLearner

Преобразование линейной регрессионной модели в инкрементную

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

Загрузите набор данных по жилью в Нью-Йорке за 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}];

Модель линейной регрессии поезда

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

TTMdl = fitrlinear(X,Y)
TTMdl = 
  RegressionLinear
         ResponseName: 'Y'
    ResponseTransform: 'none'
                 Beta: [312x1 double]
                 Bias: 0.0956
               Lambda: 1.0935e-05
              Learner: 'svm'


  Properties, Methods

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

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

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

IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = 
  incrementalRegressionLinear

               IsWarm: 1
              Metrics: [1x2 table]
    ResponseTransform: 'none'
                 Beta: [312x1 double]
                 Bias: 0.0956
              Learner: 'svm'


  Properties, Methods

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

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

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

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

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

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

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

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

Разница между подходящими значениями, генерируемыми моделями, равна 0.

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

Загрузка и перетасовка набора данных по жилью в Нью-Йорке 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);

Поместите модель линейной регрессии в 5% данных.

TTMdl = fitrlinear(Xtt,Ytt);

Преобразование традиционно обученной модели линейной регрессии в модель линейной регрессии для инкрементного обучения. Укажите стандартный решатель 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 итераций (20000 наблюдений). Затем β1 немного изменяется как fit подгоняет модель к каждому новому фрагменту из 10 наблюдений.

Используйте обученную модель линейной регрессии для инициализации добавочного ученика. Подготовьте дополнительного учащегося, указав период прогрева метрик, в течение которого 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);

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

TTMdl = fitrlinear(Xtt,Ytt);

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

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

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

  • Использование нечувствительных потерь эпсилона, MSE и средней абсолютной ошибки (MAE) для измерения производительности модели. Программное обеспечение поддерживает нечувствительные потери epsilon и 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 наблюдений.

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

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

% 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 проверяет производительность модели на входящем наблюдении, а затем подгоняет модель под это наблюдение.

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

figure;
subplot(2,2,1)
plot(beta1)
ylabel('\beta_1')
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 выполняет следующее:

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

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

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

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

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

свернуть все

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

Примечание

  • Если 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, указанная как пара, разделенная запятыми, состоящая из 'Metrics' и имя встроенной функции потери, строковый вектор имен, дескриптор функции (@metricName), структурный массив дескрипторов функций или вектор ячеек имен, дескрипторов функций или структурных массивов.

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

ИмяОписаниеУченики, поддерживающие метрику
"epsiloninsensitive"Эпсилоновая нечувствительная потеря'svm'
"mse"Средневзвешенная квадратичная ошибка'svm' и 'leastsquares'

Дополнительные сведения о встроенных функциях потери см. в разделе 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_j, где j является метрикой j в MetricsИмя строки для @(Y,YFit)customMetric(Y,YFit)... является CustomMetric_1

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

  • Metrics является "epsiloninsensitive" если Mdl.Learner является 'svm'.

  • Metrics является "mse" если Mdl.Learner является 'leastsquares'.

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

Типы данных: 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Половина ширины нечувствительной полосы эпсилона, неотрицательный скаляр
LearnerТип модели линейной регрессии
ModelParameters.FitBiasФлаг включения пересечения линейной модели
MuПредикторная переменная означает числовой вектор
SigmaПредикторные переменные стандартные отклонения, числовой вектор

Подробнее

свернуть все

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

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

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

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

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

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

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

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

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

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

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

Алгоритмы

свернуть все

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

В течение периода оценки инкрементные фитинговые функции 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∑kwkxjk.

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

    • 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