Наивная классификация

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

Слово «наивный» в данном контексте означает следующее: классификатор предполагает, что комбинируемые вероятности независимы друг от друга. Иными словами, вероятность того, что одно слово в документе относится к некоторой категории, никак не связана с вероятностями отнесения к той же категории других слов. Это предположение неверно, так как шансы, что документы, содержащие слово casino, содержат также и слово money, гораздо выше, чем шансы встретить слово money в документах о программировании на языке Python. Следовательно, из-за ложного допущения о независимости нельзя использовать вероятность, вычисленную наивным байесовским классификатором, как истинную вероятность того, что документ принадлежит к некоторой категории. Однако можно сравнить результаты, полученные для разных категорий, и посмотреть, для какой из них вероятность оказалась самой большой. На практике, несмотря на ложность исходного предположения, этот метод классификации документов оказывается на удивление эффективным.

Вероятность для всего документа

Чтобы воспользоваться наивным байесовским классификатором, нужно сначала вычислить вероятность для документа в целом в рамках данной классификации. Поскольку мы предположили, что вероятности независимы, то для этого достаточно их перемножить.

Предположим, например, что слово Python встречается в 20% плохих документов, то есть

Pr(Python | Плохой) = 0,2, а слово casino – в 80% плохих документов:

Pr(Casino | Плохой) = 0,8. Тогда в предположении независимости вероятность появления обоих слов в плохом документе

Pr(Python & Casino | Плохой) = 0,8 x 0,2 = 0,16. Стало быть, вычисление вероятности для документа в целом сводится к перемножению вероятностей отдельных встречающихся в нем слов. В файле docclass.py создайте подкласс naivebayes класса classifie r и включите в него метод docprob, который выделяет признаки (слова) и перемножает их вероятности: class naivebayes(classifier): def docprob(self,item,cat):

features=self.getfeatures(item)

# Перемножить вероятности всех признаков p=1

for f in features: p*=self.weightedprob(f,cat,self.fprob) return p

Теперь вы знаете, как вычислить вероятность Pr(Документ | Категория), но само по себе это не слишком полезно. Для классификации документов нужно знать, чему равно значение Pr(Категория | Документ). Иными словами, при условии наличия конкретного документа какова вероятность, что он попадает в данную категорию? К счастью, английский математик Томас Байес еще 250 лет назад понял, как это сделать.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100