Как повысить точность наивного байесовского классификатора?

Я использую наивный байесовский классификатор для категоризации нескольких тысяч документов по 30 различным категориям. Я реализовал Наивный байесовский классификатор, и с некоторым выбором функций (в основном фильтрация бесполезных слов) я получил точность теста около 30% с точностью обучения 45%. Это значительно лучше, чем случайное, но я хочу, чтобы он был лучше.

Я пробовал реализовать AdaBoost с NB, но, похоже, он не дает заметно лучших результатов (литература по в одних документах говорится, что AdaBoost с NB не дает лучших результатов, в других -. Знаете ли вы о каких-либо других расширениях NB, которые могут дать более высокую точность?

65
задан desertnaut 26 February 2019 в 21:57
поделиться

1 ответ

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

поэтому, если вы хотите улучшить предсказание классификатора, вы можете посмотреть в нескольких местах:

  • настроить свой классификатор (настроить настраиваемые параметры классификатора);

  • применить какой-то метод комбинирования классификатора (например, ансамбль, бустинг, бэггинг); или вы можете

  • посмотреть данные , переданные в классификатор - либо добавьте больше данных, либо улучшите свой базовый синтаксический анализ или уточните функции, которые вы выбираете данные.

без наивных байесовских классификаторов настройка параметров ограничена; Я рекомендую сосредоточиться на ваших данных, то есть на качестве вашей предварительной обработки и выборе функций.

I. Анализ данных (предварительная обработка)

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

  • стемминг : вручную или с помощью библиотеки стемминга? популярные программы с открытым исходным кодом - Porter, Lancaster и Snowball. Таким образом, для например, если у вас есть термины программист, программа, программирование, запрограммированный в данной точке данных, стеммер уменьшит их до одиночный стержень (вероятно, программа ), поэтому ваш вектор терминов для этих данных точка будет иметь значение 4 для специальной программы, что наверное то, что вы хотите.

  • поиск синонимов : та же идея, что и основание - складывать родственные слова в одно слово; так что поиск синонимов может идентифицировать разработчика, программиста, кодировщик и инженер-программист и объедините их в один термин

  • нейтральные слова : слова с одинаковой частотой в разных классах создают плохие характеристики


II. Feature Selection

рассматривает типичный вариант использования NBC: фильтрация спама; вы можете быстро увидеть, в чем он не работает, и так же быстро увидеть, как его улучшить.Например, спам-фильтры выше среднего имеют нюансы, такие как: частота слов, написанных заглавными буквами, частота слов в заголовке и наличие восклицательного знака в заголовке. Кроме того, лучшими характеристиками часто являются не отдельные слова, а, например, пары слов или более крупные группы слов .

III. Оптимизация конкретного классификатора

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

Метод Фишера (вероятно, наиболее распространенный способ оптимизации наивного байесовского классификатора). Мне, Я думаю, что Фишер нормализует (точнее, стандартизирует ) входных вероятностей. NBC использует вероятности признаков для построения вероятности «всего документа». Метод Фишера вычисляет вероятность категории для каждого признака документа, затем объединяет эти вероятности признаков и сравнивает эту совокупную вероятность с вероятностью случайного набора признаков.

101
ответ дан 24 November 2019 в 15:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: