Текстовая категоризация с использованием Наивного Байеса - PullRequest
3 голосов
/ 30 ноября 2011

Я делаю задачу машинного обучения текстовой категоризации с использованием Наивного Байеса. У меня есть каждое слово как особенность. Мне удалось это реализовать, и я получаю хорошую точность.

Могу ли я использовать наборы слов в качестве функций?

Например, если есть два класса: политика и спорт. Слово под названием правительство может появиться в обоих из них. Однако в политике у меня может быть кортеж (правительство, демократия), тогда как в классе спорта у меня может быть кортеж (правительство, спортсмен). Таким образом, если появляется новая текстовая статья о политике, вероятность кортежа (правительство, демократия) больше, чем кортежа (правительство, спортсмен).

Я спрашиваю это потому, что, делая это, я нарушаю допущение независимости наивной байесовской проблемы, потому что я рассматриваю отдельные слова как особенности.

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

Теоретически, не изменяют ли эти два подхода допущения о независимости классификатора Наивного Байеса? Кроме того, я еще не начал с подхода, о котором упоминал, но улучшит ли это точность? Я думаю, что точность может не улучшиться, но объем обучающих данных, необходимых для получения такой же точности, будет меньше.

Ответы [ 2 ]

5 голосов
/ 30 ноября 2011

Даже без добавления биграмм, реальные документы уже нарушают допущение независимости.При условии наличия Обамы в документе президент, скорее всего, появится.Тем не менее, наивный Байес все еще делает приличную работу при классификации, даже если оценки вероятности, которые он дает, безнадежны.Поэтому я рекомендую вам продолжить и добавить более сложные функции в ваш классификатор и посмотреть, улучшают ли они точность.

Если вы получаете ту же точность с меньшим количеством данных, это в основном эквивалентно получению большей точности с тем же объемом данных.

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

Но суть в том, чтобы попробовать и посмотреть.

2 голосов
/ 30 ноября 2011

Нет, с теоретической точки зрения вы не меняете допущение независимости. Вы просто создаете измененное (или новое) примерное пространство. В общем случае, как только вы начинаете использовать более высокие n-граммы в качестве событий в вашем образце пространства, разрозненность данных становится проблемой. Я думаю, что использование кортежей приведет к той же проблеме. Вам, вероятно, понадобится больше данных для обучения, а не меньше. Возможно, вам также придется немного больше подумать о типе сглаживания, который вы используете. Простое сглаживание Лапласа не может быть идеальным.

Наиболее важный момент, я думаю, заключается в следующем: какой бы классификатор вы ни использовали, функции сильно зависят от домена (а иногда и от набора данных). Например, если вы классифицируете настроения текстов на основе обзоров фильмов, использование только униграмм может показаться нелогичным, но они работают лучше, чем использование только прилагательных. С другой стороны, для наборов данных в твиттере комбинация униграмм и биграмм была признана хорошей, но более высокие n-граммы были бесполезны. Основываясь на таких отчетах (см. Панг и Ли, Анализ мнений и анализ настроений ), я думаю, что использование более длинных кортежей покажет аналогичные результаты, поскольку, в конце концов, кортежи слов - это просто точки в многомерном пространство. Основной алгоритм ведет себя так же.

...