Должен ли Наивный Байес умножать все слова в словаре

Я использую Naive Bayes в текстовой классификации.

Предположим, что мой словарный запас ["яблоко", "мальчик", "чашка"] и метка класса "спам" или "ветчина". Каждый документ будет покрыт трехмерным вектором 0-1. Например, «apple boy apple apple» будет преобразовано в [1,1,0]

Теперь я вычислил условную вероятность p("яблоко"|"спам"), p("яблоко"|"ветчина"), p("мальчик"|"спам")... и т.д. из обучающих примеров.

Чтобы проверить, является ли документ спамом или ветчиной, например «яблочный мальчик» -> [1,1,0], нам нужно вычислить p(features | classLabel)

Используйте условную независимость для тестового вектора [1,1,0]

Я знаю две формулы

(1) p(особенности|"ветчина") = p("яблоко"|"ветчина")p("мальчик"|"ветчина")

(2) p(особенности|"ветчина") = p("яблоко"|"ветчина")p("мальчик"|"ветчина")(1-p("чашка"|"ветчина"))

какая формула верна?

Я считаю, что (2) правильно, потому что у нас есть 3 функции (на самом деле 3 слова в словаре). Но я вижу коды, написанные другими с использованием (1). Хотя термин 1-p("чашка"|"ветчина") почти равен 1, так что это не будет иметь большого значения, но мне нужен точный ответ.


person Rongshen Zhang    schedule 15.11.2015    source источник
comment
Эта проблема возникает, когда я читаю Машинное обучение в действии о машинах. изучение кода на питоне. Я думаю, что автор может не очень хорошо понимать эти две формулы.   -  person Rongshen Zhang    schedule 05.01.2016
comment
Я нашел подробное обсуждение этой проблемы в курсе машинного обучения Эндрю Нг. читайте конспекты лекций для получения подробной информации. Обе формулы верны, но их особенность ссылаться совсем другое. Они идут от разных моделей.   -  person Rongshen Zhang    schedule 05.01.2016
comment
Можете ли вы указать мне на страницу машинного обучения в действии? Было бы любопытно.   -  person CAFEBABE    schedule 05.01.2016
comment
Прочтите стр. 67-73 в MLiA. Код правильный (за исключением плавного Лапласа, который, на мой взгляд, должен быть #word, а не 2). Но автор не очень хорошо это обсуждал. Он использовал первую формулу, но объяснил ее как вторую формулу.   -  person Rongshen Zhang    schedule 05.01.2016


Ответы (1)


Ваша интуиция верна и, возможно, код, который вы написали, тоже прав. Однако ваша проблема в обозначениях. (Я должен признать, что в начале это довольно сложно понять.) Самая важная концепция, которую вы упускаете, — это случайные величины (RV).

Я использую HAM, CUP, BOY и HAM в качестве случайных величин. Есть два возможных события, каждый из которых может принять либо contains(c), либо not contains(nc). Вероятность того, что текст содержит мальчика, можно записать как P(BOY=contains), а что он не содержит слова, равна P(BOY=not contains)= 1-P(BOY=contains).

В свою очередь правильная формула тогда

P(FEATURES| HAM) =  P(CUP,BOY,APPLE|HAM) = P(CUP|HAM)P(BOY|HAM)P(APPLE|HAM)

Где последний шаг обусловлен наивным предположением Бэйса. Чтобы рассчитать вероятность, которую вы просили, вам нужно рассчитать

 P(BOY=c,APPLE=c,CUP=nc|HAM) = P(BOY=c|HAM)P(APPLE=c|HAM)P(CUP=nc|HAM) 
                             = P(BOY=c|HAM)P(APPLE=c|HAM)(1-P(CUP=c|HAM))

На самом деле это все еще две вероятности (которые НЕ дают в сумме единицу), поскольку HAM может принимать два значения.

person CAFEBABE    schedule 03.01.2016
comment
Хороший аргумент! Ваш аргумент верен, учитывая, что функция представляет собой вектор слов (который состоит из всего нашего словаря). На самом деле обе эти формулы верны, но они относятся к разным функциям. Они исходят из разных моделей, хотя все они нуждаются в наивных предположениях. Курс машинного обучения Эндрю Нг обсуждает эту проблему. конспекты лекций - person Rongshen Zhang; 05.01.2016
comment
Не могли бы вы указать мне раздел в конспектах лекций Эндрю Нг, на который вы ссылаетесь? В строгих математических обозначениях почти невозможно, чтобы первая формула подходила для вашей задачи. - person CAFEBABE; 05.01.2016
comment
Раздел 2 lection-notes-2. Вы можете просто нажать 'CTRL+ F' для поиска наивных байесов - person Rongshen Zhang; 05.01.2016