Наивный классификатор Байеса предназначен для использования, когда предикторы независимы друг от друга в каждом классе, но он, по-видимому, хорошо работает на практике, даже когда это предположение независимости не является действительным. Данные классифицируются в два этапа:
Тренировочный шаг: Используя обучающие данные, метод оценивает параметры распределения вероятностей, предполагая, что предикторы условно независимы, учитывая класс.
Шаг прогнозирования: Для любых невидимых тестовых данных метод вычисляет апостериорную вероятность выборки, принадлежащей каждому классу. Затем метод классифицирует тестовые данные в соответствии с наибольшей апостериорной вероятностью.
Предположение об условной независимости класса значительно упрощает тренировочный шаг, поскольку можно оценить одномерную условную плотность класса для каждого предиктора по отдельности. Хотя обусловленная классом независимость между предикторами в целом не верна, исследования показывают, что это оптимистическое предположение хорошо работает на практике. Это предположение о классово-условной независимости предикторов позволяет наивному классификатору Байеса оценивать параметры, необходимые для точной классификации, при использовании меньшего количества обучающих данных, чем многие другие классификаторы. Это делает его особенно эффективным для наборов данных, содержащих множество предикторов.
Тренировочный шаг в наивной классификации Байеса основан на оценке P (X 'Y), вероятности или плотности вероятности предикторовX данный класс Y. Наивная модель классификации Байеса ClassificationNaiveBayes и функции обучения fitcnb обеспечивают поддержку нормальных (гауссовых), ядровых, полиномиальных и многомерных, полиномиальных предикторных условных распределений. Чтобы указать распределения для предикторов, используйте DistributionNames аргумент пары имя-значение fitcnb. Можно указать один тип распределения для всех предикторов, предоставив вектор символов или скаляр строки, соответствующий имени распределения, или указать различные распределения для предикторов, предоставив массив строк длины D или массив ячеек векторов символов, где D - количество предикторов (то есть количество столбцов X).
'normal' распределение (указать с помощью 'normal' ) подходит для предикторов, которые имеют нормальные распределения в каждом классе. Для каждого предсказателя, моделируемого с нормальным распределением, наивный классификатор Байеса оценивает отдельное нормальное распределение для каждого класса, вычисляя среднее и стандартное отклонение обучающих данных в этом классе.
'kernel' распределение (указать с помощью 'kernel') подходит для предикторов, которые имеют непрерывное распределение. Это не требует сильного предположения, такого как нормальное распределение, и вы можете использовать его в случаях, когда распределение предиктора может быть скошено или иметь несколько пиков или режимов. Для этого требуется больше вычислительного времени и памяти, чем для обычного распределения. Для каждого предсказателя, моделируемого с распределением ядра, наивный классификатор Байеса вычисляет отдельную оценку плотности ядра для каждого класса на основе обучающих данных для этого класса. По умолчанию ядро является нормальным ядром, и классификатор выбирает ширину автоматически для каждого класса и предиктора. Программное обеспечение поддерживает указание различных ядер для каждого предиктора и различной ширины для каждого предиктора или класса.
Многомерное, полиномиальное распределение (укажите, используя 'mvmn') подходит для предсказателя, чьи наблюдения категоричны. Наивная конструкция классификатора Байеса с использованием многомерного полиномиального предиктора описана ниже. Чтобы проиллюстрировать шаги, рассмотрим пример, где наблюдения помечены 0, 1 или 2, и предиктор погоды при проведении выборки.
Запишите различные категории, представленные в наблюдениях всего предиктора. Например, различные категории (или предикторные уровни) могут включать солнечные, дождевые, снежные и облачные.
Разделите наблюдения по классу ответа. Например, можно отделить наблюдения с меткой 0 от наблюдений с меткой 1 и 2, а наблюдения с меткой 1 от наблюдений с меткой 2.
Для каждого класса ответа подгоняйте полиномиальную модель, используя относительные частоты категории и общее количество наблюдений. Например, для наблюдений, помеченных 0, оценочная вероятность солнечности равна 0 = (количество солнечных наблюдений с меткой 0 )/( количество наблюдений с меткой 0) и аналогична для других категорий и меток ответа.
Классово-условные, полиномиальные случайные величины содержат многомерную полиномиальную случайную величину.
Вот некоторые другие свойства наивных байесовских классификаторов, которые используют многомерные полиномиальные.
Для каждого предсказателя, который вы моделируете с многомерным полиномиальным распределением, наивный классификатор Байеса:
Записывает отдельный набор различных уровней предиктора для каждого предиктора
Вычисляет отдельный набор вероятностей для набора уровней предиктора для каждого класса.
Программное обеспечение поддерживает моделирование непрерывных предикторов как многомерных полиномиальных. В этом случае предикторными уровнями являются отдельные проявления измерения. Это может привести к тому, что предиктор будет иметь много уровней предиктора. Рекомендуется дискретизировать такие предикторы.
Если наблюдение представляет собой набор успехов для различных категорий (представленных всеми предикторами) из фиксированного числа независимых испытаний, тогда укажите, что предикторы содержат полиномиальное распределение. Дополнительные сведения см. в разделе Мультиномиальное распределение.
Полиномиальное распределение (укажите с помощью 'DistributionNames','mn') подходит, когда, учитывая класс, каждое наблюдение является полиномиальной случайной величиной. То есть наблюдение, или строка, j данных предиктора X представляет D-категории, где xjd - количество успехов для категории (то есть предиктора) d во независимых испытаниях. Шаги по обучению наивного байесовского классификатора намечены далее.
Для каждого класса установите полиномиальное распределение для предикторов, заданных классом:
Агрегирование взвешенных значений категории по всем наблюдениям. Кроме того, программное обеспечение реализует аддитивное сглаживание [1].
Оценка вероятностей категорий D в каждом классе с использованием агрегированных счетчиков категорий. Эти вероятности категорий составляют параметры вероятности полиномиального распределения.
Пусть новое наблюдение имеет общий подсчет м. Тогда наивный классификатор Байеса:
Устанавливает параметр полного счета каждого полиномиального распределения в m
Для каждого класса оценивает апостериорную вероятность класса, используя оцененные полиномиальные распределения
Предсказывает наблюдение в класс, соответствующий наибольшей апостериорной вероятности
Рассмотрим так называемую модель сумок-жетонов, где есть сумка, содержащая ряд жетонов различных типов и пропорций. Каждый предиктор представляет отдельный тип маркера в пакете, наблюдение представляет собой n независимых розыгрышей (то есть с заменой) маркеров из пакета, и данные представляют собой вектор подсчетов, где элемент d является числом появления маркера d.
Приложение машинного обучения представляет собой конструкцию классификатора нежелательной почты, где каждый предиктор представляет слово, символ или фразу (то есть маркер), наблюдение представляет собой сообщение электронной почты, а данные представляют собой подсчет маркеров в сообщении электронной почты. Один предиктор может считать количество восклицательных знаков, другой - число появления слова «деньги», а другой - число появления имени получателя. Это наивная модель Байеса при дальнейшем предположении, что общее количество токенов (или общая длина документа) не зависит от класса ответа.
Другие свойства наивных байесовских классификаторов, которые используют полиномиальные наблюдения, включают в себя:
Классификация основана на относительных частотах категорий. Если nj = 0 для наблюдения j, то классификация невозможна для этого наблюдения.
Предикторы не являются условно независимыми, поскольку они должны суммироваться с nj.
Наивный Байес не подходит, когда nj предоставляет информацию о классе. То есть этот классификатор требует, чтобы nj был независим от класса.
Если указать, что предикторы условно полиномиальны, то программное обеспечение применяет эту спецификацию ко всем предикторам. Другими словами, нельзя включать 'mn' в массиве ячеек при указании 'DistributionNames'.
Если предиктор категоричен, т.е. является полиномиальным в классе ответа, то укажите, что он является многомерным полиномиальным. Дополнительные сведения см. в разделе Многомерное многомерное распределение.
[1] Мэннинг, К. Д., П. Рагхаван и М. Шютце. Введение в поиск информации, Нью-Йорк: Cambridge University Press, 2008.