Бинарная классификация линейная модель для пошагового обучения
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-by-1 числовой вектор, где каждым элементом является потеря соответствующего наблюдения в данных, обработанных функциями пошагового обучения во время цикла изучения.
Вы выбираете имя функции (customMetric).
C n-by-2 логическая матрица со строками, указывающими на класс, которому принадлежит соответствующее наблюдение. Порядок следования столбцов соответствует порядку класса в ClassNames свойство. Создайте C установкой C (= 1 pQ), если наблюдение находится в классе p, для каждого наблюдения в заданных данных. Установите другой элемент в строке q к p0.
S n-by-2 числовая матрица предсказанных классификационных оценок. S похоже на Score выход predict, где строки соответствуют наблюдениям в данных, и порядок следования столбцов соответствует порядку класса в ClassNames свойство. S ( классификационная оценка наблюдения pQ) будучи классифицированным на класс 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" |
| Анонимная функция | 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
Типы данных: логический | char | string
Можно установить большинство свойств при помощи синтаксиса аргумента пары "имя-значение" только, когда вы вызываете incrementalClassificationLinear непосредственно. Можно установить некоторые свойства, когда вы вызываете 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
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 — Количество переменных предикторов (значение по умолчанию) | неотрицательный числовой скалярЭто свойство доступно только для чтения.
Количество переменных предикторов в виде неотрицательного числового скаляра.
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl, NumPredictors задан как конгруэнтное свойство традиционно обученной модели. В противном случае инкрементные подходящие функции выводят NumPredictors из данных о предикторе во время обучения.
Типы данных: double
NumTrainingObservations — Количество наблюдений соответствует к инкрементной модели (значение по умолчанию) | неотрицательный числовой скалярЭто свойство доступно только для чтения.
Количество наблюдений соответствует к инкрементной модели 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" | 2x – 1 |
"symmetricismax" | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1 |
"symmetriclogit" | 2/(1 + e–x) – 1 |
Для MATLAB® функционируйте или функция, что вы задаете, вводите ее указатель на функцию; например, 'ScoreTransform',@function, где:
function принимает n-by-K матрица (исходные баллы) и возвращает матрицу, одного размера (преобразованные баллы).
n является количеством наблюдений и строкой, j матрицы содержит оценки класса наблюдения j.
K является количеством классов numel(ClassNames), и столбец k является классом ClassNames (.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 свойство традиционно обученной модели.
Типы данных: логический
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' | Stochastic gradient descent (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 свойство традиционно обученной модели.
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 | Программные процессы данные в порядке получены. |
Типы данных: логический
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 свойство в виде неотрицательного целого числа.
Для получения дополнительной информации смотрите показатели производительности.
Типы данных: single | double
MetricsWindowSize — Количество наблюдений, чтобы использоваться для расчета показателей производительности окна (значение по умолчанию) | положительное целое числоЭто свойство доступно только для чтения.
Количество наблюдений, чтобы использоваться для расчета показателей производительности окна в виде положительного целого числа.
Для получения дополнительной информации об опциях показателей производительности смотрите показатели производительности.
Типы данных: 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 в командной строке.
Ответы могут быть одним из пяти классов: Нахождение, Положение, Waling, Выполнение или Танец. Разделите пополам ответ путем идентификации, перемещается ли предмет (actid > 2).
Y = Y > 2;
Создайте инкрементную линейную модель для бинарной классификации. Сконфигурируйте модель можно следующим образом:
Укажите, что инкрементные подходящие функции обрабатывают сырые данные (нестандартизированные) данные о предикторе.
Задайте решатель SGD.
Примите, что гребенчатое значение параметров регуляризации 0,001, размер пакета SGD 20 и скорость обучения 0,002 работают хорошо на проблему.
Задайте метрический период прогрева 5 000 наблюдений.
Задайте метрический размер окна 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 (свойство 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.
Указания и ограничения по применению:
Все объектные функции incrementalClassificationLinear генерация кода поддержки объекта модели.
Если вы конфигурируете Mdl переставить данные (см. Решатель и Перестановку), fit функционируйте случайным образом переставляет каждый входящий пакет наблюдений, прежде чем он будет подбирать модель к пакету. Порядок переставленных наблюдений не может совпадать с порядком, сгенерированным MATLAB.
Когда вы генерируете код, который загружает или создает incrementalClassificationLinear объект модели, следующие ограничения применяются.
Mdl не может представлять конвертированную модель SVM, сконфигурированную, чтобы возвратить апостериорные вероятности как баллы.
ClassNames свойство должно содержать все ожидаемые имена классов.
NumPredictors свойство должно отразить количество переменных предикторов.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.