Наивная Байесова модель классификации для пошагового обучения
incrementalClassificationNaiveBayes
создает incrementalClassificationNaiveBayes
объект модели, который представляет наивную модель классификации мультиклассов Бейеса для пошагового обучения.
В отличие от других объектов модели Statistics and Machine Learning Toolbox™, incrementalClassificationNaiveBayes
может быть назван непосредственно. Кроме того, можно задать изучение опций, таких как настройки показателей производительности и предшествующие вероятности класса прежде, чем подбирать модель к данным. После того, как вы создаете incrementalClassificationNaiveBayes
объект, это подготовлено к пошаговому обучению.
incrementalClassificationNaiveBayes
подходит лучше всего для пошагового обучения. Для традиционного подхода к обучению наивная модель Bayes для классификации мультиклассов (такой как создание модели путем подбора кривой ему к данным, выполнения перекрестной проверки, настройки гиперпараметров, и так далее), смотрите fitcnb
.
Можно создать incrementalClassificationNaiveBayes
объект модели несколькими способами:
Вызовите функцию непосредственно — Конфигурируют опции пошагового обучения или задают специфичные для ученика опции, путем вызова incrementalClassificationNaiveBayes
непосредственно. Этот подход является лучшим, когда у вас еще нет данных, или вы хотите запустить пошаговое обучение сразу. Необходимо задать максимальное количество классов или всех имен классов, ожидаемых в данных об ответе во время пошагового обучения.
Преобразуйте традиционно обученную модель — Чтобы инициализировать наивную модель классификации Бейеса для пошагового обучения с помощью параметров модели обученного наивного объекта модели Бейеса, можно преобразовать традиционно обученную модель в incrementalClassificationNaiveBayes
объект модели путем передачи его incrementalLearner
функция.
Вызовите функцию пошагового обучения — fit
, updateMetrics
, и updateMetricsAndFit
примите сконфигурированный incrementalClassificationNaiveBayes
объект модели и данные, как введено, и возвращают incrementalClassificationNaiveBayes
объект модели, обновленный с информацией, усвоенной из входной модели и данных.
возвращает наивный объект модели классификации Бейеса по умолчанию для пошагового обучения, Mdl
= incrementalClassificationNaiveBayes('MaxNumClasses',MaxNumClasses
)Mdl
, где MaxNumClasses
максимальное количество классов, ожидаемых в данных об ответе во время пошагового обучения. Свойства модели по умолчанию содержат заполнителей для неизвестных параметров модели. Необходимо обучить модель по умолчанию, прежде чем можно будет отследить ее эффективность или сгенерировать предсказания от нее.
задает все имена классов Mdl
= incrementalClassificationNaiveBayes('ClassNames',ClassNames
)ClassNames
ожидаемый в данных об ответе во время пошагового обучения и наборах ClassNames
свойство.
использование любая из комбинаций входных аргументов в предыдущих синтаксисах, чтобы установить свойства и аргументы пары "имя-значение" использования дополнительных опций. Заключите каждое имя в кавычки. Например, Mdl
= incrementalClassificationNaiveBayes(___,Name,Value
)incrementalClassificationNaiveBayes('DistributionNames','mn','MaxNumClasses',5,'MetricsWarmupPeriod',100)
указывает, что объединенное условное распределение переменных предикторов является многочленом, определяет максимальный номер классов, ожидаемых в данных об ответе к 5
, и устанавливает метрический период прогрева на 100
.
MaxNumClasses
— Максимальное количество классовМаксимальное количество классов ожидается в данных об ответе во время пошагового обучения в виде положительного целого числа.
Если вы не задаете MaxNumClasses
, необходимо задать ClassNames
аргумент. В этом случае, MaxNumClasses
количество имен классов в ClassNames
.
Пример: 'MaxNumClasses',5
Типы данных: single
| double
ClassNames
— Все уникальные метки классаВсе уникальные метки класса, ожидаемые в данных об ответе во время пошагового обучения в виде категориального или символьного массива; логический, числовой, или вектор строки или массив ячеек из символьных векторов. ClassNames
и данные об ответе должны иметь совпадающий тип данных. ClassNames
устанавливает ClassNames
свойство.
ClassNames
задает порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, установите 'ClassNames'
задавать порядок размерностей Cost
или порядок следования столбцов классификационных оценок, возвращенных predict
Если вы не задаете ClassNames
, необходимо задать MaxNumClasses
аргумент. В этом случае программное обеспечение выводит MaxNumClasses
ClassNames
из данных во время пошагового обучения.
Пример: 'ClassNames',["virginica" "setosa" "versicolor"}
Типы данных: single
| double
| logical
| string
| char
| cell
| categorical
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'NumPredictors',4,'Prior',[0.3 0.3 0.4]
задает 4
переменные в данных о предикторе и предшествующем вероятностном распределении класса [0.3 0.3 0.4]
.Cost
— Стоимость неправильной классификации наблюденияСтоимость неправильной классификации наблюдения в виде значения в этой таблице, где c является количеством классов в ClassNames
свойство:
Значение | Описание |
---|---|
c-by-c числовая матрица |
|
Массив структур | Массив структур, имеющий два поля:
|
Если вы задаете Cost
, необходимо также задать ClassNames
аргумент. Cost
устанавливает Cost
свойство.
Значением по умолчанию является одна из следующих альтернатив:
Пустой массив []
когда вы задаете MaxNumClasses
c-by-c матрица, когда вы задаете ClassNames
, где Стоится (
i
J
) = 1
≠ для всех i
, и j
Стоимость (
i
J
) = 0
= для всех i
j
Пример: 'Cost',struct('ClassNames',{'b','g'},'ClassificationCosts',[0 2; 1 0])
Типы данных: single
| double
| struct
Metrics
— Метрики производительности модели, чтобы отследить во время пошагового обучения"mincost"
(значение по умолчанию) | "classiferror"
| представьте вектор в виде строки | указатель на функцию | вектор ячейки | массив структур | "binodeviance"
| "exponential"
| "hinge"
| "logit"
| "quadratic"
| ...Метрики производительности модели, чтобы отследить во время пошагового обучения, в дополнение к минимальному ожидали стоимость misclassification в виде встроенного имени функции потерь, вектора строки из имен, указатель на функцию (@metricName
), массив структур указателей на функцию или вектор ячейки из имен, указателей на функцию или массивов структур.
Когда Mdl
warm (см. IsWarm), updateMetrics
и updateMetricsAndFit
отследите показатели производительности в свойстве Metrics Mdl
.
В следующей таблице перечислены встроенные имена функции потерь. Можно задать больше чем один при помощи вектора строки.
Имя | Описание |
---|---|
"binodeviance" | Биномиальное отклонение |
"classiferror" | Коэффициент ошибок Misclassification |
"exponential" | Экспоненциал |
"hinge" | Стержень |
"logit" | Логистический |
'"mincost" | Минимальный ожидал стоимость misclassification (для классификационных оценок, которые являются апостериорными вероятностями). |
"quadratic" | Квадратичный |
Для получения дополнительной информации о встроенных функциях потерь смотрите loss
.
Пример: 'Metrics',["classiferror" "logit"]
Чтобы задать пользовательскую функцию, которая возвращает показатель производительности, используйте обозначение указателя на функцию. Функция должна иметь эту форму:
metric = customMetric(C,S,Cost)
Выходной аргумент metric
n-by-1 числовой вектор, где каждым элементом является потеря соответствующего наблюдения в данных, обработанных функциями пошагового обучения во время цикла изучения.
Вы выбираете имя функции (customMetric
).
C
n-by-K логическая матрица со строками, указывающими на класс, которому принадлежит соответствующее наблюдение, где K является количеством классов. Порядок следования столбцов соответствует порядку класса в ClassNames
свойство. Создайте C
установкой C (
= 1 p
Q
), если наблюдение
находится в классе p
, для каждого наблюдения в заданных данных. Установите другой элемент в строке q
к p
0
.
S
n-by-K числовая матрица предсказанных классификационных оценок. S
похоже на Posterior
выход predict
, где строки соответствуют наблюдениям в данных, и порядок следования столбцов соответствует порядку класса в ClassNames
свойство. S (
классификационная оценка наблюдения p
Q
)
будучи классифицированным на класс p
.q
Cost
K-by-K числовая матрица затрат misclassification. Смотрите 'Cost'
аргумент значения имени.
Чтобы задать несколько пользовательских метрик и присвоить пользовательское имя к каждому, используйте массив структур. Чтобы задать комбинацию встроенных и пользовательских метрик, используйте вектор ячейки.
Пример: '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,Cost)customMetric(C,S,Cost)... CustomMetric_1 |
Для получения дополнительной информации об опциях показателей производительности смотрите показатели производительности.
Типы данных: char |
string
| struct
| cell
| function_handle
Можно установить большинство свойств при помощи синтаксиса аргумента пары "имя-значение" только, когда вы вызываете incrementalClassificationNaiveBayes
непосредственно. Можно установить некоторые свойства, когда вы вызываете incrementalLearner
преобразовывать традиционно обученную модель. Вы не можете установить свойства DistributionParameters
, IsWarm
, и NumTrainingObservations
.
CategoricalPredictors
— Категориальный список предикторов"all"
Это свойство доступно только для чтения.
Категориальные предикторы перечисляют в виде одного из значений в этой таблице.
Значение | Описание |
---|---|
Вектор из положительных целых чисел | Каждая запись в векторе является значением индекса, соответствующим столбцу данных о предикторе, которые содержат категориальную переменную. Значения индекса между 1 и |
Логический вектор | true запись означает, что соответствующий столбец данных о предикторе является категориальной переменной. Длиной вектора является NumPredictors . |
"all" | Все предикторы являются категориальными. |
Для идентифицированных категориальных предикторов, incrementalClassificationNaiveBayes
использует многомерные распределения многочлена. Для получения дополнительной информации смотрите DistributionNames
.
По умолчанию, если вы задаете DistributionNames
опция, все переменные предикторы, соответствующие 'mvmn'
являются категориальными. В противном случае ни один из переменных предикторов не является категориальным.
Пример: 'CategoricalPredictors',[1 2 4]
и 'CategoricalPredictors',[true true false true]
укажите, что первое, второе, и четвертый из четырех переменных предикторов являются категориальными.
Типы данных: single
| double
| logical
CategoricalLevels
— Уровни многомерных уровней переменных предикторов многочленаУровни многомерных переменных предикторов многочлена в виде вектора ячейки. Длина CategoricalLevels
равно NumPredictors
.
Инкрементные подходящие функции fit
и updateMetricsAndFit
заполните ячейки с изученными числовыми категориальными уровнями каждого категориального переменного предиктора, в то время как ячейки, соответствующие другим переменным предикторам, содержат пустой массив []
. А именно, если предиктор j является многомерным многочленом, CategoricalLevels{
j список всех отличных значений предиктора j, испытанный во время инкрементного подбора кривой. Для получения дополнительной информации смотрите
DistributionNames
свойство.
Примечание
В отличие от этого, fitcnb
, инкрементные подходящие функции заказывают уровни предиктора, когда функции испытывают их во время обучения. Например, предположите предиктор, j является категориальным с многомерным распределением многочлена. Порядок уровней в CategoricalLevels{j}
и, следовательно, порядок вероятностей уровня в каждой ячейке DistributionParameters{:,j}
возвращенный инкрементными подходящими функциями может отличаться от порядка, возвращенного fitcnb
для того же обучающего набора данных.
Cost
— Стоимость неправильной классификации наблюдения[]
Это свойство доступно только для чтения.
Стоимость неправильной классификации наблюдения в виде массива.
Если вы задаете 'Cost'
аргумент значения имени, его наборы значений Cost
. Если вы задаете массив структур, Cost
значение ClassificationCosts
поле .
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, Cost
Cost
свойство традиционно обученной модели.
Типы данных: single
| double
ClassNames
— Все уникальные метки классаЭто свойство доступно только для чтения.
Все уникальные метки класса, ожидаемые в данных об ответе во время пошагового обучения в виде категориального или символьного массива, логического или числового вектора или массива ячеек из символьных векторов.
Если вы задаете MaxNumClasses
аргумент, программное обеспечение выводит ClassNames
во время пошагового обучения.
Если вы задаете ClassNames
аргумент, incrementalClassificationNaiveBayes
хранит вашу спецификацию в ClassNames
. Если вы задаете вектор строки, incrementalClassificationNaiveBayes
хранилища это как массив ячеек из символьных векторов вместо этого.
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, ClassNames
ClassNames
свойство традиционно обученной модели.
Типы данных: single
| double
| logical
| char
| cell
| categorical
NumPredictors
— Количество переменных предикторов
(значение по умолчанию) | неотрицательный числовой скалярЭто свойство доступно только для чтения.
Количество переменных предикторов в виде неотрицательного числового скаляра.
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, NumPredictors
задан как конгруэнтное свойство традиционно обученной модели. В противном случае инкрементные подходящие функции выводят NumPredictors
из данных о предикторе во время обучения.
Типы данных: double
NumTrainingObservations
— Количество наблюдений соответствует к инкрементной модели
(значение по умолчанию) | неотрицательный числовой скалярЭто свойство доступно только для чтения.
Количество наблюдений соответствует к инкрементной модели Mdl
В виде неотрицательного числового скаляра. NumTrainingObservations
увеличения, когда вы передаете Mdl
и обучающие данные к fit
или updateMetricsAndFit
.
Примечание
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, incrementalClassificationNaiveBayes
не добавляет количество подгонки наблюдений к традиционно обученной модели к NumTrainingObservations
.
Типы данных: double
Prior
— Предшествующие вероятности класса'empirical'
| 'uniform'
Это свойство доступно только для чтения.
Предшествующие вероятности класса в виде значения в этой таблице. Можно установить этот синтаксис аргумента пары "имя-значение" использования свойства, но incrementalClassificationNaiveBayes
всегда хранит числовой вектор.
Значение | Описание |
---|---|
'empirical' | Функции пошагового обучения выводят предшествующие вероятности класса из наблюдаемых частот родственника класса в данных об ответе во время инкрементного обучения. |
'uniform' | Для каждого класса априорная вероятность является 1/K, где K является количеством классов. |
числовой вектор | Пользовательские, нормированные априорные вероятности. Порядок элементов Prior соответствует элементам ClassNames свойство. |
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, incrementalClassificationNaiveBayes
использует Prior
свойство традиционно обученной модели.
В противном случае, Prior
'empirical'
.
Типы данных: single
| double
ScoreTransform
— Выиграйте функцию преобразования'none'
(значение по умолчанию) | строковый скаляр | вектор символов | указатель на функциюЭто свойство доступно только для чтения.
Выиграйте функцию преобразования описание, как функции пошагового обучения преобразовывают необработанные значения отклика в виде вектора символов, строкового скаляра или указателя на функцию. incrementalClassificationNaiveBayes
хранит заданное значение как вектор символов или указатель на функцию.
Эта таблица описывает доступные встроенные функции для преобразования счета.
Значение | Описание |
---|---|
"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 является количеством классов и столбцом, k является классом ClassNames (
.k
)
Если вы преобразуете традиционно обученную модель, чтобы создать Mdl
, ScoreTransform
задан как конгруэнтное свойство традиционно обученной модели.
'none'
по умолчанию задает возвращающиеся следующие вероятности класса.
Типы данных: char |
function_handle
| string
DistributionNames
— Распределения предиктора"mn"
| "mvmn"
| "normal"
| представьте вектор в виде строки | вектор ячейки из векторов символовРаспределения предиктора P (x |ck), где ck является классом ClassNames (
В виде вектора символов или строкового скаляра или 1 k
)NumPredictors
представьте в виде строки вектор или вектор ячейки из векторов символов со значениями из таблицы.
Значение | Описание |
---|---|
"mn" | Распределение многочлена. Если вы задаете "mn" , затем всеми функциями являются компоненты распределения многочлена (например, модель сумки лексем). Поэтому вы не можете включать "mn" как элемент массива строк или массива ячеек из символьных векторов. Для получения дополнительной информации смотрите Предполагаемую Вероятность для Распределения Многочлена. |
"mvmn" | Многомерное полиномиальное распределение. Для получения дополнительной информации смотрите Предполагаемую Вероятность для Многомерного Распределения Многочлена. |
"normal" | Нормальное распределение. Для получения дополнительной информации смотрите Средства оценки Нормального распределения |
Если вы задаете вектор символов или строковый скаляр, то модели ПО все функции с помощью того распределения. Если вы задаете 1 NumPredictors
представьте в виде строки вектор или вектор ячейки из векторов символов, модели ПО показывают j использование распределения в элементе j вектора.
По умолчанию программное обеспечение устанавливает все предикторы, заданные как категориальные предикторы (см. CategoricalPredictors
свойство) к 'mvmn'
. В противном случае распределением по умолчанию является 'normal'
.
incrementalClassificationNaiveBayes
хранит значение как вектор символов или вектор ячейки из векторов символов.
Пример: 'DistributionNames',"mn"
указывает, что объединенное условное распределение всех переменных предикторов является многочленом.
Пример: 'DistributionNames',["normal" "mvmn" "normal"]
указывает, что первые и третьи переменные предикторы нормально распределены, и вторая переменная является категориальной с многомерным распределением многочлена.
Типы данных: char |
string
| cell
DistributionParameters
— Оценки параметра распределенияЭто свойство доступно только для чтения.
Параметр распределения оценивает в виде массива ячеек. DistributionParameters
K-by-NumPredictors
массив ячеек, где K является количеством классов и ячейки (k
J
) содержит оценки параметра распределения для экземпляров предиктора j
в классе k
. Порядок строк соответствует порядку классов в свойстве ClassNames
, и порядок столбцов соответствует порядку предикторов в данных о предикторе.
Если класс k
не имеет никаких наблюдений для предиктора j
, затем DistributionParameters {
k
J
}isempty
).
Элементы DistributionParameters
зависьте от распределений предикторов. Эта таблица описывает значения в DistributionParameters {
.k
J
}
Распределение предиктора j | Значение массива ячеек для предиктора j и класс k |
---|---|
'mn' | Скаляр, представляющий вероятность, что маркерный j появляется в классе k. Для получения дополнительной информации смотрите Предполагаемую Вероятность для Распределения Многочлена. |
'mvmn' | Числовой вектор, содержащий вероятности для каждого возможного уровня предиктора j в классе k. Программное обеспечение заказывает вероятности согласно отсортированному порядку всех уникальных уровней предиктора j (сохраненный в свойстве CategoricalLevels ). Для получения дополнительной информации смотрите Предполагаемую Вероятность для Многомерного Распределения Многочлена. |
'normal' | 2 1 числовой вектор. Первым элементом является взвешенное демонстрационное среднее значение, и вторым элементом является взвешенное демонстрационное стандартное отклонение. Для получения дополнительной информации смотрите Средства оценки Нормального распределения. |
Примечание
В отличие от этого, fitcnb
, инкрементные подходящие функции заказывают уровни предиктора, когда функции испытывают их во время обучения. Например, предположите предиктор, j является категориальным с многомерным распределением многочлена. Порядок уровней в CategoricalLevels{j}
и, следовательно, порядок вероятностей уровня в каждой ячейке DistributionParameters{:,j}
возвращенный инкрементными подходящими функциями может отличаться от порядка, возвращенного fitcnb
для того же обучающего набора данных.
Типы данных: cell
IsWarm
— Отметьте указание, отслеживает ли модель показатели производительностиfalse
| true
Отметьте указание, отслеживает ли инкрементная модель показатели производительности в виде false
или true
.
Инкрементная модель Mdl
warm (IsWarm
становится true
) когда инкрементные подходящие функции выполняют оба из следующих действий:
Подбирайте инкрементную модель к MetricsWarmupPeriod
наблюдения.
Процесс MaxNumClasses
классы или все имена классов заданы ClassNames
аргумент значения имени.
Значение | Описание |
---|---|
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 | Обновите показатели производительности в наивной модели классификации Бейеса для пошагового обучения, данного новые данные |
logp | Регистрируйте безусловную плотность вероятности наивной модели классификации Бейеса для пошагового обучения |
loss | Потеря наивной модели классификации Бейеса для пошагового обучения на пакете данных |
predict | Предскажите ответы для новых наблюдений из наивной модели классификации Бейеса для пошагового обучения |
Чтобы создать наивную модель классификации Бейеса для пошагового обучения, наименьшее количество объема информации, который необходимо задать, является максимальным количеством классов, которые вы ожидаете, что модель испытает ('MaxNumClasses'
аргумент значения имени). Когда вы подбираете модель к входящим пакетам данных при помощи инкрементной подходящей функции, модель собирает недавно опытные классы в своем ClassNames
свойство. Если заданное ожидаемое максимальное количество классов неточно, одна из следующих альтернатив происходит:
Прежде чем инкрементная подходящая функция испытывает ожидаемое максимальное количество классов, модель является холодной. Следовательно, updateMetrics
и updateMetricsAndFit
функции не измеряют показатели производительности.
Если количество классов превышает ожидаемый максимум, инкрементная подходящая функция выдает ошибку.
В этом примере показано, как создать наивную модель классификации Бейеса для пошагового обучения, когда вы знаете только ожидаемое максимальное количество классов в данных. Кроме того, пример иллюстрирует последствия, когда инкрементные подходящие функции испытывают все ожидаемые классы рано и поздно в выборке.
В данном примере считайте обучение устройством, чтобы предсказать, находится ли предмет, положение, обход, выполнение или танец на основе биометрических данных, измеренных на предмете. Поэтому устройство имеет максимум 5 классов, из которых можно выбрать.
Испытайте ожидаемое максимальное количество классов рано в выборке
Создайте инкрементного наивного ученика Бейеса для изучения мультикласса. Задайте максимум 5 классов в данных.
MdlEarly = incrementalClassificationNaiveBayes('MaxNumClasses',5)
MdlEarly = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1×2 table] ClassNames: [1×0 double] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters: {} Properties, Methods
MdlEarly
incrementalClassificationNaiveBayes
объект модели. Все его свойства только для чтения.
MdlEarly
должно быть подходящим к данным, прежде чем можно будет использовать их, чтобы выполнить любые другие операции.
Загрузите набор данных деятельности человека. Случайным образом переставьте данные.
load humanactivity n = numel(actid); rng(1); % For reproducibility idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Подбирайте инкрементную модель к обучающим данным при помощи updateMetricsAndfit
функция. Симулируйте поток данных путем обработки фрагментов 50 наблюдений за один раз. В каждой итерации:
Процесс 50 наблюдений.
Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.
Хранилище (среднее значение первого переменного предиктора в первом классе), совокупные метрики и метрики окна, чтобы видеть, как они развиваются во время пошагового обучения.
% Preallocation numObsPerChunk = 50; nchunk = floor(n/numObsPerChunk); mc = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); mu1 = zeros(nchunk,1); % Incremental learning for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1); iend = min(n,numObsPerChunk*j); idx = ibegin:iend; MdlEarly = updateMetricsAndFit(MdlEarly,X(idx,:),Y(idx)); mc{j,:} = MdlEarly.Metrics{"MinimalCost",:}; mu1(j + 1) = MdlEarly.DistributionParameters{1,1}(1); end
MdlEarly
incrementalClassificationNaiveBayes
объект модели, обученный на всех данных в потоке. Во время пошагового обучения и после того, как модель подогревается, updateMetricsAndFit
проверяет эффективность модели на входящем наблюдении, и затем подбирает модель к тому наблюдению.
Чтобы видеть, как показатели производительности и развитый во время обучения, постройте их на отдельных подграфиках.
figure; subplot(2,1,1) plot(mu1) ylabel('\mu_{11}') xlim([0 nchunk]); subplot(2,1,2) h = plot(mc.Variables); xlim([0 nchunk]); ylabel('Minimal Cost') xline(MdlEarly.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,mc.Properties.VariableNames) xlabel('Iteration')
График предлагает тот updateMetricsAndFit
делает следующее:
Подгонка во время всех итераций пошагового обучения
Вычислите показатели производительности после метрического периода прогрева только.
Вычислите совокупные метрики во время каждой итерации.
Вычислите метрики окна после обработки 500 наблюдений.
Испытайте ожидаемое максимальное количество классов поздно в выборке
Создайте различную наивную модель Bayes для пошагового обучения для цели.
MdlLate = incrementalClassificationNaiveBayes('MaxNumClasses',5)
MdlLate = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1×2 table] ClassNames: [1×0 double] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters: {} Properties, Methods
Переместите все наблюдения, помеченные классом 5 в конец выборки.
idx5 = Y == 5; Xnew = [X(~idx5,:); X(idx5,:)]; Ynew = [Y(~idx5) ;Y(idx5)];
Подбирайте инкрементную модель и постройте результаты, как выполняется ранее.
mcnew = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); mu1new = zeros(nchunk,1); for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1); iend = min(n,numObsPerChunk*j); idx = ibegin:iend; MdlLate = updateMetricsAndFit(MdlLate,Xnew(idx,:),Ynew(idx)); mcnew{j,:} = MdlLate.Metrics{"MinimalCost",:}; mu1new(j + 1) = MdlLate.DistributionParameters{1,1}(1); end figure; subplot(2,1,1) plot(mu1new) ylabel('\mu_{11}') xlim([0 nchunk]); subplot(2,1,2) h = plot(mcnew.Variables); xlim([0 nchunk]); ylabel('Minimal Cost') xline(MdlLate.MetricsWarmupPeriod/numObsPerChunk,'r-.'); xline(sum(~idx5)/numObsPerChunk,'g-.'); legend(h,mcnew.Properties.VariableNames,'Location','best') xlabel('Iteration')
updateMetricsAndFit
функция обучается в течение пошагового обучения, но функция начинает отслеживать показатели производительности после того, как модель была подходящей ко всему ожидаемому количеству классов (зеленая вертикальная линия в нижнем подграфике).
В этом примере показано, как создать инкрементного наивного ученика Бейеса, когда вы знаете все имена классов в данных.
Считайте обучение устройством, чтобы предсказать, находится ли предмет, положение, обход, выполнение или танец на основе биометрических данных, измеренных на предмете, и вы знаете карту 1 - 5 имен классов к действию.
Создайте инкрементного наивного ученика Бейеса для изучения мультикласса. Задайте имена классов.
classnames = 1:5;
Mdl = incrementalClassificationNaiveBayes('ClassNames',classnames)
Mdl = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1x2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters: {5x0 cell} Properties, Methods
Mdl
incrementalClassificationNaiveBayes
объект модели. Все его свойства только для чтения.
Mdl
должно быть подходящим к данным, прежде чем можно будет использовать их, чтобы выполнить любые другие операции.
Загрузите набор данных деятельности человека. Случайным образом переставьте данные.
load humanactivity n = numel(actid); rng(1); % For reproducibility idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Подбирайте инкрементную модель к обучающим данным при помощи updateMetricsAndfit
функция. Симулируйте поток данных путем обработки фрагментов 50 наблюдений за один раз. В каждой итерации:
Процесс 50 наблюдений.
Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.
% Preallocation numObsPerChunk = 50; nchunk = floor(n/numObsPerChunk); % 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)); end
В дополнение к определению максимального количества имен классов подготовьте инкрементного наивного ученика Бейеса путем определения метрического периода прогрева, во время который updateMetricsAndFit
функция только подбирает модель. Задайте метрический размер окна 500 наблюдений.
Загрузите набор данных деятельности человека. Случайным образом переставьте данные.
load humanactivity
n = numel(actid);
idx = randsample(n,n);
X = feat(idx,:);
Y = actid(idx);
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Создайте инкрементную линейную модель для бинарной классификации. Сконфигурируйте модель можно следующим образом:
Задайте метрический период прогрева 5 000 наблюдений.
Задайте метрический размер окна 500 наблюдений.
Отследите ошибку классификации и минимальную стоимость, чтобы измерить уровень модели.
Mdl = incrementalClassificationNaiveBayes('MaxNumClasses',5,'MetricsWarmupPeriod',5000,... 'MetricsWindowSize',500,'Metrics',["classiferror" "mincost"])
Mdl = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [2x2 table] ClassNames: [1x0 double] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters: {} Properties, Methods
Mdl
incrementalClassificationNaiveBayes
объект модели сконфигурирован для пошагового обучения.
Подбирайте инкрементную модель к остальной части данных при помощи updateMetricsAndfit
функция. В каждой итерации:
Симулируйте поток данных путем обработки фрагмента 50 наблюдений.
Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.
Хранилище (стандартное отклонение первого переменного предиктора в первом классе), совокупные метрики и метрики окна, чтобы видеть, как они развиваются во время пошагового обучения.
% Preallocation numObsPerChunk = 50; nchunk = floor(n/numObsPerChunk); ce = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); mc = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); sigma11 = 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",:}; mc{j,:} = Mdl.Metrics{"MinimalCost",:}; sigma11(j + 1) = Mdl.DistributionParameters{1,1}(2); end
IncrementalMdl
incrementalClassificationNaiveBayes
объект модели, обученный на всех данных в потоке. Во время пошагового обучения и после того, как модель подогревается, updateMetricsAndFit
проверяет эффективность модели на входящем наблюдении, и затем подбирает модель к тому наблюдению.
Чтобы видеть, как показатели производительности и развитый во время обучения, постройте их на отдельных подграфиках.
figure; subplot(2,2,1) plot(sigma11) ylabel('\sigma_{11}') 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(mc.Variables); xlim([0 nchunk]); ylabel('Minimal Cost') xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,mc.Properties.VariableNames) xlabel('Iteration')
График предлагает тот updateMetricsAndFit
делает следующее:
Подгонка во время всех итераций пошагового обучения
Вычислите показатели производительности после метрического периода прогрева только.
Вычислите совокупные метрики во время каждой итерации.
Вычислите метрики окна после обработки 500 наблюдений (10 итераций).
Обучите наивную модель Bayes классификации мультиклассов при помощи fitcnb
, преобразуйте его в инкрементного ученика, отследите его эффективность и соответствуйте ему к потоковой передаче данных. Перенесите опции обучения от традиционного до пошагового обучения.
Загрузите и предварительно обработайте данные
Загрузите набор данных деятельности человека. Случайным образом переставьте данные.
load humanactivity rng(1); % For reproducibility n = numel(actid); idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Предположим, что данные собрались, когда предмет был неактивен (Y
> 2 ) имеет дважды качество чем тогда, когда предмет перемещался. Создайте переменную веса, которая приписывает 2 наблюдениям, собранным из неактивного предмета, и 1 к движущемуся предмету.
W = ones(n,1) + (Y < 3);
Обучите наивную байесовую модель
Подбирайте наивную модель Bayes для классификации мультиклассов к случайной выборке половины данных.
idxtt = randsample([true false],n,true);
TTMdl = fitcnb(X(idxtt,:),Y(idxtt),'Weights',W(idxtt))
TTMdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 12053 DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell} Properties, Methods
TTMdl
ClassificationNaiveBayes
объект модели, представляющий традиционно обученную наивную модель Bayes.
Преобразуйте обученную модель
Преобразуйте традиционно обученную наивную модель Бейеса в наивную модель классификации Бейеса для пошагового обучения.
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [1x2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell} Properties, Methods
Отдельно отследите показатели производительности и подбирайте модель
Выполните пошаговое обучение на остальной части данных при помощи updateMetrics
и fit
функции. Симулируйте поток данных путем обработки 50 наблюдений за один раз. В каждой итерации:
Вызовите updateMetrics
обновить совокупное и ошибку классификации окон модели, учитывая входящий фрагмент наблюдений. Перезапишите предыдущую инкрементную модель, чтобы обновить потери в Metrics
свойство. Обратите внимание на то, что функция не подбирает модель к фрагменту данных — фрагмент является "новыми" данными для модели. Задайте веса наблюдения.
Вызовите fit
подбирать модель к входящему фрагменту наблюдений. Перезапишите предыдущую инкрементную модель, чтобы обновить параметры модели. Задайте веса наблюдения.
Сохраните минимальную стоимость и среднее значение первого переменного предиктора первого класса .
% Preallocation idxil = ~idxtt; nil = sum(idxil); numObsPerChunk = 50; nchunk = floor(nil/numObsPerChunk); mc = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); mu11 = [IncrementalMdl.DistributionParameters{1,1}(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),... 'Weights',Wil(idx)); mc{j,:} = IncrementalMdl.Metrics{"MinimalCost",:}; IncrementalMdl = fit(IncrementalMdl,Xil(idx,:),Yil(idx),'Weights',Wil(idx)); mu11(j + 1) = IncrementalMdl.DistributionParameters{1,1}(1); end
IncrementalMdl
incrementalClassificationNaiveBayes
объект модели, обученный на всех данных в потоке.
В качестве альтернативы можно использовать updateMetricsAndFit
обновить показатели производительности модели, учитывая новый фрагмент данных, и затем подбирать модель к данным.
Постройте график трассировки показателей производительности и оцененного коэффициента .
figure; subplot(2,1,1) h = plot(mc.Variables); xlim([0 nchunk]); ylabel('Minimal Cost') legend(h,mc.Properties.VariableNames) subplot(2,1,2) plot(mu11) ylabel('\mu_11') xlim([0 nchunk]); xlabel('Iteration')
Совокупная потеря устойчива и постепенно уменьшается, тогда как потеря окна переходит.
изменения резко сначала, затем постепенно выравнивается как fit
процессы больше фрагментов.
В модели сумки лексем значении предиктора j является неотрицательным количеством случаев маркерного j в наблюдении. Количество категорий (интервалы) в модели многочлена является количеством отличных лексем (количество предикторов).
Incremental learning или online learning, является ветвью машинного обучения, касавшегося обработки входящих данных от потока данных, возможно, учитывая мало ни к какому знанию распределения переменных предикторов, аспектов предсказания или целевой функции (включая настройку значений параметров), или помечены ли наблюдения. Пошаговое обучение отличается от традиционного машинного обучения, где достаточно маркированных данных доступно, чтобы соответствовать к модели, выполните перекрестную проверку, чтобы настроить гиперпараметры и вывести распределение предиктора.
Учитывая входящие наблюдения, модель пошагового обучения обрабатывает данные любым из следующих способов, но обычно этим порядком:
Предскажите метки.
Измерьте прогнозирующий уровень.
Проверяйте на структурные пропуски или дрейфуйте в модели.
Подбирайте модель к входящим наблюдениям.
updateMetrics
и updateMetricsAndFit
функции отслеживают метрики производительности модели ('Metrics'
) из новых данных, когда инкрементной моделью является warm (IsWarm
свойство. Инкрементная модель является теплой когда fit
или updateMetricsAndFit
выполните оба из следующих действий:
Подбирайте инкрементную модель к наблюдениям MetricsWarmupPeriod, которая является metrics warm-up period.
Процесс MaxNumClasses
классы или все имена классов заданы ClassNames
аргумент значения имени.
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 измерений от предыдущего пакета.
Если переменный предиктор j
имеет условное нормальное распределение (см. DistributionNames
свойство), программное обеспечение соответствует распределению к данным путем вычисления специфичного для класса взвешенного среднего и смещенного (наибольшее правдоподобие) оценка взвешенного стандартного отклонения. Для каждого класса k:
Взвешенное среднее предиктора j
где wi является весом для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.
Несмещенное средство оценки взвешенного стандартного отклонения предиктора j
Если все переменные предикторы составляют условное распределение многочлена (см. DistributionNames
свойство), программное обеспечение соответствует распределению с помощью Модели Сумки Лексем. Программное обеспечение хранит вероятность тот маркерный j
появляется в классе k
в свойстве DistributionParameters {
. С дополнением, сглаживающим [1], предполагаемая вероятностьk
J
}
где:
который является взвешенным количеством случаев маркерного j в классе k.
nk является количеством наблюдений в классе k.
вес для наблюдения i. Программное обеспечение нормирует веса в классе так, чтобы они суммировали к априорной вероятности для того класса.
который является общим взвешенным количеством случаев всех лексем в классе k.
Если переменный предиктор j
имеет условное многомерное распределение многочлена (см. DistributionNames
свойство), программное обеспечение выполняет эту процедуру:
Программное обеспечение собирает список уникальных уровней, хранит отсортированный список в CategoricalLevels
, и считает каждый уровень интервалом. Каждая комбинация предиктора и класса является отдельной, независимой случайной переменной многочлена.
Для каждого класса k, экземпляры программно-реализованных счетчиков каждого категориального уровня с помощью списка, сохраненного в CategoricalLevels {
.j
}
Программное обеспечение хранит вероятность тот предиктор j
в классе k
имеет уровень L в свойстве DistributionParameters {
, для всех уровней в k
J
}CategoricalLevels {
. С дополнением, сглаживающим [1], предполагаемая вероятностьj
}
где:
который является взвешенным количеством наблюдений, для которого предиктора j равняется L в классе k.
nk является количеством наблюдений в классе k.
если xij = L, и 0 в противном случае.
вес для наблюдения i. Программное обеспечение нормирует веса в классе так, чтобы они суммировали к априорной вероятности для того класса.
mj является количеством отличных уровней в предикторе j.
mk является взвешенным количеством наблюдений в классе k.
Поведение изменяется в R2021b
Запуск в R2021b, наивный Бейес инкрементные подходящие функции fit
и updateMetricsAndFit
вычислите смещенный (наибольшее правдоподобие) оценки взвешенных стандартных отклонений для условно нормальных переменных предикторов во время обучения. Другими словами, для каждого класса k, инкрементные подходящие функции нормируют сумму взвешенных отклонений квадрата условно нормального предиктора xj суммой весов в классе k. Перед R2021b наивный Бейес инкрементные подходящие функции вычислили несмещенное стандартное отклонение, как fitcnb
. В настоящее время возвращенные взвешенные оценки стандартного отклонения отличаются от вычисленных перед R2021b на коэффициент
Фактор приближается 1, когда объем выборки увеличивается.
[1] Укомплектование людьми, Кристофер Д., Prabhakar Raghavan и Hinrich Schütze. Введение в Информэйшн-Ретривэл, Нью-Йорк: Издательство Кембриджского университета, 2008.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.