Компактный наивный классификатор Байеса для классификации мультиклассов
CompactClassificationNaiveBayes
компактная версия наивного классификатора Байеса. Компактный классификатор не включает данные, используемые для обучения наивный классификатор Байеса. Поэтому вы не можете выполнить некоторые задачи, такие как перекрестная проверка, с помощью компактного классификатора. Используйте компактный наивный классификатор Байеса для задач, таких как предсказание меток данных.
Создайте CompactClassificationNaiveBayes
модель от полного, обученного ClassificationNaiveBayes
классификатор при помощи compact
.
PredictorNames
— Имена предиктораЭто свойство доступно только для чтения.
Предиктор называет в виде массива ячеек из символьных векторов. Порядок элементов в PredictorNames
соответствует порядку, в котором имена предиктора появляются в обучающих данных X
.
ExpandedPredictorNames
— Расширенные имена предиктораЭто свойство доступно только для чтения.
Расширенный предиктор называет в виде массива ячеек из символьных векторов.
Если модель использует фиктивное переменное кодирование для категориальных переменных, то ExpandedPredictorNames
включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames
совпадает с PredictorNames
.
CategoricalPredictors
— Категориальные индексы предиктора[]
| вектор из положительных целых чиселЭто свойство доступно только для чтения.
Категориальные индексы предиктора в виде вектора из положительных целых чисел. CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: single
| double
CategoricalLevels
— Многомерные уровни многочленаЭто свойство доступно только для чтения.
Многомерные уровни многочлена в виде массива ячеек. Длина CategoricalLevels
равно количеству предикторов (size(X,2)
).
Ячейки CategoricalLevels
соответствуйте предикторам, которые вы задаете как 'mvmn'
во время обучения, то есть, у них есть многомерное распределение многочлена. Ячейки, которые не соответствуют многомерному распределению многочлена, пусты ([]
).
Если предиктор j является многомерным многочленом, то CategoricalLevels{
j список всех отличных значений предиктора j в выборке.
NaN
s удалены из unique(X(:,j))
.
DistributionNames
— Распределения предиктора'normal'
(значение по умолчанию) | 'kernel'
| 'mn'
| 'mvmn'
| массив ячеек из символьных векторовЭто свойство доступно только для чтения.
Распределения предиктора в виде вектора символов или массива ячеек из символьных векторов. fitcnb
использует распределения предиктора, чтобы смоделировать предикторы. Эта таблица приводит доступные распределения.
Значение | Описание |
---|---|
'kernel' | Ядро, сглаживающее оценку плотности |
'mn' | Распределение многочлена. Если вы задаете mn , затем всеми функциями являются компоненты распределения многочлена. Поэтому вы не можете включать 'mn' как элемент массива строк или массива ячеек из символьных векторов. Для получения дополнительной информации смотрите Предполагаемую Вероятность для Распределения Многочлена. |
'mvmn' | Многомерное полиномиальное распределение. Для получения дополнительной информации смотрите Предполагаемую Вероятность для Многомерного Распределения Многочлена. |
'normal' | Нормальное (Гауссово) распределение |
Если DistributionNames
1 P массивом ячеек из символьных векторов, затем fitcnb
моделирует функцию j с помощью распределения в элементе j массива ячеек.
Пример: 'mn'
Пример: {'kernel','normal','kernel'}
Типы данных: char |
string
| cell
DistributionParameters
— Оценки параметра распределенияЭто свойство доступно только для чтения.
Параметр распределения оценивает в виде массива ячеек. DistributionParameters
K-by-D массив ячеек, где ячейка (k, d) содержит оценки параметра распределения для экземпляров предиктора d в классе k. Порядок строк соответствует порядку классов в свойстве ClassNames
, и порядок предикторов соответствует порядку столбцов X
.
Если класс k
не имеет никаких наблюдений для предиктора j
, затем Распределение {
k
J
}isempty
).
Элементы DistributionParameters
зависьте от распределений предикторов. Эта таблица описывает значения в DistributionParameters {
.k
J
}
Распределение предиктора j | Значение массива ячеек для предиктора j и класс k |
---|---|
kernel | KernelDistribution модель. Отобразите индексацию ячейки использования свойств и запись через точку. Например, чтобы отобразить предполагаемую пропускную способность плотности ядра для предиктора 2 в третьем классе, используйте Mdl.DistributionParameters{3,2}.BandWidth . |
mn | Скаляр, представляющий вероятность, что маркерный j появляется в классе k. Для получения дополнительной информации смотрите Предполагаемую Вероятность для Распределения Многочлена. |
mvmn | Числовой вектор, содержащий вероятности для каждого возможного уровня предиктора j в классе k. Программное обеспечение заказывает вероятности согласно отсортированному порядку всех уникальных уровней предиктора j (сохраненный в свойстве CategoricalLevels ). Для получения дополнительной информации смотрите Предполагаемую Вероятность для Многомерного Распределения Многочлена. |
normal | 2 1 числовой вектор. Первым элементом является демонстрационное среднее значение, и вторым элементом является демонстрационное стандартное отклонение. |
Kernel
— Ядро более сглаженный тип'normal'
(значение по умолчанию) | 'box'
| массив ячеек |...Это свойство доступно только для чтения.
Ядро более сглаженный тип в виде имени ядра или массива ячеек имен ядра. Длина Kernel
равно количеству предикторов (size(X,2)
). Kernel{
j соответствует предиктору j и содержит вектор символов, описывающий тип более сглаженного ядра. Если ячейка пуста (
[]
то fitcnb
не соответствовал ядерному распределению к соответствующему предиктору.
Эта таблица описывает поддерживаемое ядро более сглаженные типы. I {u} обозначает функцию индикатора.
Значение | Ядро | Формула |
---|---|---|
'box' | Поле (универсальная форма) |
|
'epanechnikov' | Епанечников |
|
'normal' | Гауссов |
|
'triangle' | Треугольный |
|
Пример: 'box'
Пример: {'epanechnikov','normal'}
Типы данных: char |
string
| cell
Support
— Ядро более сглаженная поддержка плотностиЭто свойство доступно только для чтения.
Ядро более сглаженная поддержка плотности в виде массива ячеек. Длина Support
равно количеству предикторов (size(X,2)
). Ячейки представляют области который fitcnb
применяет плотность ядра. Если ячейка пуста ([]
то fitcnb
не соответствовал ядерному распределению к соответствующему предиктору.
Эта таблица описывает поддерживаемые опции.
Значение | Описание |
---|---|
1 2 числовой вектор-строка | Поддержка плотности применяется к заданным границам, например, [L,U] , где L и U конечные нижние и верхние границы, соответственно. |
'positive' | Поддержка плотности применяется ко всем положительным действительным значениям. |
'unbounded' | Поддержка плотности применяется ко всем действительным значениям. |
Width
— Ядро более сглаженная ширина окнаЭто свойство доступно только для чтения.
Ядро более сглаженная ширина окна в виде числовой матрицы. Width
K-by-P матрица, где K является количеством классов в данных, и P является количеством предикторов (size(X,2)
).
Ширина (
ядро более сглаженная ширина окна для плотности сглаживания ядра предиктора k
J
)j
в классе k
NaN
s в столбце j
укажите на это fitcnb
не соответствовал предиктору j
использование плотности ядра.
ClassNames
— Уникальные имена классовЭто свойство доступно только для чтения.
Уникальные имена классов, используемые в учебной модели в виде категориального или символьного массива, логического или числового вектора или массива ячеек из символьных векторов.
ClassNames
имеет совпадающий тип данных как Y
, и имеет элементы K (или строки) для символьных массивов. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
Типы данных: categorical
| char
| string
| logical
| double
| cell
ResponseName
— Имя переменной откликаЭто свойство доступно только для чтения.
Имя переменной отклика в виде вектора символов.
Типы данных: char |
string
Prior
— Априорные вероятностиАприорные вероятности в виде числового вектора. Порядок элементов в Prior
соответствует элементам Mdl.ClassNames
.
fitcnb
нормирует априорные вероятности, вы устанавливаете использование 'Prior'
аргумент пары "имя-значение", так, чтобы sum(Prior)
= 1 .
Значение Prior
не влияет на модель оптимальной подгонки. Поэтому можно сбросить Prior
после учебного Mdl
использование записи через точку.
Пример: Mdl.Prior = [0.2 0.8]
Типы данных: double |
single
Cost
— Misclassification стоитсяСтоимость Misclassification в виде числовой квадратной матрицы, где Cost(i,j)
стоимость классификации точки в класс j
если его истинным классом является i
. Строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Порядок строк и столбцов Cost
соответствует порядку классов в ClassNames
.
Матрица стоимости misclassification должна иметь нули на диагонали.
Значение Cost
не влияет на обучение. Можно сбросить Cost
после учебного Mdl
использование записи через точку.
Пример: Mdl.Cost = [0 0.5 ; 1 0]
Типы данных: double |
single
ScoreTransform
— Преобразование классификационной оценки'none'
(значение по умолчанию) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| указатель на функцию |...Преобразование классификационной оценки в виде вектора символов или указателя на функцию. Эта таблица суммирует доступные векторы символов.
Значение | Описание |
---|---|
'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® или функции вы задаете, используете ее указатель на функцию для преобразования счета. Указатель на функцию должен принять матрицу (исходные баллы) и возвратить матрицу, одного размера (преобразованные баллы).
Пример: Mdl.ScoreTransform = 'logit'
Типы данных: char |
string
| function handle
compareHoldout | Сравните точность двух моделей классификации с помощью новых данных |
edge | Ребро классификации для наивного классификатора Байеса |
lime | Локальные поддающиеся толкованию объяснения модели агностические (LIME) |
logp | Регистрируйте безусловную плотность вероятности для наивного классификатора Байеса |
loss | Потеря классификации для наивного классификатора Байеса |
margin | Поля классификации для наивного классификатора Байеса |
partialDependence | Вычислите частичную зависимость |
plotPartialDependence | Создайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP) |
predict | Классифицируйте наблюдения с помощью наивного классификатора Байеса |
shapley | Шепли оценивает |
Уменьшайте размер полного наивного классификатора Байеса путем удаления обучающих данных. Полные наивные классификаторы Байеса содержат обучающие данные. Можно использовать компактный наивный классификатор Байеса, чтобы повысить эффективность памяти.
Загрузите ionosphere
набор данных. Удалите первые два предиктора для устойчивости.
load ionosphere
X = X(:,3:end);
Обучите наивный классификатор Байеса с помощью предикторов X
и класс маркирует Y
. Методические рекомендации должны задать имена классов. fitcnb
принимает, что каждый предиктор условно и нормально распределен.
Mdl = fitcnb(X,Y,'ClassNames',{'b','g'})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell} Properties, Methods
Mdl
обученный ClassificationNaiveBayes
классификатор.
Уменьшайте размер наивного классификатора Байеса.
CMdl = compact(Mdl)
CMdl = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell} Properties, Methods
CMdl
обученный CompactClassificationNaiveBayes
классификатор.
Отобразите объем памяти, используемый каждым классификатором.
whos('Mdl','CMdl')
Name Size Bytes Class Attributes CMdl 1x1 15060 classreg.learning.classif.CompactClassificationNaiveBayes Mdl 1x1 111174 ClassificationNaiveBayes
Полный наивный классификатор Байеса (Mdl
) больше чем в семь раз больше, чем компактный наивный классификатор Байеса (CMdl
).
Чтобы пометить новые наблюдения эффективно, можно удалить Mdl
от MATLAB® Workspace, и затем передают CMdl
и новые значения предиктора к predict
.
Обучите и перекрестный подтвердите наивный классификатор Байеса. fitcnb
реализует 10-кратную перекрестную проверку по умолчанию. Затем оцените перекрестную подтвержденную ошибку классификации.
Загрузите ionosphere
набор данных. Удалите первые два предиктора для устойчивости.
load ionosphere X = X(:,3:end); rng('default') % for reproducibility
Обучите и перекрестный подтвердите наивный классификатор Байеса с помощью предикторов X
и класс маркирует Y
. Методические рекомендации должны задать имена классов. fitcnb
принимает, что каждый предиктор условно и нормально распределен.
CVMdl = fitcnb(X,Y,'ClassNames',{'b','g'},'CrossVal','on')
CVMdl = ClassificationPartitionedModel CrossValidatedModel: 'NaiveBayes' PredictorNames: {1x32 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods
CVMdl
ClassificationPartitionedModel
перекрестный подтвержденный, наивный классификатор Байеса. В качестве альтернативы можно перекрестный подтвердить обученный ClassificationNaiveBayes
модель путем передачи его crossval
.
Отобразите первый учебный сгиб CVMdl
использование записи через точку.
CVMdl.Trained{1}
ans = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell} Properties, Methods
Каждым сгибом является CompactClassificationNaiveBayes
модель, обученная на 90% данных.
Полные и компактные наивные модели Bayes не используются для предсказания на новых данных. Вместо этого используйте их, чтобы оценить ошибку обобщения путем передачи CVMdl
к kfoldLoss
.
genError = kfoldLoss(CVMdl)
genError = 0.1852
В среднем ошибка обобщения составляет приблизительно 19%.
Можно задать различное условное распределение для предикторов или настроить параметры условного распределения, чтобы уменьшать ошибку обобщения.
В модели сумки лексем значении предиктора j является неотрицательным количеством случаев маркерного j в наблюдении. Количество категорий (интервалы) в модели многочлена является количеством отличных лексем (количество предикторов).
Naive Bayes является алгоритмом классификации, который применяет оценку плотности данными.
Алгоритм усиливает теорему Бейеса, и (наивно) принимает, что предикторы условно независимы, учитывая класс. Несмотря на то, что предположение обычно нарушается на практике, наивные классификаторы Байеса имеют тенденцию давать к апостериорным распределениям, которые устойчивы к смещенным оценкам плотности класса, особенно где следующее 0.5 (контур решения) [1].
Наивные классификаторы Байеса присваивают наблюдения самому вероятному классу (другими словами, правило решения maximum a posteriori). Явным образом алгоритм делает эти шаги:
Оцените плотность предикторов в каждом классе.
Апостериорные вероятности модели согласно правилу Бейеса. Таким образом, для всего k = 1..., K,
где:
Y является случайной переменной, соответствующей индексу класса наблюдения.
X 1..., XP является случайными предикторами наблюдения.
априорная вероятность, что индексом класса является k.
Классифицируйте наблюдение путем оценки апостериорной вероятности для каждого класса, и затем присвойте наблюдение классу, дающему к максимальной апостериорной вероятности.
Если предикторы составляют распределение многочлена, то апостериорная вероятность где функция вероятностной меры распределения многочлена.
Если вы задаете 'DistributionNames','mn'
когда учебный Mdl
использование fitcnb
, затем программное обеспечение соответствует распределению многочлена с помощью Модели Сумки Лексем. Программное обеспечение хранит вероятность тот маркерный j
появляется в классе k
в свойстве DistributionParameters {
. С дополнением, сглаживающим [2], предполагаемая вероятностьk
J
}
где:
который является взвешенным количеством случаев маркерного j в классе k.
nk является количеством наблюдений в классе k.
вес для наблюдения i. Программное обеспечение нормирует веса в классе так, чтобы они суммировали к априорной вероятности для того класса.
который является общим взвешенным количеством случаев всех лексем в классе k.
Если вы задаете 'DistributionNames','mvmn'
когда учебный Mdl
использование fitcnb
, затем программное обеспечение делает эти шаги:
Для каждого предиктора программное обеспечение собирает список уникальных уровней, хранит отсортированный список в CategoricalLevels
, и считает каждый уровень интервалом. Каждая комбинация предиктора и класса является отдельной, независимой случайной переменной многочлена.
Для предиктора j
в классе k, экземпляры программно-реализованных счетчиков каждого категориального уровня с помощью списка, сохраненного в CategoricalLevels {
.j
}
Программное обеспечение хранит вероятность тот предиктор j
в классе k
имеет уровень L в свойстве DistributionParameters {
, для всех уровней в k
J
}CategoricalLevels {
. С дополнением, сглаживающим [2], предполагаемая вероятностьj
}
где:
который является взвешенным количеством наблюдений, для которого предиктора j равняется L в классе k.
nk является количеством наблюдений в классе k.
если xij = L, и 0 в противном случае.
вес для наблюдения i. Программное обеспечение нормирует веса в классе так, чтобы они суммировали к априорной вероятности для того класса.
mj является количеством отличных уровней в предикторе j.
mk является взвешенным количеством наблюдений в классе k.
[1] Hastie, Тревор, Роберт Тибширэни и Джером Фридман. Элементы Статистического Изучения: Анализ данных, Вывод и Предсказание. 2-й Ряд редактора Спрингера в Статистике. Нью-Йорк, Нью-Йорк: Спрингер, 2009. https://doi.org/10.1007/978-0-387-84858-7.
[2] Укомплектование людьми, Кристофер Д., Prabhakar Raghavan и Hinrich Schütze. Введение в Информэйшн-Ретривэл, Нью-Йорк: Издательство Кембриджского университета, 2008.
Указания и ограничения по применению:
predict
функционируйте генерация кода поддержек.
Когда вы обучаете наивную модель Bayes при помощи fitcnb
, следующие ограничения применяются.
Значение 'DistributionNames'
аргумент пары "имя-значение" не может содержать 'mn'
.
Значение 'ScoreTransform'
аргументом пары "имя-значение" не может быть анонимная функция.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.