Преобразуйте линейную регрессионую модель в инкрементальную обучающуюся
возвращает линейную регрессионую модель для инкрементного обучения, IncrementalMdl
= incrementalLearner(Mdl
)IncrementalMdl
, с использованием гиперпараметров и коэффициентов традиционно обученной линейной регрессионой модели Mdl
. Потому что значения его свойств отражают знания, полученные от Mdl
, IncrementalMdl
может предсказывать метки, заданные новые наблюдения, и это warm, что означает, что его прогнозирующая эффективность отслеживается.
использует дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение". Некоторые опции требуют от вас обучения IncrementalMdl
= incrementalLearner(Mdl
,Name,Value
)IncrementalMdl
перед отслеживанием его прогнозирующей эффективности. Для примера, 'MetricsWarmupPeriod',50,'MetricsWindowSize',100
задает предварительный инкрементный период обучения 50 наблюдений перед отслеживанием показателей эффективности и определяет обработку 100 наблюдений перед обновлением показателей эффективности.
Обучите линейную регрессионую модель при помощи fitrlinear
, а затем преобразуйте его в пошагового ученика.
Загрузка и предварительная обработка данных
Загрузите набор данных по корпусу 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}];
Обучите линейную регрессионую модель
Подбор линейной регрессионной модели ко всему набору данных.
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.
The incrementalLearner
Функция Инициализирует пошагового ученика путем передачи ему выученных коэффициентов вместе с другой информацией TTMdl
извлечен из обучающих данных.
IncrementalMdl
тепло (IsWarm
является 1
), что означает, что инкрементальные функции обучения могут начать отслеживать метрики эффективности.
The incrementalLearner
функция обучает модель с помощью адаптивного решателя с инвариантным масштабом, тогда как fitrlinear
обученные TTMdl
использование двойного решателя SGD.
Предсказание ответов
Инкрементный ученик, созданный из преобразования традиционно обученной модели, может генерировать предсказания без дальнейшей обработки.
Прогнозируйте продажные цены для всех наблюдений с помощью обеих моделей.
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);
Подбор линейной регрессионной модели к 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 итераций (20 000 наблюдений). Затем, слегка изменяется как 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) для измерения эффективности модели. Программное обеспечение поддерживает нечувствительные к эпсилону потери и 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
чтобы преобразовать каждую категориальную переменную в числовую матрицу фиктивных переменных и объединить все фиктивные переменные матрицы и любые другие числовые предикторы. Для получения дополнительной информации см. Dummy Переменных.
Задайте необязательные разделенные разделенными запятой парами 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'
- Коэффициент регуляризации гребня (L 2)Коэффициент регуляризации гребня (L 2), заданный как разделенная запятой пара, состоящий из '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 цикла обучения
|
Если 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" |
Анонимная функция | , где метрический в 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 | Стандартные отклонения переменной предиктора, числовой вектор |
Incremental learning, или online learning, является ветвью машинного обучения, связанная с обработкой входящих данных из потока данных, возможно, практически не учитывая распределения переменных предиктора, аспектов предсказания или целевой функции (включая настройку значений параметров) или того, помечены ли наблюдения. Инкрементальное обучение отличается от традиционного машинного обучения, где доступно достаточно маркированных данных, чтобы соответствовать модели, выполнить перекрестную валидацию, чтобы настроить гиперпараметры и вывести распределение предиктора.
Учитывая входящие наблюдения, модель инкрементного обучения обрабатывает данные любым из следующих способов, но обычно в этом порядке:
Спрогнозируйте метки.
Измерьте прогнозирующую эффективность.
Проверьте наличие структурных пропусков или дрейфа в модели.
Подбор модели к входящим наблюдениям.
Этот adaptive scale-invariant solver for incremental learning, введенный в [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 в периоде оценки.
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)
).
Инкрементальные функции, которые отслеживают метрики эффективности в окне, используют следующий процесс:
Для каждой заданной метрики сохраните буфер длины MetricsWindowSize
и буфер весов наблюдений.
Заполните элементы буфера метриков производительностью модели на основе пакетов входящих наблюдений и сохраните соответствующие веса наблюдений в буфере весов.
Когда буфер будет заполнен, перезаписайте 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.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.