您的位置:首页 > 编程语言

机器学习入门 之 《集体智慧编程》 贝叶斯分类(bayesian classification)

2012-12-26 12:39 211 查看
第一次听说机器学习 这四个字,是在杜军平老师的选修课上,当时他也就那么提了一下的东西,没想到在若干年后的今天让我如此滴着迷。

贝叶斯分类(bayesianclassification)

贝叶斯公式和全概率公式是《概率论》中的两个简单的公式:

贝叶斯公式:P(A|B) = P(AB)/P(B) = P(B|A)P(A)/P(B)

cat 代表文本类别 比如 娱乐,体育等等

doc 代表一篇文章 例如一篇体育新闻

word 代表一个词组 必须 basketb,football

贝叶斯分类器要解决的问题是:在知道doc的情况下如实将其以最大的概率分配到某一个cat中。

也就是需要计算 P(cat1|doc) P(cat2|doc) P(cat2|doc)........ 可以选概率最大的一个作为分类。现在问题就集中到怎么计算P(cat|doc)?

使用贝叶斯公式: P(cat|doc) = P(doc|cat)P(cat)/P(doc)

对于不同的待选分类,例如cat1,cat2

P(cat1|doc) = P(doc|cat1)P(cat1)/P(doc) P(cat2|doc) = P(doc|cat2)P(cat2)/P(doc)

对于每一个P(cati|doc)=P(doc|cati)P(cati)/P(doc) 都必须除以P(doc),故可以忽略p(doc),只需要计算P(doc|cati)P(cati)

计算P(cat)

P(cati)就是训练样本空间中cati的概率,例如有样本空间的大小是1000,有30篇是体育类的文章,故P(体育)=30/1000= 3%

计算P(doc/cati)

要计算P(doc/cati)必须明白,doc是由word组成的(文章有词组组成) doc=word1,word2,...,wordn

故有P(doc/cati) = P(word1,word2,...,wordn/cati)

如果我们假设word出现是独立的,那么有

P(doc/cati) = P( (word1,word2,...,wordn) / cati) =P(word1/cati)*P(word2/cati)*...*P(wordn/cati)

现在焦点集中在怎么计算P(word/cati)

P(word/cati)说白了就是在cati的文章中,有多少篇文章出现了word,例如有30篇体育文章,其中有20篇文章出现了football,那么P(football/体育)=20/30

到现在为止所有问题都解决了。

把各个word看成是独立的方法叫做“朴素贝叶斯法”,虽然现实情况不可能是独立的,但是它还是非常的有效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: