Линейная модель двоичной классификации для инкрементного обучения
incrementalClassificationLinear создает incrementalClassificationLinear объект модели, представляющий линейную модель двоичной классификации для инкрементного обучения. Поддерживаемые ученики включают в себя вспомогательную векторную машину (SVM) и логистическую регрессию.
В отличие от других объектов модели 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 теплый (см. IsThream), 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 кому p0.
S представляет собой n-на-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" |
| Анонимная функция | 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-по-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' | Опорная векторная машина | Шарнир: yf (x)] | 'svm' |
'logit' | Логистическая регрессия | Отклонение (логистическое): yf (x)]} | 'logistic' |
Learner - Тип модели линейной классификации'logistic' | 'svm'Это свойство доступно только для чтения.
Тип модели линейной классификации, указанный как 'logistic' или 'svm'.
В следующей таблице + b.
β - вектор p-коэффициентов.
x - это наблюдение из переменных p-предиктора.
b - скалярное смещение.
| Стоимость | Алгоритм | Функция потерь | FittedLoss Стоимость |
|---|---|---|---|
'logistic' | Логистическая регрессия | Отклонение (логистическое): yf (x)]} | 'logit' |
'svm' | Опорная векторная машина | Шарнир: yf (x)] | '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' | log (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 свойство традиционно обученной модели.
Типы данных: 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 - Сила термина регуляризации гребня (L2)Это свойство доступно только для чтения.
Сила члена регуляризации хребта (L2), определяемая как неотрицательный скаляр.
При преобразовании традиционно обученной линейной модели для бинарной классификации со штрафом по гребню (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 составляет λ γ 0t) c.
|
При преобразовании традиционно обученной линейной модели для двоичной классификации (ClassificationLinear) для создания Mdl, чей ModelParameters.Solver свойство - 'sgd' или 'asgd', LearnRate является 'decaying'.
Типы данных: char | string
Shuffle - Флаг для тасования наблюдений в партииtrue (по умолчанию) | falseЭто свойство доступно только для чтения.
Флаг для тасования наблюдений в пакете при каждом цикле обучения, указанный как значение в этой таблице.
| Стоимость | Описание |
|---|---|
true | Программа выполняет тасование наблюдений в каждом входящем пакете данных перед обработкой аппарата. Это действие уменьшает смещение, вызванное схемой выборки. |
false | Программное обеспечение обрабатывает данные в полученном порядке. |
Типы данных: logical
IsWarm - Флаг, указывающий, отслеживает ли модель метрики производительностиfalse | trueЭто свойство доступно только для чтения.
Флаг, указывающий, отслеживает ли инкрементная модель метрики производительности, указанные как false или true. Инкрементная модель Mdl теплый (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, с того момента, как модель стала теплой (IsHeam 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 обрабатывает больше кусков.
Инкрементное обучение, или онлайн-обучение, - это ветвь машинного обучения, связанная с обработкой входящих данных из потока данных, возможно, без знания распределения переменных предиктора, аспектов предсказания или целевой функции (включая значения параметров настройки) или того, помечены ли наблюдения. Инкрементное обучение отличается от традиционного машинного обучения, когда достаточно помеченных данных доступно для соответствия модели, выполнения перекрестной проверки для настройки гиперпараметров и вывода распределения предиктора.
Учитывая поступающие наблюдения, модель инкрементного обучения обрабатывает данные любым из следующих способов, но обычно в таком порядке:
Прогнозировать метки.
Измерьте прогностическую производительность.
Проверьте наличие структурных разрывов или дрейфа в модели.
Подгоните модель к входящим наблюдениям.
Адаптивный инвариантный по масштабу решатель для инкрементного обучения, представленный в [1], представляет собой целевой решатель на основе градиентного спуска для обучения линейным прогностическим моделям. Решатель свободен от гиперпараметров, нечувствителен к различиям в шкалах переменных предиктора и не требует предварительного знания распределения переменных предиктора. Эти характеристики делают его хорошо подходящим для инкрементного обучения.
Стандартные решатели SGD и ASGD чувствительны к различным масштабам переменных предиктора, что приводит к моделям, которые могут работать плохо. Для достижения лучшей точности с использованием SGD и ASGD можно стандартизировать данные предиктора, а настройка параметров регуляризации и скорости обучения может потребовать настройки. Для традиционного машинного обучения доступно достаточно данных для настройки гиперпараметров путем перекрестной проверки и стандартизации предикторов. Однако для инкрементного обучения достаточное количество данных может быть недоступно (например, наблюдения могут быть доступны только по одному), и распределение предикторов может быть неизвестно. Эти характеристики делают настройку параметров и стандартизацию предиктора трудной или невозможной во время инкрементного обучения.
Инкрементные функции фитинга для классификации fit и updateMetricsAndFit использовать более агрессивную ScInOL2 версию алгоритма.
После создания модели можно создать код C/C + +, который выполняет инкрементное изучение потока данных. Для создания кода C/C + + требуется Coder™ MATLAB. Дополнительные сведения см. в разделе Введение в создание кода.
В течение периода оценки инкрементные фитинговые функции fit и updateMetricsAndFit использовать первый входящий EstimationPeriod наблюдения для оценки (настройки) гиперпараметров, необходимых для дополнительного обучения. В этой таблице описываются гиперпараметры и время их оценки или настройки. Оценка выполняется только тогда, когда EstimationPeriod является положительным.
| Гиперпараметр | Свойство модели | Использовать | Оценка гиперпараметров |
|---|---|---|---|
| Предикторные средства и стандартные отклонения |
| Стандартизация данных предиктора | Если применяются оба этих условия:
|
| Уровень обучения | LearnRate | Настройка размера шага решателя | Если применяются оба этих условия:
|
Функции соответствуют только последнему наблюдению периода оценки инкрементной модели, и они не используют ни одно из наблюдений для отслеживания производительности модели. В конце периода оценки функции обновляют свойства, хранящие гиперпараметры.
Если инкрементные функции обучения сконфигурированы для стандартизации переменных предиктора, они делают это, используя средства и стандартные отклонения, сохраненные в Mu и Sigma свойства модели инкрементного обучения Mdl.
При установке 'Standardize',true и период положительной оценки (см. Период оценки), и Mdl.Mu и Mdl.Sigma пустые, средства оценки инкрементных функций подгонки и стандартные отклонения с использованием наблюдений периода оценки.
При установке 'Standardize','auto' (по умолчанию), применяются следующие условия:
При создании incrementalClassificationLinear путем преобразования традиционно обученной двоичной линейной модели SVM (ClassificationSVM или CompactClassificationSVM) и Mu и Sigma свойства традиционно обученной модели являются пустыми массивами []функции инкрементного обучения не стандартизируют переменные предиктора. Если Mu и Sigma свойства традиционно обученной модели являются непустыми, функции инкрементного обучения стандартизируют переменные предиктора с использованием указанных средств и стандартных отклонений. Инкрементные фитинговые функции не оценивают новые средства и стандартные отклонения, независимо от продолжительности периода оценки.
При создании incrementalClassificationLinear путем преобразования модели линейной классификации (ClassificationLinear), функции инкрементного обучения не стандартизируют данные, независимо от продолжительности периода оценки.
Если не преобразовать традиционно обученную модель, функции инкрементного обучения стандартизируют данные предиктора только при указании решателя SGD (см. Solver) и период положительной оценки (см. Период оценки).
Когда функции инкрементной подгонки оценивают предикторные средства и стандартные отклонения, функции вычисляют взвешенные средства и взвешенные стандартные отклонения, используя наблюдения периода оценки. В частности, функции стандартизируют предиктор j (xj), используя
xj - предиктор j, и xjk - наблюдение k предиктора j в периоде оценки.
2.
pk - предшествующая вероятность класса k (Prior свойство инкрементной модели).
wj - наблюдаемый вес j.
updateMetrics и updateMetricsAndFit функции отслеживают показатели производительности модели ('Metrics') из новых данных, когда инкрементная модель является теплой (свойство IsHeam). Инкрементная модель нагревается после fit или updateMetricsAndFit подгонка инкрементной модели к наблюдениям MetrityWarmupPeriod, которые являются периодом прогрева метрик.
Если значение параметра Period > 0, функции оценивают гиперпараметры перед подгонкой модели к данным. Поэтому функции должны обрабатывать дополнительную EstimationPeriod наблюдения перед тем, как модель начнет период прогрева метрик.
Metrics свойство инкрементной модели хранит две формы каждой метрики производительности в качестве переменных (столбцов) таблицы, Cumulative и Window, с отдельными метриками в строках. Когда инкрементная модель является теплой, updateMetrics и updateMetricsAndFit обновить метрики на следующих частотах:
Cumulative - Функции вычисляют кумулятивные метрики с момента начала отслеживания производительности модели. Функции обновляют метрики при каждом вызове функций и основывают расчет на всем предоставленном наборе данных.
Window - функции вычисляют метрику на основе всех наблюдений в пределах окна, определяемого аргументом пары имя-значение MetrityWindowSize. 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] Кемпка, Михал, Войцех Котловский и Манфред К. Вармут. «Адаптивный масштаб - инвариантные онлайн-алгоритмы для обучения линейным моделям». КоРР (февраль 2019). https://arxiv.org/abs/1902.07528.
[2] Лэнгфорд, Дж., Л. Ли и Т. Чжан. «Разреженное онлайн-обучение через усеченный градиент». Дж. Мач. Рес., т. 10, 2009, стр. 777-801.
[3] Шалев-Шварц, С., Я. Сингер и Н. Сребро. «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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.