Линейная модель двоичной классификации для инкрементного обучения
incrementalClassificationLinear
создает incrementalClassificationLinear
объект модели, который представляет двоичную классификационную линейную модель для инкрементного обучения. Поддерживаемые учащиеся включают машину опорных векторов (SVM) и логистическую регрессию.
В отличие от другого Statistics and Machine Learning Toolbox™ объектов модели, incrementalClassificationLinear
можно вызвать непосредственно. Кроме того, можно задать опции обучения, такие как строения метрики эффективности, значения параметров и решатель цели, прежде чем подгонять модель к данным. После создания incrementalClassificationLinear
объект подготовлен для инкрементного обучения.
incrementalClassificationLinear
лучше всего подходит для инкрементного обучения. Для традиционного подхода к обучению SVM или линейной модели для двоичной классификации (такой как создание модели путем подбора ее к данным, выполнение перекрестной валидации, настройка гиперпараметров и так далее), смотрите fitcsvm
или fitclinear
. Для многоклассового инкрементного обучения с использованием наивного алгоритма Байеса смотрите incrementalClassificationNaiveBayes
.
Можно создать incrementalClassificationLinear
моделировать объект несколькими способами:
Вызов функции непосредственно - настройте опции инкрементного обучения или задайте начальные значения для параметров линейной модели и гиперпараметров, вызывая incrementalClassificationLinear
непосредственно. Этот подход лучше всего, когда у вас еще нет данных или вы хотите немедленно начать инкрементное обучение.
Преобразуйте традиционно обученную модель - Чтобы инициализировать двоичную классификационную линейную модель для инкрементного обучения с помощью коэффициентов модели и гиперпараметров обученной SVM или двоичной классификации линейного объекта модели, можно преобразовать традиционно обученную модель в incrementalClassificationLinear
моделировать объект путем передачи его в incrementalLearner
функция. Эта таблица содержит ссылки на соответствующие страницы с описанием.
Объект модели преобразования | Функция преобразования |
---|---|
ClassificationSVM или CompactClassificationSVM | incrementalLearner |
ClassificationLinear | incrementalLearner |
Вызовите функцию инкрементного обучения - fit
, updateMetrics
, и updateMetricsAndFit
принять сконфигурированную incrementalClassificationLinear
моделируйте объект и данные как вход и возвращайте incrementalClassificationLinear
объект модели обновлен информацией, полученной из модели входа, и данными.
возвращает линейный объект модели двоичной классификации по умолчанию для инкрементного обучения, Mdl
= incrementalClassificationLinear()Mdl
. Свойства модели по умолчанию содержат заполнители для неизвестных параметров модели. Необходимо обучить модель по умолчанию, прежде чем можно будет отследить ее эффективность или сгенерировать предсказания из нее.
устанавливает свойства и дополнительные опции, используя аргументы пары "имя-значение". Заключайте каждое имя в кавычки. Для примера, Mdl
= incrementalClassificationLinear(Name
,Value
)incrementalClassificationLinear('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'
- Моделируйте метрики производительности для отслеживания во время инкрементного обучения"classiferror"
(дефолт) | натягивает вектор | указатель на функцию | вектор камеры | массив структур | "binodeviance"
| "exponential"
| "hinge"
| "logit"
| "quadratic"
| ...Моделируйте метрики производительности для отслеживания во время инкрементного обучения, заданные как встроенное имя функции потерь, строковый вектор имен, указатель на функцию (@metricName
), массив структур указателей на функцию или вектор камер с именами, указатели на функцию или массивы структур.
Когда Mdl
warm (см. IsWarm), updateMetrics
и updateMetricsAndFit
отследите показатели эффективности в свойстве Metrics Mdl
.
В следующей таблице перечислены встроенные имена функции потерь. Можно задать больше одного при помощи строкового вектора.
Имя | Описание |
---|---|
"binodeviance" | Биномиальное отклонение |
"classiferror" | Ошибка классификации |
"exponential" | Экспоненциал |
"hinge" | Стержень |
"logit" | Логистический |
"quadratic" | Квадратный |
Для получения дополнительной информации о встроенных функциях потерь смотрите loss
.
Пример: 'Metrics',["classiferror" "hinge"]
Чтобы задать пользовательскую функцию, которая возвращает метрику эффективности, используйте обозначение указателя на функцию. Функция должна иметь следующую форму:
metric = customMetric(C,S)
Выходной аргумент metric
является n-на-1 числовым вектором, где каждый элемент является потерей соответствующего наблюдения в данных, обработанных инкрементальными функциями обучения во время цикла обучения.
Вы выбираете имя функции (customMetric
).
C
является n -by-2 логической матрицей с строками, указывающими класс, к которому принадлежит соответствующее наблюдение. Порядок столбцов соответствует порядку классов в ClassNames
свойство. Создание C
путем установки C
= (p
, q
)1
, если наблюдение
находится в p
, для каждого наблюдения в заданных данных. Установите другой элемент в строку q классов
на p
0
.
S
является n -by-2 числовой матрицей предсказанных классификационных оценок. S
аналогичен Score
выхода predict
, где строки соответствуют наблюдениям в данных, а порядок столбцов соответствует порядку классов в ClassNames
свойство. S
- классификационная оценка наблюдения (p
, q
)
классифицируется в классах p
.q
Чтобы задать несколько пользовательских метрик и назначить пользовательское имя каждому, используйте массив структур. Чтобы задать комбинацию встроенных и пользовательских метрик, используйте вектор камеры.
Пример: 'Metrics',struct('Metric1',@customMetric1,'Metric2',@customMetric2)
Пример: 'Metrics',{@customMetric1 @customeMetric2 'logit' struct('Metric3',@customMetric3)}
updateMetrics
и updateMetricsAndFit
хранить указанные метрики в таблице в Metrics
свойство. Тип данных Metrics
определяет имена строк таблицы.
'Metrics' Тип данных значения | Описание Metrics Имя строки свойства | Пример |
---|---|---|
Строка или вектор символов | Имя соответствующей встроенной метрики | Имя строки для "classiferror" является "ClassificationError" |
Массив структур | Имя поля | Имя строки для struct('Metric1',@customMetric1) является "Metric1" |
Указатель на функцию для функции, сохраненной в программном файле | Имя функции | Имя строки для @customMetric является "customMetric" |
Анонимная функция | , где метрический в Metrics | Имя строки для @(C,S)customMetric(C,S)... является CustomMetric_1 |
Для получения дополнительной информации о опциях показателей эффективности см. Раздел «Показатели эффективности».
Типы данных: char
| string
| struct
| cell
| function_handle
'Standardize'
- Флаг для стандартизации данных предиктора'auto'
(по умолчанию) | false
| true
Флаг для стандартизации данных предиктора, заданный как разделенная разделенными запятой парами, состоящая из 'Standardize'
и значение в этой таблице.
Значение | Описание |
---|---|
'auto' | incrementalClassificationLinear определяет, нужно ли стандартизировать переменные предиктора. См. Раздел «Стандартизация данных» |
true | Программное обеспечение стандартизирует данные предиктора. Для получения дополнительной информации см. раздел Стандартизация данных. |
false | Программное обеспечение не стандартизирует данные предиктора. |
Пример: 'Standardize',true
Типы данных: logical
| char
| string
Вы можете задать большинство свойств, используя синтаксис аргумента пары "имя-значение" только при вызове incrementalClassificationLinear
непосредственно. Вы можете задать некоторые свойства при вызове incrementalLearner
для преобразования традиционно обученной модели. Вы не можете задать свойства FittedLoss
, NumTrainingObservations
, Mu
, Sigma
, SolverOptions
, и IsWarm
.
Beta
- Коэффициенты линейной модели βЭто свойство доступно только для чтения.
Линейные коэффициенты модели β, заданный как NumPredictors
-by-1 числовой вектор.
Если вы преобразовываете традиционно обученную модель, чтобы создать Mdl
, Beta
задается значением Beta
свойство традиционно обученной модели. В противном случае по умолчанию Beta
является zeros(NumPredictors,1)
.
Типы данных: single
| double
Bias
- Моделируйте точку пересечения β 0Это свойство доступно только для чтения.
Моделируйте точку пересечения β 0, или термин смещения, заданный как числовой скаляр.
Если вы преобразовываете традиционно обученную модель, чтобы создать Mdl
, Bias
задается значением Bias
свойство традиционно обученной модели. В противном случае по умолчанию Bias
является 0
.
Типы данных: single
| double
ClassNames
- Уникальные метки классовЭто свойство доступно только для чтения.
Уникальные метки классов, используемые в обучении модели, заданные как категориальный или символьный массив, логический или числовой вектор или массив ячеек векторов символов. incrementalClassificationLinear
сохраняет заданный строковый вектор как массив ячеек из векторов символов. ClassNames
и данные отклика должны иметь совпадающий тип данных.
Если вы преобразовываете традиционно обученную модель, чтобы создать Mdl
, ClassNames
является ClassNames
свойство традиционно обученной модели.
В противном случае инкрементальные функции аппроксимации выводят ClassNames
во время обучения.
Типы данных: single
| double
| logical
| char
| cell
| categorical
FittedLoss
- Функция потерь, используемая для соответствия линейной модели'hinge'
| 'logit'
Это свойство доступно только для чтения.
Функция потерь, используемая для соответствия линейной модели, задается как 'hinge'
или 'logit'
.
Значение | Алгоритм | Функция потерь | Learner Значение |
---|---|---|---|
'hinge' | Поддерживайте векторную машину | Шарнир: | 'svm' |
'logit' | Логистическая регрессия | Отклонение (логистическое): | 'logistic' |
Learner
- Тип линейной классификационной модели'logistic'
| 'svm'
Это свойство доступно только для чтения.
Тип модели линейной классификации, заданный как 'logistic'
или 'svm'
.
В следующей таблице:
β является вектором p коэффициентов.
x является наблюдением от p переменных предиктора.
b - скалярное смещение.
Значение | Алгоритм | Функция потерь | FittedLoss Значение |
---|---|---|---|
'logistic' | Логистическая регрессия | Отклонение (логистическое): | 'logit' |
'svm' | Поддерживайте векторную машину | Шарнир: | 'hinge' |
Если вы преобразовываете традиционно обученную модель, чтобы создать Mdl
, Learner
является учеником традиционно обученной модели.
Если традиционно обученная модель ClassificationSVM
или CompactClassificationSVM
, Learner
является 'svm'
.
Если традиционно обученная модель ClassificationLinear
, Learner
- значение Learner
свойство традиционно обученной модели.
NumPredictors
- Количество переменных предиктора0
(по умолчанию) | неотрицательный числовой скалярЭто свойство доступно только для чтения.
Количество переменных предиктора, заданное как неотрицательный числовой скаляр.
Если вы преобразовываете традиционно обученную модель, чтобы создать Mdl
, NumPredictors
определяется конгруэнтным свойством традиционно обученной модели. В противном случае инкрементальные функции аппроксимации выводят NumPredictors
из данных предиктора во время обучения.
Типы данных: double
NumTrainingObservations
- Количество наблюдений, подходящих для инкрементальной модели0
(по умолчанию) | неотрицательный числовой скалярЭто свойство доступно только для чтения.
Количество наблюдений, подобранных к инкрементальной модели Mdl
, заданный как неотрицательный числовой скаляр. NumTrainingObservations
увеличивается при прохождении Mdl
и обучающих данных fit
или updateMetricsAndFit
.
Примечание
Если вы преобразовываете традиционно обученную модель, чтобы создать Mdl
, incrementalClassificationLinear
не добавляет количество наблюдений в соответствии с традиционно обученной моделью к NumTrainingObservations
.
Типы данных: double
Prior
- Вероятности предыдущего класса'empirical'
| 'uniform'
Это свойство доступно только для чтения.
Вероятности предыдущего класса, заданные как значение в этой таблице. Вы можете задать это свойство с помощью синтаксиса аргумента пары "имя-значение", но incrementalClassificationLinear
всегда сохраняет числовой вектор.
Значение | Описание |
---|---|
'empirical' | Функции инкрементного обучения выводят вероятности предыдущего класса из наблюдаемых относительных частот класса в данных отклика во время инкрементного обучения (после периода оценки EstimationPeriod ). |
'uniform' | Для каждого класса априорная вероятность равна 1/ K, где K - количество классов. |
числовой вектор | Пользовательские, нормированные предыдущие вероятности. Порядок элементов Prior соответствует элементам ClassNames свойство. |
Если вы преобразовываете традиционно обученную модель, чтобы создать Mdl
, incrementalClassificationLinear
использует Prior
свойство традиционно обученной модели.
В противном случае Prior
является 'empirical'
.
Типы данных: single
| double
ScoreTransform
- Функция преобразования счетаЭто свойство доступно только для чтения.
Функция преобразования счета, описывающая, как инкрементальные функции обучения преобразуют необработанные значения отклика, заданные как вектор символов, строковый скаляр или указатель на функцию. incrementalClassificationLinear
сохраняет заданное значение в виде указателя на вектор символов или функцию.
Эта таблица описывает доступные встроенные функции для преобразования счета.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e–2x) |
'invlogit' | журнал (x/( 1 - x)) |
'ismax' | Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0 |
'logit' | 1/(1 + e–x) |
'none' или 'identity' | x (без преобразования) |
'sign' | -1 для x < 0 0 для x = 0 1 для x > 0 |
'symmetric' | 2 x – 1 |
'symmetricismax' | Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1 |
'symmetriclogit' | 2/(1 + e–x) – 1 |
Для MATLAB® функцию или функцию, которую вы задаете, вводите указатель на функцию; для примера, 'ScoreTransform',@function
, где:
function
принимает n -by - K матрицу (исходные счета) и возвращает матрицу того же размера (преобразованные счета).
n - количество наблюдений, а строка j матрицы содержит счета j наблюдений.
K - количество классов numel(ClassNames)
, и столбец k является класс
.(k
)
По умолчанию:
Если вы преобразовываете традиционно обученную модель, чтобы создать Mdl
, ScoreTransform
определяется конгруэнтным свойством традиционно обученной модели. Для примера, если ScoreTransform
свойство традиционно обученной модели является функцией счета-в-апостериорно-вероятностного преобразования, вычисляемой fitPosterior
или fitSVMPosterior
, Mdl.ScoreTransform
содержит анонимную функцию.
ScoreTransform
является 'none'
когда Learner
является 'svm'
.
ScoreTransform
является 'logit'
когда Learner
является 'logistic'
.
Типы данных: char
| function_handle
EstimationPeriod
- Количество наблюдений, обработанных для оценки гиперпараметровЭто свойство доступно только для чтения.
Количество наблюдений, обработанных инкрементальной моделью для оценки гиперпараметров перед обучением или отслеживанием показателей эффективности, заданное в виде неотрицательного целого числа.
Примечание
Если Mdl
подготовлен к пошаговому обучению (указаны все гиперпараметры, необходимые для обучения), incrementalClassificationLinear
силы 'EstimationPeriod'
на 0
.
Если Mdl
не подготовлен к инкрементному обучению, incrementalClassificationLinear
устанавливает 'EstimationPeriod'
на 1000
.
Для получения дополнительной информации смотрите Период оценки.
Типы данных: single
| double
FitBias
- флаг включения линейной модели точки пересеченияtrue
| false
Это свойство доступно только для чтения.
Флаг включения линейной модели точки пересечения, заданный как true
или false
.
Значение | Описание |
---|---|
true | incrementalClassificationLinear включает термин смещения, β 0 в линейной модели, причем инкрементальные функции аппроксимации подгонки к данным. |
false | incrementalClassificationLinear устанавливает β 0 = 0. |
Если Bias
≠ 0, FitBias
должен быть true
. Другими словами, incrementalClassificationLinear
не поддерживает ограничение равенства для β 0.
Если вы преобразовываете традиционно обученную линейную модель классификации (ClassificationLinear
) для создания Mdl
, FitBias
задается значением ModelParameters.FitBias
свойство традиционно обученной модели.
Типы данных: logical
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' | Стохастический градиентный спуск (SGD) [3][2] |
|
'asgd' | Средний стохастический градиентный спуск (ASGD) [4] |
|
Если вы преобразовываете традиционно обученную линейную модель для двоичной классификации (ClassificationLinear
) для создания Mdl
, чьи ModelParameters.Solver
свойство 'sgd'
или 'asgd'
, Solver
задается как ModelParameters.Solver
свойство традиционно обученной модели.
Типы данных: char
| string
SolverOptions
- строения решателя задачЭто свойство доступно только для чтения.
Строения решателя задач, заданные как массив структур. Поля SolverOptions
являются свойствами, характерными для заданного решателя Solver
.
Типы данных: struct
BatchSize
- Размер мини-партииЭто свойство доступно только для чтения.
Мини-размер пакета, заданный как положительное целое число. При каждой итерации во время обучения, incrementalClassificationLinear
использует min(BatchSize,numObs)
наблюдения для вычисления подградиента, где numObs
количество наблюдений в обучающих данных, переданных fit
или updateMetricsAndFit
.
Если вы преобразовываете традиционно обученную линейную модель для двоичной классификации (ClassificationLinear
) для создания Mdl
, чьи ModelParameters.Solver
свойство 'sgd'
или 'asgd'
, BatchSize
задается как ModelParameters.BatchSize
свойство традиционно обученной модели. В противном случае значение по умолчанию является 10
.
Типы данных: single
| double
Lambda
- Коэффициент регуляризации гребня (L 2)Это свойство доступно только для чтения.
Коэффициент регуляризации гребня (L 2), заданный как неотрицательный скаляр.
Если вы преобразовываете традиционно обученную линейную модель для двоичной классификации с гребневым штрафом (ClassificationLinear
объект со свойством 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
установите значение, когда вы передаете данные модели и обучающие данные, равные либо.
Если вы преобразовываете традиционно обученную линейную модель для двоичной классификации (ClassificationLinear
) для создания Mdl
, чьи ModelParameters.Solver
свойство 'sgd'
или 'asgd'
, LearnRate
задается как ModelParameters.LearnRate
свойство традиционно обученной модели.
The LearnRateSchedule
свойство определяет скорость обучения для последующих циклов обучения.
Типы данных: single
| double
| char
| string
LearnRateSchedule
- График скорости обучения'decaying'
(по умолчанию) | 'constant'
Это свойство доступно только для чтения.
Расписание скорости обучения, заданное как значение в этой таблице, где LearnRate
задает начальную скорость обучения ɣ 0 .
Значение | Описание |
---|---|
'constant' | Эта скорость обучения является ɣ 0 для всех циклов обучения. |
'decaying' | Это скорость обучения на t цикла обучения
|
Если вы преобразовываете традиционно обученную линейную модель для двоичной классификации (ClassificationLinear
) для создания Mdl
, чьи ModelParameters.Solver
свойство 'sgd'
или 'asgd'
, LearnRate
является 'decaying'
.
Типы данных: char
| string
Shuffle
- Флаг для тасования наблюдений в пакетеtrue
(по умолчанию) | false
Это свойство доступно только для чтения.
Флаг для тасования наблюдений в пакете на каждом цикле обучения, заданный как значение в этой таблице.
Значение | Описание |
---|---|
true | Программа тасует наблюдения в каждом входящем пакете данных перед обработкой набора. Это действие уменьшает смещение, вызванное схемой дискретизации. |
false | Программное обеспечение обрабатывает данные в полученном порядке. |
Типы данных: logical
IsWarm
- Флаг, указывающий, отслеживает ли модель метрики эффективностиfalse
| true
Это свойство доступно только для чтения.
Флаг, указывающий, отслеживает ли инкрементальная модель метрики эффективности, заданный как false
или true
. Инкрементальная модель Mdl
является warm (IsWarm
становится true
) после инкрементных функций аппроксимации подгонки MetricsWarmupPeriod
наблюдения за инкрементальной моделью (то есть EstimationPeriod
+ MetricsWarmupPeriod
наблюдения).
Значение | Описание |
---|---|
true | Инкрементальная модель Mdl тепло. Следовательно, updateMetrics и updateMetricsAndFit отслеживать показатели эффективности в Metrics свойство Mdl . |
false | updateMetrics и updateMetricsAndFit не отслеживать метрики эффективности. |
Типы данных: logical
Metrics
- Моделируйте показатели производительностиЭто свойство доступно только для чтения.
Моделируйте метрики производительности, обновленные во время инкрементного обучения updateMetrics
и updateMetricsAndFit
, заданный как таблица с двумя столбцами и m строками, где m - количество метрик, заданное 'Metrics'
аргумент пары "имя-значение".
Столбцы Metrics
маркируются Cumulative
и Window
.
Cumulative
: j элемента
- производительность модели, измеренная метрикой j
, со времени, когда модель стала теплой (IsWarm есть 1
).
Window
: j элемента
- производительность модели, измеренная метрикой j
, рассчитывается по всем наблюдениям в окне, заданном MetricsWindowSize
свойство. Программное обеспечение обновляется Window
после того, как он обрабатывает MetricsWindowSize
наблюдения.
Строки помечены заданными метриками. Для получения дополнительной информации смотрите 'Metrics'
.
Типы данных: table
MetricsWarmupPeriod
- Количество наблюдений перед отслеживанием показателей эффективности1000
(по умолчанию) | неотрицательное целое числоЭто свойство доступно только для чтения.
Количество наблюдений, к которым должна соответствовать инкрементальная модель, прежде чем она отслеживает метрики эффективности в своей Metrics
свойство, заданное как неотрицательное целое число.
Для получения дополнительной информации см. «Показатели эффективности».
Типы данных: single
| double
MetricsWindowSize
- Количество наблюдений, используемых для вычисления показателей эффективности окна200
(по умолчанию) | положительное целое числоЭто свойство доступно только для чтения.
Количество наблюдений, используемых для вычисления показателей эффективности окна, заданное в виде положительного целого числа.
Для получения дополнительной информации о опциях показателей эффективности см. Раздел «Показатели эффективности».
Типы данных: single
| double
fit | Обучите линейную модель для инкрементного обучения |
updateMetricsAndFit | Обновляйте метрики эффективности в линейной модели для инкрементного обучения с учетом новых данных и обучайте модель |
updateMetrics | Обновляйте метрики эффективности в линейной модели для инкрементного обучения с учетом новых данных |
loss | Потеря линейной модели для инкрементного обучения на пакете данных |
predict | Спрогнозируйте отклики для новых наблюдений из линейной модели для инкрементного обучения |
Создайте пошаговую линейную модель SVM по умолчанию для двоичной классификации.
Mdl = incrementalClassificationLinear()
Mdl = incrementalClassificationLinear IsWarm: 0 Metrics: [1x2 table] ClassNames: [1x0 double] ScoreTransform: 'none' Beta: [0x1 double] Bias: 0 Learner: 'svm' Properties, Methods
Mdl
является incrementalClassificationLinear
объект модели. Все его свойства доступны только для чтения.
Mdl
необходимо соответствовать данным, прежде чем использовать их для выполнения любых других операций.
Загрузите набор данных о деятельности человека. Случайным образом перетасуйте данные.
load humanactivity n = numel(actid); rng(1); % For reproducibility idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
Для получения дополнительной информации о наборе данных введите Description
в командной строке.
Ответы могут быть одним из пяти классов: Сидя, Стоя, Ходьба, Бег, или Танцы. Дихотомизируйте ответ путем определения, движется ли субъект (actid
> 2).
Y = Y > 2;
Подгонка инкрементальной модели к обучающим данным с помощью updateMetricsAndfit
функция. Симулируйте поток данных путем обработки фрагментов по 50 наблюдений за раз. При каждой итерации:
Обработайте 50 наблюдений.
Перезаписать предыдущую инкрементальную модель на новую, подобранную входящему наблюдению.
Магазин , совокупные метрики и метрики окна, чтобы увидеть, как они развиваются во время инкрементного обучения.
% Preallocation numObsPerChunk = 50; nchunk = floor(n/numObsPerChunk); ce = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); beta1 = zeros(nchunk,1); % Incremental learning for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1); iend = min(n,numObsPerChunk*j); idx = ibegin:iend; Mdl = updateMetricsAndFit(Mdl,X(idx,:),Y(idx)); ce{j,:} = Mdl.Metrics{"ClassificationError",:}; beta1(j + 1) = Mdl.Beta(1); end
IncrementalMdl
является incrementalClassificationLinear
объект модели обучен на всех данных в потоке. Во время инкрементного обучения и после прогрева модели 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(ce.Variables); xlim([0 nchunk]); ylabel('Classification Error') xline(Mdl.EstimationPeriod/numObsPerChunk,'r-.'); xline((Mdl.EstimationPeriod + Mdl.MetricsWarmupPeriod)/numObsPerChunk,'g-.'); legend(h,ce.Properties.VariableNames) xlabel('Iteration')
График предполагает, что updateMetricsAndFit
делает следующее:
Подгонка во время всех итераций инкрементного обучения
Вычислите показатели эффективности только после периода прогрева метрики.
Вычислите совокупные метрики во время каждой итерации.
Вычислите метрики окна после обработки 500 наблюдений.
Подготовьте пошагового двоичного учащегося SVM путем определения периода разогрева метрики, в течение которого updateMetricsAndFit
функция подходит только для модели. Задайте размер окна метрики 500 наблюдений. Обучите модель с помощью SGD и настройте размер пакета SGD, скорость обучения и параметр регуляризации.
Загрузите набор данных о деятельности человека. Случайным образом перетасуйте данные.
load humanactivity
n = numel(actid);
idx = randsample(n,n);
X = feat(idx,:);
Y = actid(idx);
Для получения дополнительной информации о наборе данных введите Description
в командной строке.
Ответы могут быть одним из пяти классов: Сидя, Стоя, Ходя, Бега или Танцы. Дихотомизируйте ответ путем определения, движется ли субъект (actid
> 2).
Y = Y > 2;
Создайте инкрементальную линейную модель для двоичной классификации. Сконфигурируйте модель следующим образом:
Укажите, что инкрементальные функции подгонки обрабатывают необработанные (нестандартные) данные предиктора.
Задайте решатель SGD.
Предположим, что значение параметров регуляризации гребня 0,001, размер пакета SGD 20 и скорость обучения 0,002 хорошо работают для задачи.
Задайте период прогрева метрики 5000 наблюдений.
Задайте размер окна метрики 500 наблюдений.
Отслеживайте классификацию и шарнирные метрики ошибки, чтобы измерить эффективность модели.
Mdl = incrementalClassificationLinear('Standardize',false,... 'Solver','sgd','Lambda',0.001,'BatchSize',20,'LearnRate',0.002,... 'MetricsWarmupPeriod',5000,'MetricsWindowSize',500,... 'Metrics',{'classiferror' 'hinge'})
Mdl = incrementalClassificationLinear IsWarm: 0 Metrics: [2x2 table] ClassNames: [1x0 double] ScoreTransform: 'none' Beta: [0x1 double] Bias: 0 Learner: 'svm' Properties, Methods
Mdl
является incrementalClassificationLinear
объект модели, сконфигурированный для инкрементного обучения.
Подгонка инкрементной модели к остальной части данных с помощью updateMetricsAndfit
функция. При каждой итерации:
Симулируйте поток данных путем обработки фрагмента 50 наблюдений. Обратите внимание, что размер фрагмента отличается от размера пакета SGD.
Перезаписать предыдущую инкрементальную модель на новую, подобранную входящему наблюдению.
Сохраните оцененный коэффициент , совокупные метрики и метрики окна, чтобы увидеть, как они развиваются во время инкрементного обучения.
% Preallocation numObsPerChunk = 50; nchunk = floor(n/numObsPerChunk); ce = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); hinge = 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,X(idx,:),Y(idx)); ce{j,:} = Mdl.Metrics{"ClassificationError",:}; hinge{j,:} = Mdl.Metrics{"HingeLoss",:}; beta10(j + 1) = Mdl.Beta(10); end
IncrementalMdl
является incrementalClassificationLinear
объект модели обучен на всех данных в потоке. Во время инкрементного обучения и после прогрева модели 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(ce.Variables); xlim([0 nchunk]); ylabel('Classification Error') xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,ce.Properties.VariableNames) xlabel('Iteration') subplot(2,2,3) h = plot(hinge.Variables); xlim([0 nchunk]); ylabel('Hinge Loss') xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,hinge.Properties.VariableNames) xlabel('Iteration')
График предполагает, что updateMetricsAndFit
делает следующее:
Подгонка во время всех итераций инкрементного обучения
Вычислите показатели эффективности только после периода прогрева метрики.
Вычислите совокупные метрики во время каждой итерации.
Вычислите метрики окна после обработки 500 наблюдений (10 итераций).
Обучите линейную модель для двоичной классификации с помощью fitclinear
преобразуйте его в пошагового ученика, отслеживайте его эффективность и подгоняйте к потоковым данным. Перенос опций обучения от традиционного к инкрементному обучению.
Загрузка и предварительная обработка данных
Загрузите набор данных о деятельности человека. Случайным образом перетасуйте данные. Ориентируйте наблюдения данных предиктора в столбцах.
load humanactivity rng(1); % For reproducibility n = numel(actid); idx = randsample(n,n); X = feat(idx,:)'; Y = actid(idx);
Для получения дополнительной информации о наборе данных введите Description
в командной строке.
Ответы могут быть одним из пяти классов: Сидя, Стоя, Ходьба, Бег, или Танцы. Дихотомизируйте ответ путем определения, движется ли субъект (actid
> 2).
Y = Y > 2;
Предположим, что данные, собранные, когда субъект находился в простое (Y
= false
) имеет удвоенное качество, чем когда субъект двигался. Создайте весовую переменную, которая атрибутирует 2 наблюдениям, собранным от бездействующего субъекта, и 1 - движущемуся субъекту.
W = ones(n,1) + ~Y;
Обучите линейную модель для двоичной классификации
Подбор линейной модели для двоичной классификации к случайной выборке из половины данных.
idxtt = randsample([true false],n,true); TTMdl = fitclinear(X(:,idxtt),Y(idxtt),'ObservationsIn','columns',... 'Weights',W(idxtt))
TTMdl = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'none' Beta: [60x1 double] Bias: -0.1107 Lambda: 8.2967e-05 Learner: 'svm' Properties, Methods
TTMdl
является ClassificationLinear
объект модели, представляющий традиционно обученную линейную модель для двоичной классификации.
Преобразуйте обученную модель
Преобразуйте традиционно обученную классификационную модель в двоичную классификационную линейную модель для инкрементного обучения.
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1 Metrics: [1x2 table] ClassNames: [0 1] ScoreTransform: 'none' Beta: [60x1 double] Bias: -0.1107 Learner: 'svm' Properties, Methods
Отдельно отслеживайте метрики эффективности и подгоняйте модель
Выполните инкрементальное обучение для остальных данных с помощью updateMetrics
и fit
функций. Симулируйте поток данных путем обработки 50 наблюдений за раз. При каждой итерации:
Функции updateMetrics
обновить совокупную и оконную ошибку классификации модели с учетом входящего фрагмента наблюдений. Перезаписайте предыдущую инкрементальную модель, чтобы обновить потери в Metrics
свойство. Обратите внимание, что функция не подгоняет модель к фрагменту данных - фрагмент является «новыми» данными для модели. Задайте, что наблюдения ориентированы в столбцах, и задайте веса наблюдений.
Функции fit
для подгонки модели к входящему фрагменту наблюдений. Перезаписайте предыдущую инкрементную модель, чтобы обновить параметры модели. Задайте, что наблюдения ориентированы в столбцах, и задайте веса наблюдений.
Сохраните ошибку классификации и первый оцененный коэффициент .
% Preallocation idxil = ~idxtt; nil = sum(idxil); numObsPerChunk = 50; nchunk = floor(nil/numObsPerChunk); ce = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); beta1 = [IncrementalMdl.Beta(1); zeros(nchunk,1)]; Xil = X(:,idxil); Yil = Y(idxil); Wil = 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)); ce{j,:} = IncrementalMdl.Metrics{"ClassificationError",:}; IncrementalMdl = fit(IncrementalMdl,Xil(:,idx),Yil(idx),'ObservationsIn','columns',... 'Weights',Wil(idx)); beta1(j + 1) = IncrementalMdl.Beta(end); end
IncrementalMdl
является incrementalClassificationLinear
объект модели обучен на всех данных в потоке.
Также можно использовать updateMetricsAndFit
чтобы обновить метрики эффективности модели, заданные новый фрагмент данных, и затем подгонять модель к данным.
Постройте график трассировки метрик эффективности и оценочного коэффициента .
figure; subplot(2,1,1) h = plot(ce.Variables); xlim([0 nchunk]); ylabel('Classification Error') legend(h,ce.Properties.VariableNames) subplot(2,1,2) plot(beta1) ylabel('\beta_1') xlim([0 nchunk]); xlabel('Iteration')
Совокупные потери стабильны и постепенно уменьшаются, в то время как потери окна скачут.
сначала резко изменяется, затем постепенно выравнивается как fit
обрабатывает больше фрагменты.
Incremental learning, или online learning, является ветвью машинного обучения, связанная с обработкой входящих данных из потока данных, возможно, практически не учитывая распределения переменных предиктора, аспектов предсказания или целевой функции (включая настройку значений параметров) или того, помечены ли наблюдения. Инкрементальное обучение отличается от традиционного машинного обучения, где доступно достаточно маркированных данных, чтобы соответствовать модели, выполнить перекрестную валидацию, чтобы настроить гиперпараметры и вывести распределение предиктора.
Учитывая входящие наблюдения, модель инкрементного обучения обрабатывает данные любым из следующих способов, но обычно в этом порядке:
Спрогнозируйте метки.
Измерьте прогнозирующую эффективность.
Проверьте наличие структурных пропусков или дрейфа в модели.
Подбор модели к входящим наблюдениям.
Этот adaptive scale-invariant solver for incremental learning, введенный в [1], является основанным на градиенте-спуске целевым решателем для настройки линейных прогнозирующих моделей. Решатель свободен от гиперпараметра, нечувствителен к различиям в шкалах переменных предиктора и не требует предварительного знания распределения переменных предиктора. Эти характеристики делают его хорошо подходящим для инкрементного обучения.
Стандартные решатели SGD и ASGD чувствительны к различным шкалам среди переменных, что приводит к моделям, которые могут работать плохо. Чтобы достичь лучшей точности с помощью SGD и ASGD, можно стандартизировать данные предиктора, и настройка параметров регуляризации и скорости обучения может потребовать настройки. Для традиционного машинного обучения доступно достаточно данных, чтобы включить настройку гиперпараметра путем перекрестной валидации и стандартизации предиктора. Однако для инкрементного обучения достаточно данных может быть недоступно (для примера наблюдения могут быть доступны только по одному за раз), и распределение предикторов может быть неизвестным. Эти характеристики делают настройку параметров и стандартизацию предиктора трудной или невозможной во время инкрементного обучения.
Инкрементальные функции аппроксимации для классификации fit
и updateMetricsAndFit
используйте более агрессивную ScInOL2 версию алгоритма.
После создания модели можно сгенерировать код C/C + +, который выполняет инкрементальное обучение в потоке данных. Для генерации кода C/C + + требуется MATLAB Coder™. Для получения дополнительной информации смотрите Введение в генерацию кода.
В течение периода оценки, инкрементальные функции аппроксимации fit
и updateMetricsAndFit
использовать первый входящий EstimationPeriod
наблюдения для оценки (настройки) гиперпараметров, необходимых для инкрементного обучения. Эта таблица описывает гиперпараметры и когда они оцениваются или настраиваются. Оценка происходит только тогда, когда EstimationPeriod
положительно.
Гиперпараметр | Свойство модели | Использовать | Оценка гиперпараметров |
---|---|---|---|
Предиктор означает и стандартные отклонения |
| Стандартизируйте данные предиктора | Когда оба эти условия применяются:
|
Скорость обучения | LearnRate | Настройте размер шага решателя | Когда оба эти условия применяются:
|
Функции подходят только к последнему наблюдению периода оценки к инкрементной модели, и они не используют ни одно из наблюдений, чтобы отслеживать эффективность модели. В конце периода оценки функции обновляют свойства, которые хранят гиперпараметры.
Если функции инкрементного обучения сконфигурированы для стандартизации переменных предиктора, они делают это с помощью средств и стандартных отклонений, хранящихся в Mu
и Sigma
свойства модели инкрементного обучения Mdl
.
Когда вы задаете 'Standardize',true
и положительный период оценки (см. EstimationPeriod), и Mdl.Mu
и Mdl.Sigma
являются пустыми, инкрементальными средствами оценки функций аппроксимации и стандартными отклонениями, используя наблюдения периода оценки.
Когда вы задаете 'Standardize','auto'
(по умолчанию) применяются следующие условия:
Если вы создаете incrementalClassificationLinear
путем преобразования традиционно обученной бинарной линейной модели SVM (ClassificationSVM
или CompactClassificationSVM
), и Mu
и Sigma
свойствами традиционно обученной модели являются пустые массивы []
Функции инкрементного обучения не стандартизируют переменные предиктора. Если на Mu
и Sigma
свойства традиционно обученной модели непусты, инкрементальные функции обучения стандартизируют переменные предиктора с помощью заданных средств и стандартных отклонений. Инкрементные функции аппроксимации не оценивают новые средства и стандартные отклонения, независимо от длины периода оценки.
Если вы создаете incrementalClassificationLinear
путем преобразования линейной классификационной модели (ClassificationLinear
), функции инкрементного обучения не стандартизируют данные, независимо от продолжительности периода оценки.
Если вы не преобразовываете традиционно обученную модель, инкрементальные функции обучения стандартизируют данные предиктора только тогда, когда вы задаете решатель SGD (см Solver
) и положительный период оценки (см. EstimationPeriod).
Когда инкрементальные функции аппроксимации оценивают средства предиктора и стандартные отклонения, функции вычисляют взвешенные средства и взвешенные стандартные отклонения, используя наблюдения периода оценки. В частности, функции стандартизируют j предиктора (xj), используя
xj является предиктором j, а xjk - k наблюдения предиктора j в периоде оценки.
p k является априорной вероятностью k класса (Prior
свойство инкрементальной модели).
wj - j веса наблюдения.
updateMetrics
и updateMetricsAndFit
функции отслеживают метрики производительности модели ('Metrics'
) из новых данных, когда инкрементальная модель warm (свойство IsGreen). Инкрементальная модель тепла после 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
и буфер весов наблюдений.
Заполните элементы буфера метриков производительностью модели на основе пакетов входящих наблюдений и сохраните соответствующие веса наблюдений в буфере весов.
Когда буфер будет заполнен, перезаписайте Mdl.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.
Указания и ограничения по применению:
Все функции объекта incrementalClassificationLinear
генерация кода поддержки объекта модели.
Если вы конфигурируете Mdl
для тасования данных (см. Решатель и Shuffle), fit
функция случайным образом перетасовывает каждый входящий пакет наблюдений, прежде чем он подгоняет модель к пакету. Порядок перетасованных наблюдений может не совпадать с порядком, сгенерированным MATLAB.
Когда вы генерируете код, который загружает или создает incrementalClassificationLinear
объект модели, применяются следующие ограничения.
Mdl
не может представлять преобразованную модель SVM, сконфигурированную для возврата апостериорных вероятностей в качестве счетов.
The ClassNames
свойство должно содержать все ожидаемые имена классов.
The NumPredictors
свойство должно отражать количество переменных предиктора.
Для получения дополнительной информации смотрите Введение в генерацию кода.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.