Полиномиальный наивный байесовский классификатор
Гауссово допущение – далеко не единственное простое допущение, которое можно использовать для описания порождающего распределения для всех меток. Еще один полезный пример – полиномиальный наивный байесовский классификатор с допущением о том, что признаки сгенерированы на основе простого полиномиального распределения. Полиномиальное распределение описывает вероятность наблюдения количеств вхождений в несколько категорий, таким образом, полиномиальный наивный байесовский классификатор лучше всего подходит для признаков, отражающих количество или частоту вхождения.
Основная идея остается точно такой же, но вместо моделирования распределения данных с оптимальной Гауссовой функцией мы моделируем распределение данных с оптимальным полиномиальным распределением.
Пример: классификация текста. Полиномиальный наивный байесовский классификатор нередко используется при классификации текста, где признаки соответствуют количеству слов или частотам их употребления в классифицируемых документах. Здесь чтобы продемонстрировать классификациу коротких документов по категориям, мы воспользуемся разреженными признаками количеств слов из корпуса текста 20 Newsgroups («20 дискуссионных групп»).
Скачаем данные и изучим целевые названия:
Для простоты выберем лишь несколько из этих категорий, после чего скачаем обучающую и контрольную последовательности:
Вот типичный образец записи из этого набора данных:
Чтобы использовать эти данные для машинного обучения, необходимо преобразовать содержимое каждой строки в числовой вектор. Для этого воспользуемся векторизатором TF-IDF и создадим конвейер, присоединяющий его последовательно к полиномиальному наивному байесовскому классификатору:
С помощью этого конвейера мы можем применить модель к обучающей последовательности и предсказать метки для контрольных данных:
Теперь, предсказав метки для контрольных данных, мы изучим их, чтобы выяснить эффективность работы оценивателя. например, вот матрица различий между настоящими и предсказанными метками для контрольных данных (рис. 3):
Рис. 3. Матрица различий для полиномиального наивного
байесовского классификатора текста
Даже этот очень простой классификатор может легко отделять обсуждения космоса от дискуссий о компьютерах, но он путает обсуждения религии вообще и обсуждения христианства. Вероятно, этого следовало ожидать!
Хорошая новость состоит в том, что у нас теперь есть инструмент определения категории для любой строки с помощью метода predict() нашего конвейера. Следующий фрагмент кода описывает простую вспомогательную функцию, возвращающую предсказание для отдельной строки:
Попробуем ее на деле:
Это лишь простая вероятностная модель (взвешенной) частоты каждого из слов в строке, тем не менее результат поразителен. Даже очень наивный алгоритм может оказаться удивительно эффективным при разумном использовании и обучении на большом наборе многомерных данных.
Когда имеет смысл использовать наивный байесовский классификатор
В силу столь строгих допущений относительно данных наивные байесовские классификаторы обычно работают хуже, чем более сложные модели. Тем не менее у них есть несколько достоинств:
- они выполняют как обучение, так и предсказание исключительно быстро;
- обеспечивают простое вероятностное предсказание;
- их результаты часто очень легки для интерпретации;
- у них очень мало (если вообще есть) настраиваемых параметров.
Эти достоинства означают, что наивный байесовский классификатор зачастую оказывается удачным кандидатом на роль первоначальной эталонной классификации. Если оказывается, что он демонстрирует удовлетворительные результаты, то поздравляем: вы нашли для своей задачи очень быстрый классификатор, возвращающий очень удобные для интерпретации результаты. Если же нет, то вы всегда можете начать пробовать более сложные модели, уже имея представление о том, насколько хорошо они должны работать.
Наивные байесовские классификаторы склонны демонстрировать особенно хорошие результаты в следующих случаях:
- когда данные действительно соответствуют наивным допущениям (на практике бывает очень редко);
- для очень хорошо разделяемых категорий, когда сложность модели не столь важна;
- для данных с очень большим числом измерений, когда сложность модели не столь важна.
Два последних случая кажутся отдельными, но на самом деле они взаимосвязаны: по мере роста количества измерений у набора данных вероятность близости любых двух точек падает (в конце концов, чтобы находиться рядом, они должны находиться рядом по каждому из измерений). Это значит, что кластеры в многомерных случаях имеют склонность к более выраженной изоляции, чем кластеры в случаях с меньшим количеством измерений (конечно, если новые измерения действительно вносят дополнительную информацию). Поэтому упрощенные классификаторы, такие как наивный байесовский классификатор, при росте количества измерений начинают работать не хуже, а то и лучше более сложных: когда данных достаточно много, даже простая модель может оказаться весьма эффективной.
Достарыңызбен бөлісу: |