Преобразуйте модель регрессии машины опорных векторов (SVM) в инкрементного ученика
возвращает модель линейной регрессии для пошагового обучения, IncrementalMdl
= incrementalLearner(Mdl
)IncrementalMdl
, с помощью гиперпараметров и коэффициентов традиционно обученной линейной модели SVM для регрессии, Mdl
. Поскольку его значения свойств отражают знание, полученное от Mdl
, IncrementalMdl
может предсказать метки, данные новые наблюдения, и это - warm, означая, что его прогнозирующая эффективность прослежена.
дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Некоторые опции требуют, чтобы вы обучили IncrementalMdl
= incrementalLearner(Mdl
,Name,Value
)IncrementalMdl
прежде чем его прогнозирующая эффективность прослежена. Например, 'MetricsWarmupPeriod',50,'MetricsWindowSize',100
задает предварительный инкрементный период подготовки 50 наблюдений, прежде чем показатели производительности будут прослежены, и задает обработку 100 наблюдений прежде, чем обновить показатели производительности.
Обучите модель регрессии SVM при помощи fitrsvm
, и затем преобразуйте его в инкрементного ученика.
Загрузите и предварительно обработайте данные
Загрузите 2 015 наборов данных корпуса Нью-Йорк Сити. Для получения дополнительной информации о данных смотрите, что Нью-Йорк Сити Открывает Данные.
load NYCHousing2015
Извлеките переменную отклика SALEPRICE
из таблицы. Для числовой устойчивости масштабируйте SALEPRICE
1e6
.
Y = NYCHousing2015.SALEPRICE/1e6; NYCHousing2015.SALEPRICE = [];
Создайте фиктивные переменные матрицы из категориальных предикторов.
catvars = ["BOROUGH" "BUILDINGCLASSCATEGORY" "NEIGHBORHOOD"]; dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015,... 'InputVariables',catvars); dumvarmat = table2array(dumvarstbl); NYCHousing2015(:,catvars) = [];
Обработайте все другие числовые переменные в таблице как линейные предикторы продажной цены. Конкатенируйте матрицу фиктивных переменных к остальной части данных о предикторе.
idxnum = varfun(@isnumeric,NYCHousing2015,'OutputFormat','uniform'); X = [dumvarmat NYCHousing2015{:,idxnum}];
Обучите модель регрессии SVM
Подбирайте модель регрессии SVM к 5 000 случайным образом чертивших наблюдений от набора данных. Отбросьте векторы поддержки (Alpha
) из модели так, чтобы программное обеспечение использовало линейные коэффициенты (Beta
) для предсказания.
N = numel(Y);
n = 5000;
rng(1); % For reproducibility
idx = randsample(N,n);
TTMdl = fitrsvm(X(idx,:),Y(idx));
TTMdl = discardSupportVectors(TTMdl)
TTMdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Beta: [312x1 double] Bias: -3.2469e+11 KernelParameters: [1x1 struct] NumObservations: 5000 BoxConstraints: [5000x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [5000x1 logical] Solver: 'SMO' Properties, Methods
TTMdl
RegressionSVM
объект модели, представляющий традиционно обученную модель регрессии SVM.
Преобразуйте обученную модель
Преобразуйте традиционно обученную модель регрессии SVM в модель линейной регрессии для пошагового обучения.
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = incrementalRegressionLinear IsWarm: 1 Metrics: [1x2 table] ResponseTransform: 'none' Beta: [312x1 double] Bias: -3.2469e+11 Learner: 'svm' Properties, Methods
IncrementalMdl
incrementalRegressionLinear
объект модели, подготовленный к пошаговому обучению с помощью SVM.
incrementalLearner
функция Инициализирует инкрементного ученика путем передачи изученных коэффициентов ему, наряду с другой информацией TTMdl
извлеченный из обучающих данных.
IncrementalMdl
является теплым (IsWarm
1
), что означает, что функции пошагового обучения могут начать отслеживать показатели производительности.
incrementalLearner
функция обучает модель с помощью адаптивного инвариантного к масштабу решателя, тогда как fitrsvm
обученный TTMdl
использование решателя SMO.
Предскажите ответы
Инкрементный ученик, созданный из преобразования традиционно обученной модели, может сгенерировать предсказания без последующей обработки.
Предскажите продажные цены на все наблюдения с помощью обеих моделей.
ttyfit = predict(TTMdl,X); ilyfit = predict(IncrementalMdl,X); compareyfit = norm(ttyfit - ilyfit)
compareyfit = 0
Различие между подходящими значениями, сгенерированными моделями, 0.
Решатель по умолчанию является адаптивным инвариантным к масштабу решателем. Если вы задаете этот решатель, вы не должны настраивать параметры для обучения. Однако, если вы задаете или стандартный SGD или решатель ASGD вместо этого, можно также задать период оценки, в который инкрементные подходящие функции настраивают скорость обучения.
Загрузите и переставьте 2 015 наборов данных корпуса Нью-Йорк Сити. Для получения дополнительной информации о данных смотрите, что Нью-Йорк Сити Открывает Данные.
load NYCHousing2015 rng(1) % For reproducibility n = size(NYCHousing2015,1); shuffidx = randsample(n,n); NYCHousing2015 = NYCHousing2015(shuffidx,:);
Извлеките переменную отклика SALEPRICE
из таблицы. Для числовой устойчивости масштабируйте SALEPRICE
1e6
.
Y = NYCHousing2015.SALEPRICE/1e6; NYCHousing2015.SALEPRICE = [];
Создайте фиктивные переменные матрицы из категориальных предикторов.
catvars = ["BOROUGH" "BUILDINGCLASSCATEGORY" "NEIGHBORHOOD"]; dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015,... 'InputVariables',catvars); dumvarmat = table2array(dumvarstbl); NYCHousing2015(:,catvars) = [];
Обработайте все другие числовые переменные в таблице как линейные предикторы продажной цены. Конкатенируйте матрицу фиктивных переменных к остальной части данных о предикторе.
idxnum = varfun(@isnumeric,NYCHousing2015,'OutputFormat','uniform'); X = [dumvarmat NYCHousing2015{:,idxnum}];
Случайным образом разделите данные в 5%-е и 95%-е наборы: первый набор для обучения модель традиционно и второй набор для пошагового обучения.
cvp = cvpartition(n,'Holdout',0.95); idxtt = training(cvp); idxil = test(cvp); % 5% set for traditional training Xtt = X(idxtt,:); Ytt = Y(idxtt); % 95% set for incremental learning Xil = X(idxil,:); Yil = Y(idxil);
Подбирайте модель регрессии SVM к 5% данных.
TTMdl = fitrsvm(Xtt,Ytt);
Преобразуйте традиционно обученную модель регрессии SVM в модель линейной регрессии для пошагового обучения. Задайте стандартный решатель SGD и период оценки 2e4
наблюдения (значением по умолчанию является 1000
когда скорость обучения требуется).
IncrementalMdl = incrementalLearner(TTMdl,'Solver','sgd','EstimationPeriod',2e4);
IncrementalMdl
incrementalRegressionLinear
объект модели.
Подбирайте инкрементную модель к остальной части данных при помощи fit
функция. В каждой итерации:
Симулируйте поток данных путем обработки 10 наблюдений за один раз.
Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.
Сохраните скорость обучения и чтобы видеть, как коэффициенты и скорость обучения развиваются во время обучения.
% 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
не подбирает модель к данным о потоковой передаче в период оценки, является постоянным для первых 2 000 итераций (20 000 наблюдений). То, изменения немного как fit
подбирает модель к каждому новому фрагменту 10 наблюдений.
Используйте обученную модель регрессии SVM, чтобы инициализировать инкрементного ученика. Подготовьте инкрементного ученика путем определения метрического периода прогрева, во время который updateMetricsAndFit
функция только подбирает модель. Задайте метрический размер окна 500 наблюдений.
Загрузите набор данных манипулятора.
load robotarm
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Случайным образом разделите данные в 5%-е и 95%-е наборы: первый набор для обучения модель традиционно и второй набор для пошагового обучения.
n = numel(ytrain); rng(1) % For reproducibility cvp = cvpartition(n,'Holdout',0.95); idxtt = training(cvp); idxil = test(cvp); % 5% set for traditional training Xtt = Xtrain(idxtt,:); Ytt = ytrain(idxtt); % 95% set for incremental learning Xil = Xtrain(idxil,:); Yil = ytrain(idxil);
Подбирайте модель регрессии SVM к первому набору.
TTMdl = fitrsvm(Xtt,Ytt);
Преобразуйте традиционно обученную модель регрессии SVM в модель линейной регрессии для пошагового обучения. Задайте следующее:
Период прогрева показателей производительности 2 000 наблюдений.
Метрический размер окна 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_{10}') xlim([0 nchunk]); xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); xlabel('Iteration') subplot(2,2,2) h = plot(ei.Variables); xlim([0 nchunk]); ylabel('Epsilon Insensitive Loss') xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,ei.Properties.VariableNames) xlabel('Iteration') subplot(2,2,3) h = plot(mse.Variables); xlim([0 nchunk]); ylabel('MSE') xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,mse.Properties.VariableNames) xlabel('Iteration') subplot(2,2,4) h = plot(mae.Variables); xlim([0 nchunk]); ylabel('MAE') xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,mae.Properties.VariableNames) xlabel('Iteration')
График предлагает тот updateMetricsAndFit
делает следующее:
Подгонка во время всех итераций пошагового обучения.
Вычислите показатели производительности после метрического периода прогрева только.
Вычислите совокупные метрики во время каждой итерации.
Вычислите метрики окна после обработки 500 наблюдений.
Mdl
— Традиционно обученная линейная модель SVM для регрессииRegressionSVM
объект модели | CompactRegressionSVM
объект моделиТрадиционно обученная линейная модель SVM для регрессии в виде объекта модели, возвращенного его обучением или обрабатывающий функцию.
Объект модели | Обучение или обрабатывающий функцию |
---|---|
RegressionSVM | fitrsvm |
CompactRegressionSVM | fitrsvm или compact |
Примечание
Функции пошагового обучения поддерживают только числовые входные данные о предикторе. Если 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' | Stochastic gradient descent (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'
— Отметьте, чтобы стандартизировать данные о предикторе'auto'
(значение по умолчанию) | false
| true
Отметьте, чтобы стандартизировать данные о предикторе в виде разделенной запятой пары, состоящей из 'Standardize'
и значение в этой таблице.
Значение | Описание |
---|---|
'auto' | incrementalLearner определяет, должны ли переменные предикторы быть стандартизированы. Смотрите Стандартизируют Данные. |
true | Программное обеспечение стандартизирует данные о предикторе. |
false | Программное обеспечение не стандартизирует данные о предикторе. |
При некоторых условиях, incrementalLearner
может заменить вашу спецификацию. Для получения дополнительной информации смотрите, Стандартизируют Данные.
Пример: 'Standardize',true
Типы данных: логический |
char
| string
'BatchSize'
— Мини-пакетный размер
(значение по умолчанию) | положительное целое числоМини-пакетный размер в виде разделенной запятой пары, состоящей из 'BatchSize'
и положительное целое число. В каждой итерации во время обучения, incrementalLearner
использование min(BatchSize,numObs)
наблюдения, чтобы вычислить подградиент, где numObs
количество наблюдений в обучающих данных, переданных fit
или updateMetricsAndFit
.
Пример: 'BatchSize',1
Типы данных: single
| double
'Lambda'
— Гребень (L 2) сила срока регуляризации1e-5
(значение по умолчанию) | неотрицательный скалярГребень (L 2) сила срока регуляризации в виде разделенной запятой пары, состоящей из 'Lambda'
и неотрицательный скаляр.
Пример: 'Lambda',0.01
Типы данных: single
| double
'LearnRate'
— Скорость обучения'auto'
(значение по умолчанию) | положительная скалярная величинаСкорость обучения в виде разделенной запятой пары, состоящей из 'LearnRate'
и 'auto'
или положительная скалярная величина. LearnRate
управляет размером шага оптимизации путем масштабирования объективного подградиента.
Для 'auto'
:
Если EstimationPeriod
0
, начальной скоростью обучения является 0.7
.
Если EstimationPeriod
> 0 , начальной скоростью обучения является
1/sqrt(1+max(sum(X.^2,obsDim)))
, где obsDim
1
если наблюдения составляют столбцы данных о предикторе и 2
в противном случае. fit
и updateMetricsAndFit
установите значение, когда вы передадите данные модели и обучающие данные к любой функции.
Аргумент пары "имя-значение" 'LearnRateSchedule'
определяет скорость обучения для последующих циклов изучения.
Пример: 'LearnRate',0.001
Типы данных: single
| double
| char
| string
'LearnRateSchedule'
— Расписание скорости обучения'decaying'
(значение по умолчанию) | 'constant'
Расписание скорости обучения в виде разделенной запятой пары, состоящей из 'LearnRateSchedule'
и значение в этой таблице, где LearnRate
задает начальную скорость обучения ɣ 0.
Значение | Описание |
---|---|
'constant' | Скоростью обучения является ɣ 0 для всех циклов изучения. |
'decaying' | Скорость обучения при изучении цикла t
|
Пример: 'LearnRateSchedule','constant'
Типы данных: char |
string
'Shuffle'
— Отметьте для перестановки наблюдений в пакетеtrue
(значение по умолчанию) | false
Отметьте для перестановки наблюдений в пакете в каждой итерации в виде разделенной запятой пары, состоящей из 'Shuffle'
и значение в этой таблице.
Значение | Описание |
---|---|
true | Программное обеспечение переставляет наблюдения в каждом входящем пакете данных прежде, чем обработать набор. Это действие уменьшает смещение, вызванное схемой выборки. |
false | Программные процессы данные в порядке получены. |
Пример: 'Shuffle',false
Типы данных: логический
'Metrics'
— Метрики производительности модели, чтобы отследить во время пошагового обучения"epsiloninsensitive"
(значение по умолчанию) | представляет вектор в виде строки | указатель на функцию | вектор ячейки | массив структур | "mse"
| ...Метрики производительности модели, чтобы отследить во время пошагового обучения с updateMetrics
и updateMetricsAndFit
В виде разделенной запятой пары, состоящей из 'Metrics'
и встроенное имя функции потерь, представьте вектор в виде строки из имен, указатель на функцию (@metricName
), массив структур указателей на функцию или вектор ячейки из имен, указателей на функцию или массивов структур.
В следующей таблице перечислены встроенные имена функции потерь. Можно задать больше чем один при помощи вектора строки.
Имя | Описание |
---|---|
"epsiloninsensitive" | Эпсилон нечувствительная потеря |
"mse" | Квадратичная невязка взвешенного среднего |
Для получения дополнительной информации о встроенных функциях потерь смотрите loss
.
Пример: 'Metrics',["epsiloninsensitive" "mse"]
Чтобы задать пользовательскую функцию, которая возвращает показатель производительности, используйте обозначение указателя на функцию. Функция должна иметь эту форму:
metric = customMetric(Y,YFit)
Выходной аргумент metric
n-by-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 |
Для получения дополнительной информации об опциях показателей производительности смотрите показатели производительности.
Типы данных: char |
string
| struct
| cell
| function_handle
'MetricsWarmupPeriod'
— Количество подгонки наблюдений прежде, чем отследить показатели производительности
(значение по умолчанию) | неотрицательное целое число |...Количество наблюдений, инкрементная модель должна быть подходящей к тому, прежде чем это отследит показатели производительности в своем Metrics
свойство в виде разделенной запятой пары, состоящей из 'MetricsWarmupPeriod'
и неотрицательное целое число. Инкрементная модель является теплой после того, как инкрементные подходящие функции будут соответствовать MetricsWarmupPeriod
наблюдения к инкрементной модели (EstimationPeriod
+ MetricsWarmupPeriod
наблюдения).
Для получения дополнительной информации об опциях показателей производительности смотрите показатели производительности.
Типы данных: single
| double
'MetricsWindowSize'
— Количество наблюдений, чтобы использоваться для расчета показателей производительности окна
(значение по умолчанию) | положительное целое число |...Количество наблюдений, чтобы использоваться для расчета показателей производительности окна в виде положительного целого числа.
Для получения дополнительной информации об опциях показателей производительности смотрите показатели производительности.
Типы данных: single
| double
IncrementalMdl
— Модель линейной регрессии для пошагового обученияincrementalRegressionLinear
объект моделиМодель линейной регрессии для пошагового обучения, возвращенного как incrementalRegressionLinear
объект модели. IncrementalMdl
также сконфигурирован, чтобы сгенерировать предсказания, данные новые данные (см. predict
).
Инициализировать IncrementalMdl
для пошагового обучения, incrementalLearner
передает значения Mdl
свойства в этой таблице к конгруэнтным свойствам IncrementalMdl
.
Свойство | Описание |
---|---|
Beta | Линейные коэффициенты модели, числовой вектор |
Bias | Точка пересечения модели, числовой скаляр |
Epsilon | Половина ширины эпсилона нечувствительная полоса, неотрицательный скаляр |
Mu | Средние значения переменного предиктора, числовой вектор |
Sigma | Стандартные отклонения переменного предиктора, числовой вектор |
Incremental learning или online learning, является ветвью машинного обучения, касавшегося обработки входящих данных от потока данных, возможно, учитывая мало ни к какому знанию распределения переменных предикторов, аспектов предсказания или целевой функции (включая настройку значений параметров), или помечены ли наблюдения. Пошаговое обучение отличается от традиционного машинного обучения, где достаточно маркированных данных доступно, чтобы соответствовать к модели, выполните перекрестную проверку, чтобы настроить гиперпараметры и вывести распределение предиктора.
Учитывая входящие наблюдения, модель пошагового обучения обрабатывает данные любым из следующих способов, но обычно этим порядком:
Предскажите метки.
Измерьте прогнозирующий уровень.
Проверяйте на структурные пропуски или дрейфуйте в модели.
Подбирайте модель к входящим наблюдениям.
adaptive scale-invariant solver for incremental learning, введенный в [1], является основанным на градиентном спуске объективным решателем для учебных линейных прогнозных моделей. Решатель является гиперпараметром, свободным, нечувствительным к различиям в шкалах переменного предиктора, и не требует предварительных знаний распределения переменных предикторов. Эти характеристики делают его хорошо подходящий для пошагового обучения.
Стандартный SGD и решатели ASGD чувствительны к отличающимся шкалам среди переменных предикторов, приводящих к моделям, которые могут выполнить плохо. Чтобы достигнуть лучшей точности с помощью SGD и ASGD, можно стандартизировать данные о предикторе и настроить регуляризацию, и параметры скорости обучения могут потребовать настройки. Для традиционного машинного обучения достаточно данных доступно, чтобы включить гиперпараметр, настраивающийся стандартизацией предиктора и перекрестной проверкой. Однако для пошагового обучения, достаточно данных не может быть доступным (например, наблюдения могут быть доступными только по одному), и распределение предикторов может быть неизвестным. Эти характеристики делают настройку параметра и стандартизацию предиктора трудными или невозможными сделать во время пошагового обучения.
Инкрементные подходящие функции для регрессии fit
и updateMetricsAndFit
используйте более консервативную версию ScInOL1 алгоритма.
В период оценки, инкрементные подходящие функции fit
и updateMetricsAndFit
используйте первый входящий EstimationPeriod
наблюдения, чтобы оценить (настраивают) гиперпараметры, требуемые для инкрементного обучения. Эта таблица описывает гиперпараметры и когда они оцениваются или настраиваются.
Гиперпараметр | Свойство модели | Использование | Предполагаемые гиперпараметры |
---|---|---|---|
Средние значения предиктора и стандартные отклонения |
| Стандартизируйте данные о предикторе | Когда оба этих условия применяются:
|
Скорость обучения | LearnRate | Настройте размер шага решателя | Когда оба из этих условий применяются:
|
Функции соответствуют только последнему наблюдению периода оценки к инкрементной модели, и они не используют ни одного из наблюдений, чтобы отследить эффективность модели. В конце периода оценки функции обновляют свойства, которые хранят гиперпараметры.
Если функции пошагового обучения сконфигурированы, чтобы стандартизировать переменные предикторы, они делают настолько использующий средние значения и стандартные отклонения, сохраненные в Mu
и Sigma
свойства модели IncrementalMdl
пошагового обучения.
Если вы стандартизировали данные о предикторе, когда вы обучили входную модель Mdl
при помощи fitrsvm
, следующие условия применяются:
incrementalLearner
передает средние значения в Mdl.Mu
и стандартные отклонения в Mdl.Sigma
к конгруэнтным свойствам модели пошагового обучения.
Функции пошагового обучения всегда стандартизируют данные о предикторе, независимо от значения 'Standardize'
аргумент пары "имя-значение".
Когда вы устанавливаете 'Standardize',true
, и IncrementalMdl.Mu
и IncrementalMdl.Sigma
пусты, следующие условия применяются:
Если период оценки положителен (см. EstimationPeriod
свойство IncrementalMdl
), инкрементные подходящие функции оценивают средние значения и стандартные отклонения с помощью наблюдений периода оценки.
Если период оценки 0, incrementalLearner
обеспечивает период оценки к 1000
. Следовательно, инкрементные подходящие функции оценивают новые средние значения переменного предиктора и стандартные отклонения в принудительный период оценки.
Если вы устанавливаете 'Standardize','auto'
(значение по умолчанию), следующие условия применяются.
Если IncrementalMdl.Mu
и IncrementalMdl.Sigma
пусты функции пошагового обучения не стандартизируют переменные предикторы.
В противном случае функции пошагового обучения стандартизируют переменные предикторы с помощью своих средних значений и стандартных отклонений в IncrementalMdl.Mu
и IncrementalMdl.Sigma
, соответственно. Инкрементные подходящие функции не оценивают новые средние значения и стандартные отклонения независимо от длины периода оценки.
Когда инкрементные подходящие функции оценивают средние значения предиктора и стандартные отклонения, функции вычисляют взвешенные средние и взвешенные стандартные отклонения с помощью наблюдений периода оценки. А именно, функции стандартизируют предиктор j (xj) использование
xj является предиктором j, и xjk является наблюдением k предиктора j в период оценки.
wj является весом наблюдения j.
updateMetrics
и updateMetricsAndFit
функции являются функциями пошагового обучения, которые отслеживают метрики производительности модели ('Metrics'
) из новых данных, когда инкрементной моделью является warm (IsWarm
свойство. Инкрементная модель является теплой после fit
или updateMetricsAndFit
подбирайте инкрементную модель к 'MetricsWarmupPeriod'
наблюдения, который является metrics warm-up period.
Если '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] Kempka, Michał, Войцех Kotłowski и Манфред К. Вармут. "Адаптивные Инвариантные к масштабу Онлайновые Алгоритмы для Изучения Линейных Моделей". CoRR (февраль 2019). https://arxiv.org/abs/1902.07528.
[2] Лэнгфорд, J., Л. Ли и Т. Чжан. “Разреженное Дистанционное обучение Через Усеченный Градиент”. Дж. Мах. Учиться. Res., Издание 10, 2009, стр 777–801.
[3] Шалев-Шварц, S., И. Зингер и Н. Сребро. “Pegasos: Основной Предполагаемый Решатель Подградиента для SVM”. Продолжения 24-й Международной конференции по вопросам Машинного обучения, ICML ’07, 2007, стр 807–814.
[4] Сюй, Вэй. “К Оптимальному Один Крупный масштаб Передачи Изучение с Усредненным Стохастическим Градиентным спуском”. CoRR, abs/1107.2490, 2011.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.