Модель линейной регрессии для пошагового обучения
incrementalRegressionLinear
создает incrementalRegressionLinear
объект модели, который представляет инкрементную линейную модель для проблем регрессии. Поддерживаемые ученики включают машину опорных векторов (SVM) и наименьшие квадраты.
В отличие от других объектов модели Statistics and Machine Learning Toolbox™, incrementalRegressionLinear
может быть назван непосредственно. Кроме того, можно задать изучение опций, таких как настройки показателей производительности, значения параметров и объективный решатель, прежде, чем подбирать модель к данным. После того, как вы создаете incrementalRegressionLinear
объект, это подготовлено к пошаговому обучению.
incrementalRegressionLinear
подходит лучше всего для пошагового обучения. Для традиционного подхода к обучению SVM или модель линейной регрессии (такая как создание модели путем подбора кривой ему к данным, выполнения перекрестной проверки, настройки гиперпараметров, и так далее), смотрите fitrsvm
или fitrlinear
.
Можно создать incrementalRegressionLinear
объект модели несколькими способами:
Вызовите функцию непосредственно — Конфигурируют опции пошагового обучения или задают начальные значения для линейных параметров модели и гиперпараметров, путем вызова incrementalRegressionLinear
непосредственно. Этот подход является лучшим, когда у вас еще нет данных, или вы хотите запустить пошаговое обучение сразу.
Преобразуйте традиционно обученную модель — Чтобы инициализировать модель линейной регрессии для пошагового обучения с помощью коэффициентов модели и гиперпараметров обученного SVM или объекта модели линейной регрессии, можно преобразовать традиционно обученную модель в incrementalRegressionLinear
объект модели путем передачи его incrementalLearner
функция. Эта таблица содержит ссылки на соответствующие страницы с описанием.
Конвертируемый объект модели | Функция преобразования |
---|---|
RegressionSVM или CompactRegressionSVM | incrementalLearner |
RegressionLinear | incrementalLearner |
Вызовите функцию пошагового обучения — fit
, updateMetrics
, и updateMetricsAndFit
примите сконфигурированный incrementalRegressionLinear
объект модели и данные, как введено, и возвращают incrementalRegressionLinear
объект модели, обновленный с информацией, усвоенной из входной модели и данных.
возвращает инкрементную линейную модель по умолчанию для регрессии Mdl
= incrementalRegressionLinear()Mdl
. Свойства модели по умолчанию содержат заполнителей для неизвестных параметров модели. Необходимо обучить модель по умолчанию, прежде чем можно будет отследить ее эффективность или сгенерировать предсказания от нее.
свойства наборов или аргументы пары "имя-значение" использования дополнительных опций. Заключите каждое имя в кавычки. Например, Mdl
= incrementalRegressionLinear(Name
,Value
)incrementalRegressionLinear('Beta',[0.1 0.3],'Bias',1,'MetricsWarmupPeriod',100)
устанавливает вектор из линейных коэффициентов модели β к [0.1 0.3]
, смещение β 0 к 1
, и метрический период прогрева к 100
.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Standardize',true
стандартизирует данные о предикторе с помощью средних значений предиктора и стандартных отклонений, оцененных в период оценки.'Metrics'
— Метрики производительности модели, чтобы отследить во время пошагового обучения"epsiloninsensitive"
| "mse"
| представьте вектор в виде строки | указатель на функцию | вектор ячейки | массив структур |...Метрики производительности модели, чтобы отследить во время пошагового обучения в виде разделенной запятой пары, состоящей из 'Metrics'
и встроенное имя функции потерь, представьте вектор в виде строки из имен, указатель на функцию (@metricName
), массив структур указателей на функцию или вектор ячейки из имен, указателей на функцию или массивов структур.
Когда Mdl
warm (см. IsWarm), updateMetrics
и updateMetricsAndFit
отследите показатели производительности в свойстве Metrics Mdl
.
В следующей таблице перечислены встроенные имена функции потерь и который ученики, заданные в Mdl.Learner
, поддержите их. Можно задать больше чем одну функцию потерь при помощи вектора строки.
Имя | Описание | Ученики, поддерживающие метрику |
---|---|---|
"epsiloninsensitive" | Эпсилон нечувствительная потеря | 'svm' |
"mse" | Квадратичная невязка взвешенного среднего | 'svm' и 'leastsquares' |
Для получения дополнительной информации о встроенных функциях потерь смотрите 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
сохраните заданные метрики в таблице в свойстве 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
'Standardize'
— Отметьте, чтобы стандартизировать данные о предикторе'auto'
(значение по умолчанию) | false
| true
Отметьте, чтобы стандартизировать данные о предикторе в виде разделенной запятой пары, состоящей из 'Standardize'
и значение в этой таблице.
Значение | Описание |
---|---|
'auto' | incrementalRegressionLinear определяет, должны ли переменные предикторы быть стандартизированы. Смотрите Стандартизируют Данные. |
true | Программное обеспечение стандартизирует данные о предикторе. Для получения дополнительной информации смотрите, Стандартизируют Данные. |
false | Программное обеспечение не стандартизирует данные о предикторе. |
Пример: 'Standardize',true
Типы данных: логический |
char
| string
Можно установить большинство свойств при помощи синтаксиса аргумента пары "имя-значение" только, когда вы вызываете incrementalRegressionLinear
. Можно установить некоторые свойства, когда вы вызываете incrementalLearner
преобразовывать традиционно обученную модель. Вы не можете установить свойства FittedLoss
, NumTrainingObservations
\mu
\sigma
Опции решателя
, и IsWarm
.
Beta
— Линейные коэффициенты модели βЭто свойство доступно только для чтения.
Линейные коэффициенты модели β в виде NumPredictors
- 1 числовой вектор.
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
\beta
задан значением Beta
свойство традиционно обученной модели. В противном случае, по умолчанию, Beta
zeros(NumPredictors,1)
.
Типы данных: single
| double
Bias
— Прерывание модели β 0Это свойство доступно только для чтения.
Прерывание модели β 0 или смещение называет в виде числового скаляра.
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, Bias
задан значением Bias
свойство традиционно обученной модели. В противном случае, по умолчанию, Bias
0
.
Типы данных: single
| double
Epsilon
— Половина ширины эпсилона нечувствительная полоса'auto'
| неотрицательный скалярЭто свойство доступно только для чтения.
Половина ширины нечувствительной полосы эпсилона в виде 'auto'
или неотрицательный скаляр.
Если вы задаете 'auto'
когда вы вызываете incrementalRegressionLinear
, инкрементные подходящие функции оценивают Epsilon
в период оценки, заданный EstimationPeriod, с помощью этой процедуры:
Если iqr(Y)
≠ 0, Epsilon
iqr(Y)/13.49
, где Y
данные об ответе периода оценки.
Если iqr(Y)
= 0 или прежде чем вы будете соответствовать Mdl
к данным, Epsilon
0.1
.
Если вы преобразуете традиционно обученную модель регрессии SVM, чтобы создать Mdl
(Learner
'svm'
\epsilon
задан значением Epsilon
свойство традиционно обученной модели.
Если Learner
'leastsquares'
, вы не можете установить Epsilon
и его значением является NaN
.
Типы данных: single
| double
FittedLoss
— Функция потерь раньше подбирала линейную модель'epsiloninsensitive'
| 'mse'
Это свойство доступно только для чтения.
Функция потерь раньше подбирала линейную модель в виде 'epsiloninsensitive'
или 'mse'
.
Значение | Алгоритм | Функция потерь | Learner Значение |
---|---|---|---|
'epsiloninsensitive' | Регрессия машины опорных векторов | Нечувствительный эпсилон: | 'svm' |
'mse' | Линейная регрессия через обычные наименьшие квадраты | Среднеквадратическая ошибка (MSE): | 'leastsquares' |
Learner
— Тип модели линейной регрессии'leastsquares'
| 'svm'
Это свойство доступно только для чтения.
Тип модели линейной регрессии в виде 'leastsquares'
или 'svm'
.
В следующей таблице,
β является Beta
.
x является наблюдением от переменных предикторов p.
β 0 является Bias
.
Значение | Алгоритм | Функция потерь | FittedLoss Значение |
---|---|---|---|
'leastsquares' | Линейная регрессия через обычные наименьшие квадраты | Среднеквадратическая ошибка (MSE): | 'mse' |
'svm' | Регрессия машины опорных векторов | Нечувствительный эпсилон: | 'epsiloninsensitive' |
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, Leaner
ученик традиционно обученной модели.
Если традиционно обученной моделью является CompactRegressionSVM
или RegressionSVM
, Learner
'svm'
.
Если традиционно обученной моделью является RegressionLinear
, Learner
значение Learner
свойство традиционно обученной модели.
NumPredictors
— Количество переменных предикторов
(значение по умолчанию) | неотрицательный числовой скалярЭто свойство доступно только для чтения.
Количество переменных предикторов в виде неотрицательного числового скаляра.
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, NumPredictors
задан как конгруэнтное свойство традиционно обученной модели. В противном случае инкрементные подходящие функции выводят NumPredictors
из данных о предикторе во время обучения.
Типы данных: uint32
NumTrainingObservations
— Количество наблюдений соответствует к инкрементной модели
(значение по умолчанию) | неотрицательный числовой скалярЭто свойство доступно только для чтения.
Количество наблюдений соответствует к инкрементной модели Mdl
В виде неотрицательного числового скаляра. NumTrainingObservations
увеличения, когда вы передаете Mdl
и обучающие данные к fit
или updateMetricsAndFit
.
Примечание
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, incrementalRegressionLinear
не добавляет количество подгонки наблюдений к традиционно обученной модели к NumTrainingObservations
.
Типы данных: uint64
ResponseTransform
— Функция преобразования ответа'none'
| указатель на функциюЭто свойство доступно только для чтения.
Преобразование ответа функционирует в виде 'none'
или указатель на функцию. ResponseTransform
описывает, как функции пошагового обучения преобразовывают необработанные значения отклика.
Для функции MATLAB® или функции, которую вы задаете, введите ее указатель на функцию; например, 'ResponseTransform',@function
, где function
принимает n-by-1 вектор (исходные ответы) и возвращает вектор из той же длины (преобразованные ответы).
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, ResponseTransform
задан как конгруэнтное свойство традиционно обученной модели.
В противном случае, ResponseTransform
'none'
.
Типы данных: char |
function_handle
EstimationPeriod
— Количество наблюдений, обработанных, чтобы оценить гиперпараметрыЭто свойство доступно только для чтения.
Количество наблюдений, обработанных инкрементной моделью, чтобы оценить гиперпараметры перед обучением или отслеживающий показатели производительности в виде неотрицательного целого числа.
Примечание
Если Mdl
подготовлен к пошаговому обучению (все гиперпараметры, требуемые для обучения, заданы), incrementalRegressionLinear
силы 'EstimationPeriod'
к 0
.
Если Mdl
не подготовлен к пошаговому обучению, incrementalRegressionLinear
наборы 'EstimationPeriod'
к 1000
.
Для получения дополнительной информации смотрите Период Оценки.
Типы данных: single
| double
FitBias
— Линейный флаг включения прерывания моделиtrue
| false
Это свойство доступно только для чтения.
Линейное включение прерывания модели отмечает в виде true
или false
.
Значение | Описание |
---|---|
true | incrementalRegressionLinear включает термин смещения β 0 в линейной модели, которую инкрементные подходящие функции подбирают к данным. |
false | incrementalRegressionLinear наборы β 0 = 0. |
Если Bias
≠ 0, FitBias
должен быть true
. Другими словами, incrementalRegressionLinear
не поддерживает ограничение равенства на β 0.
Если вы преобразуете традиционно обученную модель линейной регрессии (RegressionLinear
) создать Mdl
, FitBias
задан значением ModelParameters.FitBias
свойство традиционно обученной модели.
Типы данных: логический
Mu
— Средние значения предиктора[]
Это свойство доступно только для чтения.
Предиктор означает в виде числового вектора.
Если Mu
пустой массив []
и вы задаете 'Standardize',true
, инкрементные подходящие функции устанавливают Mu
к средним значениям переменного предиктора, оцененным во время оценки, период задан EstimationPeriod
.
Вы не можете задать Mu
непосредственно.
Типы данных: single
| double
Sigma
— Стандартные отклонения предиктора[]
Это свойство доступно только для чтения.
Стандартные отклонения предиктора в виде числового вектора.
Если Sigma
пустой массив []
и вы задаете 'Standardize',true
, инкрементные подходящие функции устанавливают Sigma
к стандартным отклонениям переменного предиктора, оцененным во время оценки, период задан EstimationPeriod
.
Вы не можете задать Sigma
непосредственно.
Типы данных: single
| double
Solver
— Метод минимизации целевой функции'scale-invariant'
(значение по умолчанию) | 'sgd'
| 'asgd'
Это свойство доступно только для чтения.
Метод минимизации целевой функции в виде значения в этой таблице.
Значение | Описание | Примечания |
---|---|---|
'scale-invariant' | Адаптивный инвариантный к масштабу решатель для пошагового обучения [1] | Этот алгоритм является свободным параметром и может адаптироваться к различиям в шкалах предиктора. Попробуйте этот алгоритм перед использованием SGD или ASGD. |
'sgd' | Stochastic gradient descent (SGD) [3][2] | Чтобы обучаться эффективно с SGD, стандартизируйте данные и задайте соответствующие значения для гиперпараметров с помощью опций, перечисленных в SGD и Параметрах Решателя ASGD. |
'asgd' | Средний стохастический градиентный спуск (ASGD) [4] | Чтобы обучаться эффективно с ASGD, стандартизируйте данные и задайте соответствующие значения для гиперпараметров с помощью опций, перечисленных в SGD и Параметрах Решателя ASGD. |
Если вы преобразуете традиционно обученную модель линейной регрессии (RegressionLinear
) создать Mdl
, чей ModelParameters.Solver
свойством является 'sgd'
или 'asgd'
, Solver
задан ModelParameters.Solver
свойство традиционно обученной модели.
Типы данных: char |
string
SolverOptions
— Объективные настройки решателяЭто свойство доступно только для чтения.
Объективные настройки решателя в виде массива структур. Поля SolverOptions
свойства, характерные для заданного решателя Solver
.
Типы данных: struct
BatchSize
— Мини-пакетный размерЭто свойство доступно только для чтения.
Мини-пакетный размер в виде положительного целого числа. В каждой итерации во время обучения, incrementalRegressionLinear
использование min(BatchSize,numObs)
наблюдения, чтобы вычислить подградиент, где numObs
количество наблюдений в обучающих данных, переданных fit
или updateMetricsAndFit
.
Если вы преобразуете традиционно обученную модель линейной регрессии (RegressionLinear
) создать Mdl
, чей ModelParameters.Solver
свойством является 'sgd'
или 'asgd'
, BatchSize
задан ModelParameters.BatchSize
свойство традиционно обученной модели. В противном случае значением по умолчанию является 10
.
Типы данных: single
| double
Lambda
— Гребень (L 2) сила срока регуляризацииЭто свойство доступно только для чтения.
Гребень (L 2) сила срока регуляризации в виде неотрицательного скаляра.
Если вы преобразуете традиционно обученную линейную модель для гребенчатой регрессии (RegressionLinear
объект с Regularization
свойство, равное 'ridge (L2)'
) создать Mdl
\lambda
задан значением Lambda
свойство традиционно обученной модели. В противном случае значением по умолчанию является 1e-5
.
Типы данных: double |
single
LearnRate
— Скорость обучения'auto'
| положительная скалярная величинаЭто свойство доступно только для чтения.
Скорость обучения в виде 'auto'
или положительная скалярная величина. LearnRate
управляет размером шага оптимизации путем масштабирования объективного подградиента.
Когда вы задаете 'auto'
:
Если EstimationPeriod
0
, начальной скоростью обучения является 0.7
.
Если EstimationPeriod
> 0 , начальной скоростью обучения является
1/sqrt(1+max(sum(X.^2,obsDim)))
, где obsDim
1
если наблюдения составляют столбцы данных о предикторе и 2
в противном случае. fit
и updateMetricsAndFit
установите значение, когда вы передадите данные модели и обучающие данные к также.
Если вы преобразуете традиционно обученную модель линейной регрессии (RegressionLinear
) создать Mdl
, чей ModelParameters.Solver
свойством является 'sgd'
или 'asgd'
, LearnRate
задан ModelParameters.LearnRate
свойство традиционно обученной модели.
LearnRateSchedule
свойство определяет скорость обучения для последующих циклов изучения.
Пример: 'LearnRate',0.001
Типы данных: single
| double
| char
| string
LearnRateSchedule
— Расписание скорости обучения'decaying'
(значение по умолчанию) | 'constant'
Это свойство доступно только для чтения.
Расписание скорости обучения в виде значения в этой таблице, где LearnRate
задает начальную скорость обучения ɣ 0.
Значение | Описание |
---|---|
'constant' | Скоростью обучения является ɣ 0 для всех циклов изучения. |
'decaying' | Скорость обучения при изучении цикла t
|
Если вы преобразуете традиционно обученную модель линейной регрессии (RegressionLinear
) создать Mdl
, чей ModelParameters.Solver
свойством является 'sgd'
или 'asgd'
, LearnRate
'decaying'
.
Типы данных: char |
string
Shuffle
— Отметьте для перестановки наблюдений в пакетеtrue
(значение по умолчанию) | false
Это свойство доступно только для чтения.
Отметьте для перестановки наблюдений в пакете в каждом цикле изучения в виде значения в этой таблице.
Значение | Описание |
---|---|
true | Программное обеспечение переставляет наблюдения в каждом входящем пакете данных прежде, чем обработать набор. Это действие уменьшает смещение, вызванное схемой выборки. |
false | Программные процессы данные в порядке получены. |
Типы данных: логический
IsWarm
— Отметьте указание, отслеживает ли модель показатели производительностиfalse
| true
Это свойство доступно только для чтения.
Отметьте указание, отслеживает ли инкрементная модель показатели производительности в виде false
или true
. Инкрементная модель Mdl
warm (IsWarm
становится true
) после того, как инкрементные подходящие функции соответствуют MetricsWarmupPeriod
наблюдения к инкрементной модели (то есть, EstimationPeriod
+ MetricsWarmupPeriod
наблюдения).
Значение | Описание |
---|---|
true | Инкрементная модель Mdl является теплым. Следовательно, updateMetrics и updateMetricsAndFit отследите показатели производительности в Metrics свойство Mdl . |
false | updateMetrics и updateMetricsAndFit не отслеживайте показатели производительности. |
Типы данных: логический
Metrics
— Метрики производительности моделиЭто свойство доступно только для чтения.
Метрики производительности модели, обновленные во время пошагового обучения updateMetrics
и updateMetricsAndFit
В виде таблицы с двумя столбцами и строками m, где m является количеством метрик, заданных 'Metrics'
аргумент пары "имя-значение".
Столбцы Metrics
помечены Cumulative
и Window
.
Cumulative
: Элемент j
производительность модели, как измерено метрическим j
, со времени модель стала теплой (IsWarm является 1
).
Window
: Элемент j
производительность модели, как измерено метрическим j
, оцененный по всем наблюдениям в окне задан MetricsWindowSize
свойство. Обновления программного обеспечения Window
после того, как это обрабатывает MetricsWindowSize
наблюдения.
Строки помечены заданными метриками. Для получения дополнительной информации смотрите 'Metrics'
.
Типы данных: table
MetricsWarmupPeriod
— Количество подгонки наблюдений прежде, чем отследить показатели производительности
(значение по умолчанию) | неотрицательное целое числоЭто свойство доступно только для чтения.
Количество наблюдений, инкрементная модель должна быть подходящей к тому, прежде чем это отследит показатели производительности в своем Metrics
свойство в виде неотрицательного целого числа.
Для получения дополнительной информации смотрите IsWarm и показатели производительности.
Типы данных: single
| double
MetricsWindowSize
— Количество наблюдений, чтобы использоваться для расчета показателей производительности окна
(значение по умолчанию) | положительное целое числоЭто свойство доступно только для чтения.
Количество наблюдений, чтобы использоваться для расчета показателей производительности окна в виде положительного целого числа.
Для получения дополнительной информации об опциях показателей производительности смотрите показатели производительности.
Типы данных: single
| double
fit | Обучите модель пошагового обучения |
updateMetricsAndFit | Обновите метрики производительности модели пошагового обучения на новых данных, затем обучите модель |
updateMetrics | Обновите метрики производительности модели пошагового обучения на новых данных |
loss | Потеря модели пошагового обучения на пакете данных |
predict | Предскажите ответы для новых наблюдений из модели пошагового обучения |
Создайте инкрементную линейную модель по умолчанию для регрессии.
Mdl = incrementalRegressionLinear()
Mdl = incrementalRegressionLinear IsWarm: 0 Metrics: [1x2 table] ResponseTransform: 'none' Beta: [0x1 double] Bias: 0 Learner: 'svm' Properties, Methods
Mdl.EstimationPeriod
ans = 1000
Mdl
incrementalRegressionLinear
объект модели. Все его свойства только для чтения.
Mdl
должно быть подходящим к данным, прежде чем можно будет использовать их, чтобы выполнить любые другие операции. Программное обеспечение устанавливает период оценки на 1 000 потому что половина ширины эпсилона нечувствительная полоса Epsilon
неизвестно. Можно установить Epsilon
к положительному скаляру с плавающей точкой при помощи 'Epsilon'
аргумент пары "имя-значение". Это действие приводит к периоду оценки по умолчанию 0.
Загрузите набор данных манипулятора.
load robotarm
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Подбирайте инкрементную модель к обучающим данным купленное использование updateMetricsAndfit
функция. Чтобы симулировать поток данных подбирают модель во фрагментах 50 наблюдений за один раз. В каждой итерации:
Процесс 50 наблюдений.
Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.
Хранилище , совокупные метрики и метрики окна, чтобы видеть, как они развиваются во время пошагового обучения.
% Preallocation n = numel(ytrain); numObsPerChunk = 50; nchunk = floor(n/numObsPerChunk); ei = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); beta1 = zeros(nchunk,1); % Incremental fitting for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1); iend = min(n,numObsPerChunk*j); idx = ibegin:iend; Mdl = updateMetricsAndFit(Mdl,Xtrain(idx,:),ytrain(idx)); ei{j,:} = Mdl.Metrics{"EpsilonInsensitiveLoss",:}; beta1(j + 1) = Mdl.Beta(1); end
IncrementalMdl
incrementalRegressionLinear
объект модели, обученный на всех данных в потоке. В то время как updateMetricsAndFit
обрабатывает первые 1 000 наблюдений, это хранит буфер, чтобы оценить Epsilon
; функция не соответствует коэффициентам до окончания этого периода оценки. Во время пошагового обучения и после того, как модель подогревается, updateMetricsAndFit
проверяет эффективность модели на входящем наблюдении, и затем подбирает модель к тому наблюдению.
Чтобы видеть, как показатели производительности и развитый во время обучения, постройте их на отдельных подграфиках.
figure; subplot(2,1,1) plot(beta1) ylabel('\beta_1') xlim([0 nchunk]); xline(Mdl.EstimationPeriod/numObsPerChunk,'r-.'); subplot(2,1,2) h = plot(ei.Variables); xlim([0 nchunk]); ylabel('Epsilon Insensitive Loss') xline(Mdl.EstimationPeriod/numObsPerChunk,'r-.'); xline((Mdl.EstimationPeriod + Mdl.MetricsWarmupPeriod)/numObsPerChunk,'g-.'); legend(h,ei.Properties.VariableNames) xlabel('Iteration')
График предлагает тот updateMetricsAndFit
делает следующее:
После периода оценки (сначала 20 итераций), подгонка во время всех итераций пошагового обучения.
Вычислите показатели производительности после метрического периода прогрева только.
Вычислите совокупные метрики во время каждой итерации.
Вычислите метрики окна после обработки 500 наблюдений (4 итерации).
Подготовьте инкрементного ученика регрессии путем определения метрического периода прогрева, во время который updateMetricsAndFit
функция только подбирает модель. Задайте метрический размер окна 500 наблюдений. Обучите модель при помощи SGD и настройте размер пакета SGD, скорость обучения и параметр регуляризации.
Загрузите набор данных манипулятора.
load robotarm
n = numel(ytrain);
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Создайте инкрементную линейную модель для регрессии. Сконфигурируйте модель можно следующим образом:
Задайте решатель SGD.
Примите, что гребенчатое значение параметров регуляризации 0,001, размер пакета SGD 20, скорость обучения 0,002, и половина ширины эпсилона insenstivie полоса для SVM 0,05 работают хорошо на проблему.
Укажите, что инкрементные подходящие функции обрабатывают сырые данные (нестандартизированные) данные о предикторе.
Задайте метрический период прогрева 1 000 наблюдений.
Задайте метрический размер окна 500 наблюдений.
Отследите эпсилон нечувствительная потеря, MSE и средняя абсолютная погрешность (MAE), чтобы измерить уровень модели. Программное обеспечение поддерживает эпсилон нечувствительная потеря и MSE. Создайте анонимную функцию, которая измеряет абсолютную погрешность каждого нового наблюдения. Создайте массив структур, содержащий имя MeanAbsoluteError
и его соответствующая функция.
maefcn = @(z,zfit)abs(z - zfit); maemetric = struct("MeanAbsoluteError",maefcn); Mdl = incrementalRegressionLinear('Epsilon',0.05,... 'Solver','sgd','Lambda',0.001,'BatchSize',20,'LearnRate',0.002,... 'Standardize',false,... 'MetricsWarmupPeriod',1000,'MetricsWindowSize',500,... 'Metrics',{'epsiloninsensitive' 'mse' maemetric})
Mdl = incrementalRegressionLinear IsWarm: 0 Metrics: [3x2 table] ResponseTransform: 'none' Beta: [0x1 double] Bias: 0 Learner: 'svm' Properties, Methods
Mdl
incrementalRegressionLinear
объект модели сконфигурирован для пошагового обучения без периода оценки.
Подбирайте инкрементную модель к данным при помощи updateMetricsAndfit
функция. В каждой итерации:
Симулируйте поток данных путем обработки фрагмента 50 наблюдений. Обратите внимание на то, что разделите размер на блоки, отличается от размера пакета SGD.
Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.
Сохраните предполагаемый коэффициент , совокупные метрики и метрики окна, чтобы видеть, как они развиваются во время пошагового обучения.
% Preallocation numObsPerChunk = 50; nchunk = floor(n/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"]); beta10 = zeros(nchunk,1); % Incremental fitting for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1); iend = min(n,numObsPerChunk*j); idx = ibegin:iend; Mdl = updateMetricsAndFit(Mdl,Xtrain(idx,:),ytrain(idx)); ei{j,:} = Mdl.Metrics{"EpsilonInsensitiveLoss",:}; mse{j,:} = Mdl.Metrics{"MeanSquaredError",:}; mae{j,:} = Mdl.Metrics{"MeanAbsoluteError",:}; beta10(j + 1) = Mdl.Beta(10); end
IncrementalMdl
incrementalRegressionLinear
объект модели, обученный на всех данных в потоке. Во время пошагового обучения и после того, как модель подогревается, updateMetricsAndFit
проверяет эффективность модели на входящем наблюдении, и затем подбирает модель к тому наблюдению.
Чтобы видеть, как показатели производительности и развитый во время обучения, постройте их на отдельных подграфиках.
figure; subplot(2,2,1) plot(beta10) ylabel('\beta_{10}') xlim([0 nchunk]); xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); xlabel('Iteration') subplot(2,2,2) h = plot(ei.Variables); xlim([0 nchunk]); ylabel('Epsilon Insensitive Loss') xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,ei.Properties.VariableNames) xlabel('Iteration') subplot(2,2,3) h = plot(mse.Variables); xlim([0 nchunk]); ylabel('MSE') xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,mse.Properties.VariableNames) xlabel('Iteration') subplot(2,2,4) h = plot(mae.Variables); xlim([0 nchunk]); ylabel('MAE') xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,mae.Properties.VariableNames) xlabel('Iteration')
График предлагает тот updateMetricsAndFit
делает следующее:
Подгонка во время всех итераций пошагового обучения.
Вычислите показатели производительности после метрического периода прогрева только.
Вычислите совокупные метрики во время каждой итерации.
Вычислите метрики окна после обработки 500 наблюдений (10 итераций).
Обучите модель линейной регрессии при помощи fitrlinear
, преобразуйте его в инкрементного ученика, отследите его эффективность и соответствуйте ему к потоковой передаче данных. Перенесите опции обучения от традиционного до пошагового обучения.
Загрузите и предварительно обработайте данные
Загрузите 2 015 наборов данных корпуса Нью-Йорк Сити и переставьте данные. Для получения дополнительной информации о данных смотрите, что Нью-Йорк Сити Открывает Данные.
load NYCHousing2015 rng(1); % For reproducibility n = size(NYCHousing2015,1); idxshuff = randsample(n,n); NYCHousing2015 = NYCHousing2015(idxshuff,:);
Предположим что данные, собранные из Манхэттена (BOROUGH
= 1 ) был собран с помощью нового метода, который удваивает его качество. Создайте переменную веса, которая приписывает
2
к наблюдениям, забранным из Манхэттена и 1
ко всем другим наблюдениям.
NYCHousing2015.W = ones(n,1) + (NYCHousing2015.BOROUGH == 1);
Извлеките переменную отклика 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}]';
Обучите модель линейной регрессии
Подбирайте модель линейной регрессии к случайной выборке половины данных.
idxtt = randsample([true false],n,true); TTMdl = fitrlinear(X(:,idxtt),Y(idxtt),'ObservationsIn','columns',... 'Weights',NYCHousing2015.W(idxtt))
TTMdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [313×1 double] Bias: 0.1116 Lambda: 2.1977e-05 Learner: 'svm' Properties, Methods
TTMdl
RegressionLinear
объект модели, представляющий традиционно обученную модель линейной регрессии.
Преобразуйте обученную модель
Преобразуйте традиционно обученную модель линейной регрессии в модель линейной регрессии для пошагового обучения.
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = incrementalRegressionLinear IsWarm: 1 Metrics: [1×2 table] ResponseTransform: 'none' Beta: [313×1 double] Bias: 0.1116 Learner: 'svm' Properties, Methods
Отдельно отследите показатели производительности и подбирайте модель
Выполните пошаговое обучение на остальной части данных при помощи updateMetrics
и fit
функции. Симулируйте поток данных путем обработки 500 наблюдений за один раз. В каждой итерации:
Вызовите updateMetrics
обновить совокупный эпсилон и эпсилон окна нечувствительная потеря модели, учитывая входящий фрагмент наблюдений. Перезапишите предыдущую инкрементную модель, чтобы обновить потери в Metrics
свойство. Обратите внимание на то, что функция не подбирает модель к фрагменту данных — фрагмент является "новыми" данными для модели. Укажите, что наблюдения ориентированы в столбцах и задают веса наблюдения.
Вызовите fit
подбирать модель к входящему фрагменту наблюдений. Перезапишите предыдущую инкрементную модель, чтобы обновить параметры модели. Укажите, что наблюдения ориентированы в столбцах и задают веса наблюдения.
Сохраните потери и в последний раз оцененный коэффициент .
% Preallocation idxil = ~idxtt; nil = sum(idxil); numObsPerChunk = 500; nchunk = floor(nil/numObsPerChunk); ei = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); beta313 = [IncrementalMdl.Beta(end); zeros(nchunk,1)]; Xil = X(:,idxil); Yil = Y(idxil); Wil = NYCHousing2015.W(idxil); % Incremental fitting for j = 1:nchunk ibegin = min(nil,numObsPerChunk*(j-1) + 1); iend = min(nil,numObsPerChunk*j); idx = ibegin:iend; IncrementalMdl = updateMetrics(IncrementalMdl,Xil(:,idx),Yil(idx),... 'ObservationsIn','columns','Weights',Wil(idx)); ei{j,:} = IncrementalMdl.Metrics{"EpsilonInsensitiveLoss",:}; IncrementalMdl = fit(IncrementalMdl,Xil(:,idx),Yil(idx),'ObservationsIn','columns',... 'Weights',Wil(idx)); beta313(j + 1) = IncrementalMdl.Beta(end); end
IncrementalMdl
incrementalRegressionLinear
объект модели, обученный на всех данных в потоке.
В качестве альтернативы можно использовать updateMetricsAndFit
обновить показатели производительности модели, учитывая новый фрагмент данных, и затем подбирать модель к данным.
Постройте график трассировки показателей производительности и оцененного коэффициента .
figure; subplot(2,1,1) h = plot(ei.Variables); xlim([0 nchunk]); ylabel('Epsilon Insensitive Loss') legend(h,ei.Properties.VariableNames) subplot(2,1,2) plot(beta313) ylabel('\beta_{313}') xlim([0 nchunk]); xlabel('Iteration')
Совокупная потеря постепенно изменяется с каждой итерацией (фрагмент 500 наблюдений), тогда как потеря окна переходит. Поскольку метрическое окно 200 по умолчанию, updateMetrics
измеряет уровень на основе последних 200 наблюдений в каждых 500 фрагментах наблюдения.
изменения резко, затем выравнивается как fit
фрагменты процессов наблюдений.
Incremental learning или online learning, является ветвью машинного обучения, касавшегося обработки входящих данных от потока данных, возможно, учитывая мало ни к какому знанию распределения переменных предикторов, аспектов предсказания или целевой функции (включая настройку значений параметров), или помечены ли наблюдения. Пошаговое обучение отличается от традиционного машинного обучения, где достаточно маркированных данных доступно, чтобы соответствовать к модели, выполните перекрестную проверку, чтобы настроить гиперпараметры и вывести распределение предиктора.
Учитывая входящие наблюдения, модель пошагового обучения обрабатывает данные любым из следующих способов, но обычно этим порядком:
Предскажите метки.
Измерьте прогнозирующий уровень.
Проверяйте на структурные пропуски или дрейфуйте в модели.
Подбирайте модель к входящим наблюдениям.
adaptive scale-invariant solver for incremental learning, введенный в [1], является основанным на градиентном спуске объективным решателем для учебных линейных прогнозных моделей. Решатель является гиперпараметром, свободным, нечувствительным к различиям в шкалах переменного предиктора, и не требует предварительных знаний распределения переменных предикторов. Эти характеристики делают его хорошо подходящий для пошагового обучения.
Стандартный SGD и решатели ASGD чувствительны к отличающимся шкалам среди переменных предикторов, приводящих к моделям, которые могут выполнить плохо. Чтобы достигнуть лучшей точности с помощью SGD и ASGD, можно стандартизировать данные о предикторе и настроить регуляризацию, и параметры скорости обучения могут потребовать настройки. Для традиционного машинного обучения достаточно данных доступно, чтобы включить гиперпараметр, настраивающийся стандартизацией предиктора и перекрестной проверкой. Однако для пошагового обучения, достаточно данных не может быть доступным (например, наблюдения могут быть доступными только по одному), и распределение предикторов может быть неизвестным. Эти характеристики делают настройку параметра и стандартизацию предиктора трудными или невозможными сделать во время пошагового обучения.
Инкрементные подходящие функции для регрессии fit
и updateMetricsAndFit
используйте более консервативную версию ScInOL1 алгоритма.
В период оценки, инкрементные подходящие функции fit
и updateMetricsAndFit
используйте первый входящий EstimationPeriod
наблюдения, чтобы оценить (настраивают) гиперпараметры, требуемые для инкрементного обучения. Эта таблица описывает гиперпараметры и когда они оцениваются или настраиваются. Оценка происходит только когда EstimationPeriod
положительно.
Гиперпараметр | Свойство модели | Использование | Предполагаемые гиперпараметры |
---|---|---|---|
Средние значения предиктора и стандартные отклонения |
| Стандартизируйте данные о предикторе | Когда оба этих условия применяются:
|
Скорость обучения | LearnRate | Настройте размер шага решателя | Когда оба этих условия применяются:
|
Половина ширины эпсилона нечувствительная полоса | \epsilon | Контрольное число векторов поддержки | Когда оба этих условия применяются:
|
Функции соответствуют только последнему наблюдению периода оценки к инкрементной модели, и они не используют ни одного из наблюдений, чтобы отследить эффективность модели. В конце периода оценки функции обновляют свойства, которые хранят гиперпараметры.
Если функции пошагового обучения сконфигурированы, чтобы стандартизировать переменные предикторы, они делают настолько использующий средние значения и стандартные отклонения, сохраненные в Mu
и Sigma
свойства модели Mdl
пошагового обучения.
Когда вы устанавливаете 'Standardize',true
и положительный период оценки (см. EstimationPeriod), и Mdl.Mu
и Mdl.Sigma
пустые, инкрементные подходящие оценочные средние значения функций и стандартные отклонения с помощью наблюдений периода оценки.
Если вы устанавливаете 'Standardize','auto'
(значение по умолчанию), следующие условия применяются.
Если вы создаете incrementalRegressionLinear
путем преобразования традиционно обученной модели регрессии SVM (CompactRegressionSVM
или RegressionSVM
), и Mu
и Sigma
свойства преобразовываемой модели являются пустыми массивами []
, функции пошагового обучения не стандартизируют переменные предикторы. Если Mu
и Sigma
свойства преобразовываемой модели непусты функции пошагового обучения стандартизируют переменные предикторы с помощью заданных средних значений и стандартных отклонений. Инкрементные подходящие функции не оценивают новые средние значения и стандартные отклонения независимо от длины периода оценки.
Если вы создаете incrementalRegressionLinear
путем преобразования модели линейной регрессии (RegressionLinear
), функции пошагового обучения не стандартизирует данные независимо от длины периода оценки.
Если вы не преобразуете традиционно обученную модель, функции пошагового обучения стандартизируют данные о предикторе только, когда вы задаете решатель SGD (см. Solver
) и положительный период оценки (см. EstimationPeriod).
Когда инкрементные подходящие функции оценивают средние значения предиктора и стандартные отклонения, функции вычисляют взвешенные средние и взвешенные стандартные отклонения с помощью наблюдений периода оценки. А именно, функции стандартизируют предиктор 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
и буфер весов наблюдения.
Заполните элементы метрического буфера с производительностью модели на основе пакетов входящих наблюдений и сохраните соответствующие веса наблюдений в буфере весов.
Когда буфер заполнен, перезапись Mdl.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.