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