В этом видео мы начнем знакомиться с наивным байесовским классификатором, а оттолкнемся мы от практической задачи фильтрации спама. Фильтр спама – это просто классификатор на два класса: спам и не спам. Первые спам-фильтры использовали наивный байесовский классификатор, поэтому мы придем к нему постепенно, оттолкнувшись именно от этой задачи. Давайте посмотрим на примеры спамных писем. Отчетливо видно, что некоторые слова особенно часто встречаются в спаме. Отсюда возникает идея: давайте для каждого слова из коллекции текстов посчитаем количество писем с этим словом в спаме и количество писем с этим словом не в спаме и с помощью этих чисел оценим вероятность появления этого слова в спамном письме и в неспамном письме. Теперь, когда нам нужно для нового текста понять, является этот текст спамным или неспамным, мы можем просто оценить вероятность его появления в классе «спам» и вероятность его появления в классе «не спам» просто как произведение вероятностей появления всех слов, которые входят в этот текст. Конечно же, оценить эту вероятность просто как произведение можно лишь в том случае, когда вхождение разных слов в текст – это независимые события. Конечно, это очень наивное предположение, но с какой-то точностью оно выполняется, и можно попробовать им воспользоваться. Именно это наивное предположение и дает название классификатору. Теперь остается выбрать тот класс, для которого вероятность порождения данного текста больше. Это будет почти правильный алгоритм. На самом деле, мы же уже знаем текст, и нам нужно оценить вероятность класса при условии известного текста, а не наоборот, поэтому нам нужно перейти именно к этой вероятности, и классификатор должен максимизировать именно эту вероятность. Но как же эту вероятность оценить? Конечно же, на помощь нам приходит теорема Байеса. Так как априорная вероятность возникновения текста одинакова для всех классов, то она пропадет из-под знака максимума, таким образом, доработать наш классификатор окажется очень просто. Нужно лишь домножить те вероятности, которые мы уже оценивали, на априорные вероятности классов. Итак, на стадии обучения нам нужно оценить вероятности вхождения слов в класс «спам» и в класс «не спам». На стадии применения классификатора к текстам нам нужно оценить вероятность порождения этого текста просто как произведение вероятностей для каждого слова, входящего в текст, и выбрать тот класс, для которого вероятность его порождения, домноженная на априорную вероятность класса, будет максимальна. Что мы еще не учли? Мы работали только с текстом писем, но, наверное, заголовки и адрес отправителя тоже что-то значат. Кроме того, мы не учли следующую ситуацию. Допустим, какое-то слово никогда не встречалось в одном из классов. Тогда, как только мы его увидим в тексте, вероятность для этого класса сразу занулится, ведь там же произведение вероятностей, а вероятность конкретно для этого слова равна нулю. Может быть, это слишком поспешный вывод. Быть может, другие слова более значимы в этом случае. Кроме того, может быть еще более плохая ситуация. Допустим, у нас есть два слова, которые не входили в один класс и в другой класс. Тогда получится, что если оба эти слова встретились в тексте, вероятность одного класса и вероятность другого класса занулятся сразу обе, и мы не сможем выбрать. Эти вопросы мы еще обсудим в дальнейшем. Итак, мы познакомились с тем, как решали задачу фильтрации спама на заре развития Интернета. Оттолкнувшись от этой задачи, мы постепенно пришли к идее наивного байесовского классификатора. Несмотря на то, что метод классификации достаточно древний, он имеет свои плюсы: он прост в реализации и быстро работает. В следующем видео мы рассмотрим наивный байесовский классификатор в более общем виде, а также разберемся, как его можно применить для других задач классификации.