Разберись в Data Science. Как освоить науку о данных и научиться думать как эксперт - Алекс Дж. Гатман
Шрифт:
Интервал:
Закладка:
Классификация текстов
В этом разделе мы поговорим о контролируемом обучении на матрице «документ-термин» (при условии наличия известных целевых атрибутов). В случае с текстом мы, как правило, пытаемся предсказать категориальную переменную, поэтому данная задача решается с помощью моделей классификации, о которых мы говорили в предыдущей главе, а не моделей регрессии, которые предсказывают числа. Один из самых известных примеров успешного применения метода классификации текстов – спам-фильтр, используемый в сервисах электронной почты, входными данными для которого является текст сообщения, а выходными – бинарный флаг «спам» или «не спам»[117]. Пример применения многоклассовой классификации текстов – автоматическое распределение новостных онлайн-статей по категориям: местные новости, политика, мир, спорт, развлечения и так далее.
Чтобы получить представление о том, как происходит классификация текстов с помощью метода мешка слов, давайте рассмотрим один (упрощенный) случай. В табл. 11.4 показаны пять различных тем электронных писем, разбитых на токены, и метки, указывающие, является ли письмо спамом или нет. (Следует помнить о том, сколько усилий компании тратят на сбор подобных данных. Всякий раз, когда провайдер электронной почты спрашивает вас, являются ли те или иные письма спамом, вы предоставляете данные для алгоритмов машинного обучения!)
Табл. 11.4. Простейший пример классификации спама
Как можно использовать алгоритм для извлечения уроков из данных в табл. 11.4 и формирования прогнозов относительно новых, невиданных ранее тем электронных писем?
Возможно, вы подумали о логистической регрессии, которая бывает полезна для предсказания бинарных результатов. Но, к сожалению, здесь она не сработает из-за слишком большого количества слов и недостаточного количества примеров для обучения. В табл. 11.4 столбцов больше, чем строк, а логистическая регрессия этого не любит[118].
Наивный байесовский алгоритм
В подобной ситуации обычно применяется так называемый наивный байесовский алгоритм классификации (названный так в честь того самого Байеса, которого мы упоминали в главе 6). Данный алгоритм пытается ответить на простой вопрос: где с большей вероятностью встречаются слова, используемые в теме электронного письма, – в спаме или в обычном письме? Вы, скорее всего, пытаетесь сделать то же самое, когда просматриваете содержимое своего почтового ящика: вы по собственному опыту знаете, что слово «бесплатно», как правило, встречается в спаме. То же касается слов «деньги», «Виагра» или «богатство». Если большинство слов ассоциируется со спамом, то электронное письмо, скорее всего, им и является. Все просто.
Другими словами, вы пытаетесь рассчитать вероятность того, что электронное письмо – спам, опираясь на слова, содержащиеся в строке темы, (w1, w2, w3, …). Если эта вероятность превышает вероятность того, что письмо спамом не является, мы отмечаем его как спам. Эти конкурирующие вероятности записываются с помощью следующей нотации:
– Вероятность того, что электронное письмо является спамом = P(спам | w1, w2, w3, …).
– Вероятность того, что электронное письмо не является спамом = P(не спам | w1, w2, w3, …).
Прежде чем двигаться дальше, давайте изучим данные в табл. 11.4. Нам известна вероятность, с которой каждое из слов встречается в спам (и не спам) письмах. Слово «бесплатно» присутствовало в трех из четырех спам-сообщений, поэтому вероятность встретить данное слово при условии, что письмо является спамом, составляет P(бесплатно | спам) = 0,75. Выполнив аналогичные расчеты для слов «долг» и «мама», мы получим: P(долг | спам) = 0,25, P(мама | не спам) = 1 и так далее.
Что нам это дает? Мы хотим знать вероятность того, что то или иное электронное письмо – спам при условии наличия в нем определенных слов. При этом нам известна вероятность встретить то или иное слово в письме при условии того, что оно является спамом. Эти две вероятности не одинаковы, но они связаны теоремой Байеса (см. главу 6). Как вы помните, основная идея данной теоремы – поменять условные вероятности местами. Таким образом, вместо P(спам | w1, w2, w3, …) мы можем использовать P(w1, w2, w3, … | спам). Благодаря дополнительным расчетам (которые мы опускаем для краткости[119]) принятие решения относительно классификации нового электронного письма как спам-сообщения сводится к выяснению того, какое из двух значений выше:
1. Оценка «спам» = P(спам) × P(w1 | спам) × P(w2 | спам) × P(w3 | спам).
2. Оценка «не спам» = P(не спам) × P(w1 | не спам) × P(w2 | не спам) × P(w3 | не спам).
Вся эта информация содержится в табл. 11.4. Вероятности P(спам) и P(не спам) отражают долю спама и не спама в обучающих данных – 80 % и 20 % соответственно. Другими словами, если бы вы хотели делать предположения, не глядя на строку темы, вы бы предполагали, что письмо – «спам», потому что такие письма составляют класс большинства в обучающих данных.
Чтобы прийти к приведенным выше формулам, наивный байесовский алгоритм совершил то, что обычно считается вопиющей ошибкой при работе с вероятностями, а именно – допустил отсутствие зависимости между событиями. Вероятность встретить в спам-сообщении оба слова «бесплатно» и «Виагра», обозначаемая как P(бесплатно, виагра | спам), зависит от того, насколько часто эти слова встречаются в одном и том же письме, однако это значительно усложняет вычисления. «Наивность» наивного байесовского алгоритма выражается в предположении независимости всех вероятностей: P(бесплатно, виагра | спам) = P(бесплатно | спам) × P(виагра | спам).
Более глубокий взгляд
Увидев электронное письмо с темой «Избавьтесь от долгов с помощью наших советов по торговле акциями!», вы бы сосредоточились на словах «избавьтесь», «долги», «акции» и «совет» и вычислили бы следующие конкурирующие значения:
1. Оценка «спам» = P(спам) × P(избавьтесь | спам) × P(долги | спам) × P(акции | спам) × P(совет | спам).
2. Оценка «не спам» = P(не спам) × P(избавьтесь | не спам) × P(долги | не спам) × P(акции | не спам) × P(совет | не спам).
Однако есть небольшая проблема. Новые и редкие слова требуют некоторой корректировки расчетов, чтобы вероятности не умножились на ноль. В крошечном наборе данных, приведенных в табл. 11.4, слово «избавьтесь» вообще не встречается, тогда как слова «долги», «акции» и «совет» встречаются только в спам-сообщениях. Из-за подобных нюансов оценки «спам» и «не