Почему наивные байесовские классификаторы так хорошо работают?

38

Наивные байесовские классификаторы являются популярным выбором для задач классификации. Есть много причин для этого, в том числе:

  • «Zeitgeist» - широко распространенная осведомленность после успеха спам-фильтров около десяти лет назад
  • Легко написать
  • Модель классификатора быстро построить
  • Модель может быть изменена с новыми данными обучения без необходимости перестраивать модель

Тем не менее, они «наивны» - то есть они предполагают, что функции независимы - это контрастирует с другими классификаторами, такими как классификаторы максимальной энтропии (которые медленно вычисляются).

Предположение о независимости обычно не может быть принято, и во многих (в большинстве случаев) случаях, включая пример спам-фильтра, оно просто неверно.

Так почему же наивный байесовский классификатор по-прежнему очень хорошо работает в таких приложениях, даже если функции не зависят друг от друга?

winwaed
источник

Ответы:

23

Эта статья, кажется, доказывает (я не могу следовать математике), что байес хорош, не только когда функции независимы, но также и когда зависимости функций друг от друга схожи между функциями:

В этой статье мы предлагаем новое объяснение превосходных классификационных характеристик наивного байесовского алгоритма. Покажем, что, по сути, распределение зависимости; то есть, как локальная зависимость узла распределяется в каждом классе, равномерно или неравномерно, и как локальные зависимости всех узлов работают вместе, последовательно (поддерживая определенную классификацию) или непоследовательно (исключая друг друга), играют решающую роль. Следовательно, независимо от того, насколько сильны зависимости между атрибутами, наивный байесовский метод все равно может быть оптимальным, если зависимости распределены равномерно по классам или зависимости взаимно компенсируют друг друга.

ДБ.
источник
1
Качественно это имеет смысл. Зависимые функции приведут к взвешиванию - поэтому равномерное распределение или распределение, которое отменяет, отменит это взвешивание. Тем не менее, "односторонние" зависимости, вероятно, все еще будут работать плохо? Я предполагаю, что для примера со спамом следует ожидать много зависимостей от + спам-функций, но не обязательно от спам-функций в общем случае. Тем не менее, человек может получить много законных писем по определенной теме, поэтому в этом случае будет много зависимых функций, которые уравновесят функции + спам.
winwaed
3
Я также рекомендую этот документ: cs.stanford.edu/people/ang/papers/…
Дов
25

Большинство проблем машинного обучения легко!

Смотрите, например, в блоге Джона Лэнгфорда . На самом деле он говорит, что ML облегчает проблемы, и это представляет проблему для исследователей с точки зрения того, должны ли они пытаться применять методы к широкому кругу простых проблем или атаковать более сложные проблемы. Однако побочным продуктом является то, что для многих задач данные линейно разделимы (или, по крайней мере, почти), и в этом случае любой линейный классификатор будет работать хорошо! Просто так получилось, что авторы оригинальной фильтровальной бумаги для спама решили использовать наивный байесовский метод, но если бы они использовали Перцептрон, SVM, дискриминантный анализ Фишера, логистическую регрессию, AdaBoost или почти все остальное, это, вероятно, сработало бы.

Помогает тот факт, что алгоритм относительно легко закодировать. Например, чтобы закодировать SVM, вам нужно иметь решатель QP или кодировать алгоритм SMO, который не является тривиальной задачей. Конечно, вы можете скачать libsvm, но в первые дни эта опция была недоступна. Однако есть много других простых алгоритмов (включая упомянутый выше Perceptron), которые так же легко кодировать (и допускают поэтапные обновления, как упоминается в вопросе).

Конечно, для сложных нелинейных задач необходимы методы, которые могут иметь дело с нелинейными задачами. Но даже это может быть относительно простой задачей, когда используются методы ядра . Тогда часто возникает вопрос «Как создать эффективную функцию ядра для моих данных», а не «Какой классификатор мне следует использовать».

TDC
источник
Я думаю, что «легко», возможно, относительно, но да, классификация спама «проще», чем я думаю, что большинство людей предположили 12 лет назад или около того. Методы ядра могут быть подходом к созданию быстрого и простого классификатора, но «Как спроектировать эффективную функцию ядра для моих данных» кажется, что некоторые из машинного обучения превращаются в «обучение людей» (то есть, нахождение лучшего понимания данных и его взаимосвязи)?
winwaed
1
Да, это относительно, а также есть много проблем, так что есть еще много сложных! И я думаю, что граница между ML и человеческим обучением всегда размыта ... если вы создаете какую-то сверхъестественную вероятностную модель, вы делаете то же самое. Старый добрый NFLT говорит нам, что один метод не может решить все проблемы, какими бы сложными они ни были, поэтому нам всегда будут нужны люди для разработки моделей / ядер / алгоритмов или чего-либо еще, что нужно для получения большей отдачи от ваших данных.
TDC
правда - определенно размытая линия!
winwaed
1
Почему отрицательный голос? Хотите прокомментировать?
TDC
7

Благодаря широкому использованию наивных байесовских классификаторов в инструментах сегментации, мой опыт согласуется с опубликованными работами, показывающими, что NBC сопоставимы по точности с линейным дискриминантом и CART / CHAID, когда доступны все переменные предиктора.

(По точности как «вероятность попадания» в прогнозировании правильного решения как наиболее вероятного, так и калибровка, означающая, скажем, 75% -ную оценку членства, правильна в 70% -80% случаев.)

Мои два цента в том, что NBC работает так хорошо, потому что:

  • Взаимосвязь между переменными предикторов не так сильна, как можно подумать (типичные оценки взаимной информации от 0,05 до 0,15)
  • NBC может хорошо обрабатывать дискретные политомные переменные, не требуя, чтобы мы грубо дихотомизировали их или рассматривали порядковые переменные как кардинальные.
  • NBC использует все переменные одновременно, тогда как CART / CHAID использует только несколько

И вот, когда все переменные наблюдаются. Что делает NBC действительно отстраненным от пакета, так это то, что он грациозно ухудшается, когда одна или несколько переменных предиктора отсутствуют или не наблюдаются. CART / CHAID и линейный дискриминантный анализ в этом случае останутся без изменений.

прототип
источник