首页 > 代码库 > 贝叶斯算法
贝叶斯算法
贝叶斯算法是一种分类算法,它以贝叶斯公式为基础。
贝叶斯公式
P(B | A) = P(A | B) P(B) / P(A)
举例:
我们有很多文章,并且我们想根据这些文章的内容将文章归类。
贝叶斯对于归类问题需要得到三个解,即上面公式的P( A | B), P(A), P(B)
首先我们理解P(A | B)
表示当B条件下A出现的概率,在这里表示,某类文章中某些单词组(或者可以叫特征词组)出现的概率。
理解P(B)
表示此类文档的个数在文档总数中的比例。
理解P(A)
表示所有文档包含特征词组的概率
举例
第一个例子。两个一模一样的碗,一号碗有30颗水果糖和10颗巧克力糖,二号碗有水果糖和巧克力糖各20颗。现在随机选择一个碗,从中摸出一颗糖,发现是水果糖。请问这颗水果糖来自一号碗的概率有多大?
我们假定,H1表示来自一号碗,H2表示来自二号碗。由于这两个碗是一样的,所以P(H1)=P(H2),也就是说,在取出水果糖之前,这两个碗被选中的概率相同。因此,P(H1)=P(H2)=0.5,我们把这个概率就叫做"先验概率",即没有做实验之前,来自一号碗和二号碗的概率都是0.5。
再假定,E表示取到水果糖,所以问题就变成了在已知E的情况下,来自一号碗的概率有多大,即求P(H1|E)。我们把这个概率叫做"后验概率",即在E事件发生之后,对P(H1)的修正。
根据条件概率公式,得到:
P(H1 | E) = P(H1)*P(E | H1) / P(E)
已知,P(H1)等于0.5,P(E|H1)为一号碗中取出水果糖的概率,等于0.75,那么求出P(E)就可以得到答案。根据全概率公式 :
P(E) = P(E | H1) * P(H1) + P(E | H2) * P(H2)
所以:
P(E) = 0.75*0.5 + 0.5*0.5 = 0.625
将数字代入原方程,得到:
P(H1 | E) = 0.5 * 0.75 / 0.625 = 0.6
这表明,来自一号碗的概率是0.6。也就是说,取出水果糖之后,H1事件的可能性得到了增强。
第二个例子
已知:有N个苹果,和M个梨子,苹果为黄色的概率为20%,梨子为黄色的概率为80%,问,假如我在这堆水果中观察到了一个黄色的水果,问这个水果是梨子的概率是多少。
用数学的语言来表达,就是已知P(apple) = N / (N + M), P(pear) = M / (N + M), P(yellow|apple) = 20%, P(yellow|pear) = 80%, 求P(pear|yellow).
要想得到这个答案,我们需要 1. 要求出全部水果中为黄色的水果数目。 2. 求出黄色的梨子数目
对于1) 我们可以得到 P(yellow) * (N + M), P(yellow) = p(apple) * P(yellow|apple) + P(pear) * p(yellow|pear)
对于2) 我们可以得到 P(yellow|pear) * M
2) / 1) 可得:P(pear|yellow) = P(yellow|pear) * p(pear) / [P(apple) * P(yellow|apple) + P(pear) * P(yellow|pear)]
化简可得:P(pear|yellow) = P(yellow,pear) / P(yellow), 用简单的话来表示就是在已知是黄色的,能推出是梨子的概率P(pear|yellow)是黄色的梨子占全部水果的概率P(yellow,pear)除上水果颜色是黄色的概率P(yellow). 这个公式很简单吧。
我们将梨子代换为A,黄色代换为B公式可以写成:P(A|B) = P(A,B) / P(B), 可得:P(A,B) = P(A|B) * P(B).贝叶斯公式就这样推出来了。
对贝叶斯理解还不是很深刻如有错误请大家指正