朴素贝叶斯应该是机器学习领域最简单的一种算法,但这只是在数学层面的"简单"。如果要深挖下去,考虑先验概率和后验概率,用的不顺溜的话也特别复杂。
为什么说它 "朴素" 呢?
因为它有两个先决条件(或限制条件):
- 条件(特征)独立假设:一个特征出现的概率,与其他特征(条件)独立。(真实应用中是不可能独立的)
- 特征均等假设:每个特征同等重要。(真实应用中是不可能均等的)
注:就像最大熵模型一样,本质上所有假设都是错误的,只不过有些起作用了而已。
贝叶斯公式
公式:P(Y/X) = P(X|Y)P(Y)/P(X)
上式由联合概率公式推导而来,P(Y,X)=P(Y|X)P(X)=P(X|Y)P(Y)
P(Y) 叫做先验概率,P(Y|X)叫做后验概率,P(Y,X)叫做联合概率
朴素贝叶斯的3种常见模型
- 多项式模型:每个重复出现的词语都经过计算。
- 伯努利模型:将重复的词语都视为其只出现1次。
- 混合模型:在计算句子概率时,不考虑重复词语出现的次数,但是在统计计算词语的概率P("词语"|Sentence)时,却考虑重复词语的出现次数。以上两种模型的混合态。
朴素贝叶斯在工程上应用
- 分类问题,例如垃圾文本过滤,文本分类,情感判别
- 多分类实时预测
- 推荐系统(朴素贝叶斯和协同过滤是一对好搭档,协同过滤是强相关,但泛化能力弱。朴素贝叶斯则是弱相关,但泛化能力强,二者一起能增强推荐系统的覆盖度和效果)
贝叶斯在分类上的应用举例:垃圾邮件分类
贝叶斯对文本分类的实质
说回贝叶斯算法对文本分类问题的处理,原理就是:求不同文本因具有不同特征(条件),所以它属于不同类别的概率值P不同,通过比较概率值的大小来实现分类。
优点:
- 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率
- NBC模型所需估计的参数很少,对缺失数据不太敏感,需要的样本量可以相对更少一些
- 训练模型和预测速度特别快,在log域进行加法运算(通过log把连乘变成累加)更快
- 算法比较简单,实际效果却比LR略好
缺点:
- 朴素贝叶斯网络的条件独立假设,实际情况中不存在
- 需要预先知道先验概率P(Y),比如文本中每个词在词袋中的频率
- 对于训练集种没有出现过的变量特征,需要使用平滑操作(eg.分子+1的拉普拉斯平滑)来处理
- 朴素贝叶斯所求概率的物理意义不明确
贝叶斯网络
定义:把某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。
性质:贝叶斯网络(Bayesian Network),又称有向无环图模型(directed acyclic graphical model, DAG), 是一种概率图模型,根据概率图的拓扑结构,考察一组随机变量{X1,X2,...Xn}及其n组条件概率分布(Conditional Probability Distributions, CPD)的性质。
解释:一般来说,贝叶斯网络中的有向无环图中的节点表示随机变量,它们可以是可观察到的变量,或隐变量,未知参数等。连接两个节点的箭头代表此两个随机变量是具有因果关系(或非条件独立)。若两个节点间以一个单箭头连接在一起,其中一个是”“因”,另一个是“果”。两节点就会产生一个条件概率值。
举例1:一个简单的神经网络下图中的公式和有向图是等价的。
举例2:下面是一个正常的贝叶斯网络和一个真实的贝叶斯网络的分析
推导:
-------------------------------
本文根据七月学堂课件整理而成