朴素贝叶斯算法理解

来源:互联网 发布:淘宝单号购买平台 编辑:程序博客网 时间:2024/05/22 14:08

朴素贝叶斯算法理解

  • 贝叶斯公式

  • 朴素贝叶斯算法


贝叶斯(Bayes)出生于18世纪初,英国数学家、统计学家。据说当时贝叶斯提出贝叶斯公式的时候,引起了同时代数学家的争议,因为贝叶斯公式需要利用先验概率,而在当时先验概率绝大部分是依赖于人的主观判断,主观性很强,因此贝叶斯公式在18,19世纪并没得到足够的重视,沉寂了很长一段时间。
直到20世纪计算机的出现,计算能力的极大提高使得求先验概率不再依赖人的主观性,而可以通过计算获得,贝叶斯公式又重新引起了人们的重视,甚至成为现代数据挖掘算法中最经典的公式之一。

贝叶斯公式

P(A/B)=P(B/A)P(A)P(B)

理解贝叶斯公式其实很简单,甚至不需要高等数学的知识。贝叶斯公式怎么证明呢?
因为
B和A同时发生的概率 = A和B同时发生的概率
因此
P(B)*P(A/B) = P(A)*P(B/A)

等式两边同时除以P(B),由此就可以推导出贝叶斯公式。不要小瞧这样一个公式,它在概率论中有很大的应用,比如下面的朴素贝叶斯算法。

朴素贝叶斯算法

朴素贝叶斯算法经典的一个应用是过滤垃圾邮件。我们以该应用,讲解朴素贝叶斯算法的核心思想。
假设我们这里所说的邮件,只限于文本邮件,而邮件的内容是由词语构成,每封邮件用一个n维特征向量(即邮件中的词语)来描述n个属性(词语)的值,即:X={x1,x2,…,xn},假定有两个类(是垃圾邮件,不是垃圾邮件),分别用C1, C2表示。给定一个未知的邮件X,我们要对邮件X进行分类,则需要分别计算P(C1|X)和P(C2|X)的概率,将X分类为概率最大的类别。
根据贝叶斯定理,

P(Ci/X)=P(X/Ci)P(Ci)P(X)=P((x1,x2,...,xn)/Ci)P(Ci)P(X)

由于P(X)对于所有类别为常数,
最大化后验概率P(Ci|X)可转化为最大化先验概率P((x1,x2,…,xn)|Ci)*P(Ci)
如果训练数据集有许多属性并且属性之间不独立,那么计算P((x1,x2,…,xn)|Ci)的开销可能非常大甚至不可能计算,因此我们通常假设各属性的取值互相独立,这样
先验概率P(x1|Ci),P(x2|Ci),…,P(xn|Ci)可以从训练数据集求得
朴素贝叶斯算法成立的前提是假设各属性之间互相独立,这也是被称为朴素贝叶斯算法的原因。要求各属性之间相互独立有时似乎不太合理,比如邮件中的属性“世界杯”和“足球”一般会同时出现,之间并非独立的,但令人惊奇的是,虽然基于这种看似不太合理的独立性假设,但朴素贝叶斯算法应用于分类领域(比如垃圾邮件分类)效果却比较理想,拥有比较高的准确率。

1 0
原创粉丝点击