Преобразование линейной регрессионной модели в инкрементную
возвращает модель линейной регрессии для инкрементного обучения, 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 наблюдений.
Перезаписать предыдущую инкрементную модель новой, установленной для входящего наблюдения.
Сохраните скорость обучения и , чтобы увидеть, как коэффициенты и скорость обучения развиваются во время обучения.
% 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 объект модели обучен всем данным в потоке.
Чтобы увидеть, как скорость обучения и развивались во время обучения, постройте их на отдельных субплотах.
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')

Скорость обучения переходит к его автоматически настроенному значению после периода оценки.
Поскольку fit не соответствует модели потоковым данным в течение периода оценки, является постоянной для первых 2000 итераций (20000 наблюдений). Затем немного изменяется как 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 наблюдений.
Перезаписать предыдущую инкрементную модель новой, установленной для входящего наблюдения.
Сохраните , кумулятивные метрики и оконные метрики, чтобы увидеть, как они развиваются во время инкрементного обучения.
% 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 проверяет производительность модели на входящем наблюдении, а затем подгоняет модель под это наблюдение.
Чтобы увидеть, как метрики производительности и развивались во время обучения, постройте их график на отдельных вложенных графиках.
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')

Сюжет говорит о том, что updateMetricsAndFit выполняет следующее:
Вписать во все инкрементные итерации обучения.
Вычислять метрики производительности только после периода прогрева метрик.
Вычислите кумулятивные метрики во время каждой итерации.
Вычислите метрику окна после обработки 500 наблюдений.
Mdl - Традиционно обученная модель линейной регрессииRegressionLinear объект моделиТрадиционно обученная модель линейной регрессии, указанная как 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' (по умолчанию) | 'sgd' | 'asgd'Метод минимизации целевой функции, указанный как пара, разделенная запятыми, состоящая из 'Solver' и значение в этой таблице.
| Стоимость | Описание | Примечания |
|---|---|---|
'scale-invariant' | Адаптивный инвариантный решатель масштаба для инкрементного обучения [1] |
|
'sgd' | Стохастический градиентный спуск (SGD) [3][2] |
|
'asgd' | Средний стохастический градиентный спуск (ASGD) [4] |
|
Пример: 'Solver','sgd'
Типы данных: char | string
'EstimationPeriod' - Количество наблюдений, обработанных для оценки гиперпараметровКоличество наблюдений, обработанных инкрементной моделью для оценки гиперпараметров перед обучением или отслеживанием метрик производительности, указанных как пара, разделенная запятыми, состоящая из 'EstimationPeriod' и неотрицательное целое число.
Примечание
Если Mdl подготовлен к инкрементному обучению (указаны все гиперпараметры, необходимые для обучения), incrementalLearner силы 'EstimationPeriod' кому 0.
Если Mdl не подготовлен к инкрементному обучению, incrementalLearner наборы 'EstimationPeriod' кому 1000.
Дополнительные сведения см. в разделе Период оценки.
Пример: 'EstimationPeriod',100
Типы данных: single | double
'Standardize' - Флаг для стандартизации данных предиктораfalse (по умолчанию) | trueФлаг для стандартизации данных предиктора, указанный как пара, разделенная запятыми, состоящая из 'Standardize' и значение в этой таблице.
| Стоимость | Описание |
|---|---|
true | Программное обеспечение стандартизирует данные предиктора. Дополнительные сведения см. в разделе Стандартизация данных. |
false | Программное обеспечение не стандартизирует данные предиктора. |
Пример: 'Standardize',true
Типы данных: logical
'BatchSize' - Размер мини-партииРазмер мини-партии, указанный как разделенная запятыми пара, состоящая из '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
'Lambda' - Сила термина регуляризации гребня (L2)Сила термина регуляризации гребня (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' и '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' - График обучения'decaying' (по умолчанию) | 'constant'График скорости обучения, указанный как пара, разделенная запятыми, состоящая из 'LearnRateSchedule' и значение в этой таблице, где LearnRate определяет ɣ0 начальной скорости обучения.
| Стоимость | Описание |
|---|---|
'constant' | Уровень обучения является ɣ0 для всех циклов обучения. |
'decaying' | Скорость обучения в учебном цикле t составляет λ γ 0t) c.
|
Если Mdl.ModelParameters.Solver является 'sgd' или 'asgd', нельзя установить 'LearnRateSchedule'.
Пример: 'LearnRateSchedule','constant'
Типы данных: char | string
'Shuffle' - Флаг для тасования наблюдений в партииtrue (по умолчанию) | falseФлаг для тасования наблюдений в пакете на каждой итерации, указанный как разделенная запятыми пара, состоящая из 'Shuffle' и значение в этой таблице.
| Стоимость | Описание |
|---|---|
true | Программа выполняет тасование наблюдений в каждом входящем пакете данных перед обработкой аппарата. Это действие уменьшает смещение, вызванное схемой выборки. |
false | Программное обеспечение обрабатывает данные в полученном порядке. |
Пример: 'Shuffle',false
Типы данных: logical
'Metrics' - Модель показателей производительности для отслеживания во время инкрементного обучения"epsiloninsensitive" | "mse" | вектор строки | дескриптор функции | вектор ячейки | массив структуры |...Моделирование показателей производительности для отслеживания во время инкрементного обучения с помощью 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_, где является метрикой в Metrics | Имя строки для @(Y,YFit)customMetric(Y,YFit)... является CustomMetric_1 |
По умолчанию:
Metrics является "epsiloninsensitive" если Mdl.Learner является 'svm'.
Metrics является "mse" если Mdl.Learner является 'leastsquares'.
Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.
Типы данных: char | string | struct | cell | function_handle
'MetricsWarmupPeriod' - Количество наблюдений перед отслеживанием показателей производительности0 (по умолчанию) | неотрицательное целое число |...Количество наблюдений, которым должна соответствовать инкрементная модель, прежде чем она будет отслеживать метрики производительности в своей Metrics свойство, указанное как пара, разделенная запятыми, состоящая из 'MetricsWarmupPeriod' и неотрицательное целое число. Инкрементная модель нагревается после подгонки инкрементных функций фитинга MetricsWarmupPeriod наблюдения за инкрементной моделью (EstimationPeriod + MetricsWarmupPeriod наблюдения).
Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.
Типы данных: single | double
'MetricsWindowSize' - Количество наблюдений, используемых для вычисления показателей производительности окна200 (по умолчанию) | положительное целое число |...Число наблюдений, используемых для вычисления метрик производительности окна, указанных как положительное целое число.
Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.
Типы данных: single | double
IncrementalMdl - Модель линейной регрессии для инкрементного обученияincrementalRegressionLinear объект моделиМодель линейной регрессии для инкрементного обучения, возвращенная как 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 наблюдения для оценки (настройки) гиперпараметров, необходимых для дополнительного обучения. В этой таблице описываются гиперпараметры и время их оценки или настройки.
| Гиперпараметр | Свойство модели | Использовать | Оценка гиперпараметров |
|---|---|---|---|
| Предикторные средства и стандартные отклонения |
| Стандартизация данных предиктора | При установке |
| Уровень обучения | LearnRate | Настройка размера шага решателя | Если применяются оба этих условия:
|
Функции соответствуют только последнему наблюдению периода оценки инкрементной модели, и они не используют ни одно из наблюдений для отслеживания производительности модели. В конце периода оценки функции обновляют свойства, хранящие гиперпараметры.
Если инкрементные функции обучения сконфигурированы для стандартизации переменных предиктора, они делают это, используя средства и стандартные отклонения, сохраненные в Mu и Sigma свойства модели инкрементного обучения IncrementalMdl.
При установке 'Standardize',true, и IncrementalMdl.Mu и IncrementalMdl.Sigma пусты, применяются следующие условия:
Если период оценки положительный (см. EstimationPeriod имущество IncrementalMdl), средства оценки инкрементных функций подгонки и стандартные отклонения с использованием наблюдений периода оценки.
Если период оценки равен 0, incrementalLearner заставляет период оценки 1000. Следовательно, функции инкрементной подгонки оценивают новые предикторные переменные средства и стандартные отклонения в течение периода принудительной оценки.
Когда функции инкрементной подгонки оценивают предикторные средства и стандартные отклонения, функции вычисляют взвешенные средства и взвешенные стандартные отклонения, используя наблюдения периода оценки. В частности, функции стандартизируют предиктор j (xj), используя
где
xj - предиктор j, и xjk - наблюдение k предиктора 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)).
Инкрементные функции, отслеживающие метрики производительности в пределах окна, используют следующий процесс:
Для каждой заданной метрики сохраните буфер длиной MetricsWindowSize и буфер весов наблюдения.
Заполните элементы буфера метрик производительностью модели на основе пакетов входящих наблюдений и сохраните соответствующие веса наблюдений в буфере весов.
При заполнении буфера перезаписать 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.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.