От StatSoft, Inc. (2013), Электронный учебник статистики , «Наивный байесовский классификатор» :
Чтобы продемонстрировать концепцию наивной байесовской классификации, рассмотрим пример, показанный на иллюстрации выше. Как указано, объекты могут быть классифицированы как ЗЕЛЕНЫЙ или КРАСНЫЙ. Моя задача состоит в том, чтобы классифицировать новые случаи по мере их поступления, т. Е. Решать, к какой метке класса они принадлежат, на основе существующих в данный момент объектов.
Поскольку GREEN-объектов в два раза больше, чем RED, разумно полагать, что новый случай (который еще не наблюдался) имеет в два раза больше шансов на получение GREEN, чем RED. В байесовском анализе это убеждение известно как априорная вероятность. Предыдущие вероятности основаны на предыдущем опыте, в данном случае проценте ЗЕЛЕНЫХ и КРАСНЫХ объектов, и часто используются для прогнозирования результатов до того, как они действительно произойдут.
Таким образом, мы можем написать:
Поскольку существует всего 60 объектов, 40 из которых ЗЕЛЕНЫЕ и 20 КРАСНЫХ, наши предыдущие вероятности для членства в классе:
Сформулировав нашу предыдущую вероятность, мы теперь готовы классифицировать новый объект (БЕЛЫЙ круг). Поскольку объекты хорошо сгруппированы, разумно предположить, что чем больше ЗЕЛЕНЫХ (или КРАСНЫХ) объектов в окрестности X, тем больше вероятность того, что новые случаи принадлежат именно этому цвету. Чтобы измерить эту вероятность, мы нарисуем круг вокруг X, который охватывает количество (выбираемое априори) точек независимо от их меток класса. Затем мы вычисляем количество точек в круге, принадлежащих каждой метке класса. Из этого мы рассчитываем вероятность:
Из иллюстрации выше видно, что вероятность X для данного ЗЕЛЕНОГО меньше, чем вероятность X для КРАСНОГО, поскольку круг охватывает 1 ЗЕЛЕНЫЙ объект и 3 КРАСНЫХ. Таким образом:
Хотя предыдущие вероятности указывают, что X может принадлежать ЗЕЛЕНОМУ (учитывая, что ЗЕЛЕНОГО в два раза больше, чем КРАСНОГО), вероятность указывает на обратное; что членство в классе X является КРАСНЫМ (учитывая, что в окрестностях X больше КРАСНЫХ объектов, чем ЗЕЛЕНЫХ). В байесовском анализе окончательная классификация производится путем объединения обоих источников информации, т. Е. Предварительного и вероятностного, для формирования апостериорной вероятности с использованием так называемого правила Байеса (названного в честь преподобного Томаса Байеса 1702-1761).
Наконец, мы классифицируем X как RED, поскольку членство в классе достигает наибольшей апостериорной вероятности.
Вот тут-то и возникает трудность моего понимания математики.
p (Cj | x1, x2, x ..., xd) - апостериорная вероятность принадлежности к классу, т. е. вероятность того, что X принадлежит Cj, но зачем писать это так?
Расчет вероятности?
Задняя вероятность?
Я никогда не занимался математикой, но мое понимание наивного байесовского сознания хорошо, я думаю, что когда дело доходит до этих разложенных методов, меня смущает. Может ли кто-нибудь помочь с визуализацией этих методов и как написать математику понятным способом?
Ответы:
Я собираюсь пройти весь процесс наивного Байеса с нуля, так как мне не совсем ясно, где вы зависаете.
Мы хотим найти вероятность того, что новый пример принадлежит каждому классу: ). Затем мы вычисляем эту вероятность для каждого класса и выбираем наиболее вероятный класс. Проблема в том, что у нас обычно нет таких вероятностей. Однако теорема Байеса позволяет переписать это уравнение в более удобной форме.P(class|feature1,feature2,...,featuren
Теорема Байеса есть просто или в терминах нашей задачи:P(A|B)=P(B|A)⋅P(A)P(B) P(class|features)=P(features|class)⋅P(class)P(features)
Мы можем упростить это, удалив . Мы можем сделать это, потому что мы собираемся ранжировать для каждого значения ; будут одинаковыми каждый раз - это не зависит от . Это оставляет нас сP(features) P(class|features) class P(features) class P(class|features)∝P(features|class)⋅P(class)
Предыдущие вероятности, , можно рассчитать, как вы описали в своем вопросе.P(class)
Это оставляет . Мы хотим исключить огромную и, вероятно, очень разреженную, совместную вероятность . Если каждая функция независима, то Даже если они на самом деле не являются независимыми, мы можем предположить, что они (это " Наивная "часть наивного Байеса). Лично я считаю, что проще обдумать это для дискретных (то есть категориальных) переменных, поэтому давайте воспользуемся немного другой версией вашего примера. Здесь я разделил каждое измерение элемента на две категориальные переменные.P(features|class) P(feature1,feature2,...,featuren|class) P(feature1,feature2,...,featuren|class)=∏iP(featurei|class)
,
Пример: тренировка классификатора
Для обучения классификатора мы подсчитываем различные поднаборы точек и используем их для вычисления априорной и условной вероятностей.
Приоры тривиальны: всего шестьдесят очков, сорок - зеленые, а двадцать - красные. Таким образом,P(class=green)=4060=2/3 and P(class=red)=2060=1/3
Далее мы должны вычислить условные вероятности каждого значения признака данного класса. Здесь есть две функции: и , каждая из которых принимает одно из двух значений (A или B для одного, X или Y для другого). Поэтому нам необходимо знать следующее:feature1 feature2
Их легко вычислить, посчитав и разделив тоже. Например, для мы смотрим только на красные точки и подсчитываем, сколько из них находится в области «A» для . Есть двадцать красных точек, все из которых находятся в области «A», поэтому . Ни одна из красных точек не находится в области B, поэтому . Далее мы делаем то же самое, но рассматриваем только зеленые точки. Это дает нам и . Мы повторяем этот процесс для , чтобы округлить таблицу вероятностей. Предполагая, что я рассчитал правильно, мы получаемP(feature1=A|class=red) feature1 P(feature1=A|class=red)=20/20=1 P(feature1|class=red)=0/20=0 P(feature1=A|class=green)=5/40=1/8 P(feature1=B|class=green)=35/40=7/8 feature2
Эти десять вероятностей (два априора плюс восемь условных выражений) являются нашей моделью
Классификация нового примера
Давайте классифицируем белую точку из вашего примера. Он находится в области «A» для и области «Y» для . Мы хотим найти вероятность того, что это в каждом классе. Давайте начнем с красного. Используя формулу выше, мы знаем, что: Subbing по вероятностям из таблицы получаемfeature1 feature2 P(class=red|example)∝P(class=red)⋅P(feature1=A|class=red)⋅P(feature2=Y|class=red)
Подстановка в этих значениях дает нам 0 ( ). Наконец, мы смотрим, какой класс дал нам наибольшую вероятность. В данном случае это явно красный класс, так что именно здесь мы назначаем точку.2/3⋅0⋅2/10
Примечания
В вашем исходном примере функции непрерывны. В этом случае вам нужно найти какой-то способ присвоения P (feature = value | class) для каждого класса. Тогда вы можете рассмотреть возможность подгонки к известному распределению вероятностей (например, гауссову). Во время обучения вы найдете среднее значение и дисперсию для каждого класса по каждому измерению. Чтобы классифицировать точку, вы должны найти , подключив соответствующее среднее значение и дисперсию для каждого класса. Другие распределения могут быть более подходящими, в зависимости от особенностей ваших данных, но гауссиан будет хорошей отправной точкой.P(feature=value|class)
Я не слишком знаком с набором данных DARPA, но вы, по сути, делаете то же самое. Вы, вероятно, в конечном итоге вычислите что-то вроде P (атака = TRUE | служба = палец), P (атака = ложь | служба = палец), P (атака = TRUE | служба = ftp) и т. Д., А затем объедините их в так же, как в примере. Как примечание стороны, часть уловки здесь состоит в том, чтобы придумать хорошие особенности. Например, исходный IP-адрес, вероятно, будет безнадежно редким - у вас, вероятно, будет только один или два примера для данного IP-адреса. Вы могли бы сделать намного лучше, если бы вы геолоцировали IP-адрес и использовали вместо него «Source_in_same_building_as_dest (true / false)» или что-то еще.
Я надеюсь, что это помогает больше. Если что-то требует разъяснений, я был бы рад попробовать еще раз!
источник
Упрощая обозначение обозначающее данные, мы хотим найти, какой из различных является наибольшим. Теперь формула Байеса дает где знаменатель на право одинаково для всех . Если мы хотим найти, какой из , является наибольшим, мы, конечно, можем вычислить каждый и сравнить значения. Но обратите внимание, что на сравнение на самом деле не влияет значение которое одинаково во всех случаях. Мы могли бы одинаково хорошо вычислить всеD P(Cj∣D)
источник
Основное предположение, лежащее в основе наивной модели Байеса, состоит в том, что каждый признак (x_i) условно не зависит от всех других признаков данного класса. Именно это предположение позволяет нам записать вероятность как простой продукт (как вы показали).
Это также то, что помогает наивной модели Байеса хорошо обобщаться на практике. Рассмотрим этап обучения: если бы мы не делали этого предположения, то обучение включало бы оценку сложного, многомерного распределения: p (x1, x2, ..., xn, c), в котором все функции распределены совместно. Вместо этого мы можем тренироваться, оценивая p (x1, c), p (x2, c), ..., p (xn, c), поскольку знание значения c делает значения всех других функций неактуальными (они обеспечивают нет дополнительной информации о x_i).
Я не знаю хорошего способа визуализации этого (кроме стандартной записи графической модели), но чтобы сделать его более конкретным, вы можете написать некоторый код для изучения наивной байесовской модели ( вы можете получить некоторые примеры данных здесь ). Тренируйся и проверяй. Теперь отбросьте предположение об условной независимости и измените код. Тренируйтесь, тестируйте и сравнивайте с предыдущей моделью.
источник