贝叶斯定理是18世纪英国数学家托马斯·贝叶斯(Thomas Bayes)提出得重要概率论理论。
所谓的贝叶斯定理源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有 N 个白球,M 个黑球,你伸手进去摸一把,摸出黑球的概率是多大”。而一个自然而然的问题是反过来:“如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测”。这个问题,就是所谓的逆向概率问题。
(,_):联合概率密度;
(|_ ):类条件概率密度;
(_│):后验概率;
():总体密度;
(_ ):先验概率
第一阶段——准备工作阶段,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。
第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。
第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类。
下面数据集反映了出去玩(Play)和天气(Weather)、温度(Temperature)之间的关系。
天气是Sunny,温度是Hot是否会出去玩?
因为0.9>0.3,所以不会出去玩
如果有一个属性的类条件概率等于0,则整个类的后验概率就等于0。
仅使用记录比例来估计类条件概率的方法显得太脆弱了,尤其是当训练样例很少且属性数目有很大时。
解决问题的方法通常要进行平滑处理,使用拉普拉斯修正和m-估计方法来估计条件概率:
其中,n是属于Y类的训练实例数目,_c是_=与=y的训练实例数目,是属性值的总数,p是先验已知的(_=|)的一些初步估计,m是一个超参数,表示当训练实例的比例太敏感时,我们使用p的置信度。
朴素贝叶斯分类是基于各类别相互独立这一假设来进行分类计算的。
然而,在实践中,要求属性的值相互之间条件独立是比较苛刻的;也就是说变量之间以来是可能存在的,即实际上变量间的相互以来情况是较为常见的。
贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型(directedacyclic graphical model)是一种更灵活的类条件概率P(X|C)的建模方法,不要求给定的数据集中属性之间都条件独立,而是允许指定哪些属性条件独立。
贝叶斯网络包括两部分:
条件独立:
贝叶斯网络中的一个结点,如果它的父母结点已知,则它条件独立于它的所有非后代节点。
(a)AB相互独立,并且都直接影响第三个变量C
(b)给定C,A条件独立于B和D,因为B和D都是A的非后代结点。
(c)y是目标类,{x1,x2,…,xn}是属性集
如下是一个发现心脏病和心口痛病人的贝叶斯网络:
可以看出,属性锻炼和饮食以一定概率影响心脏病和心口痛的发病,而心脏病和心口痛也以一定概率影响血压和胸痛这两个症状的发生。
贝叶斯网络的建模包括两个步骤:
假设我们使用BBN来判断一个人是否患有心脏病感兴趣。下面阐释在不同情况下做出诊断。
情况一:没有先验信息。
在没有任何先验信息的情况下,可以通过计算先验概率P(HD=Yes)和P(HD=No)来确定一个病人是否可能患心脏病。为了表述方便,设∈{,}表示锻炼的两个值,β∈{健康,不健康}表示饮食的两个值。
因为(=No)=1−(=es)=0.51,所以,此人不得心脏病的几率略微大一些。
情况二:高血压
如果一个人患有高血压,可以比较后验概率P(HD=Yes|BP=高)和P(HD=No|BP=高)来判断此人是否患心脏病。为此,我们必须先计算P(BP=高):
其中,∈{,}。因此此人患心脏病的后验概率是:
因此,当一个人有高血压时,他患心脏病的危险就增加了。
情况三3:高血压,饮食健康,锻炼情况
假设得知此人经常锻炼身体并且饮食健康,加上这些新信息,此人患心脏病的后验概率为:
因此模型按时健康的饮食和有规律的体育锻炼可以降低患心脏病的风险。
文本分类/垃圾文本过滤/情感判别:因为多分类很简单,同时在文本数据中,分布独立这个假设基本是成立的。而垃圾文本过滤(比如垃圾邮件识别)和情感分析(微博上的褒贬情绪)用朴素贝叶斯也通常能取得很好的效果。
多分类实时预测:对于文本相关的多分类实时预测,被广泛应用,简单又高效。
推荐系统:朴素贝叶斯和协同过滤(Collaborative Filtering)是一对好搭档,协同过滤是强相关性,但是泛化能力略弱,朴素贝叶斯和协同过滤一起,能增强推荐的覆盖度和效果。
垃圾邮件是一种令人头痛的问题,困扰着所有的互联网用户。全球垃圾邮件的高峰出现在2006年,那时候所有邮件中90%都是垃圾,2015年6月份全球垃圾邮件的比例数字首次降低到50%以下。
最初的垃圾邮件过滤是靠静态关键词加一些判断条件来过滤,效果不好,漏网之鱼多,冤枉的也不少。
2002年,Paul Graham提出使用"贝叶斯推断"过滤垃圾邮件。他说,这样做的效果,好得不可思议。1000封垃圾邮件可以过滤掉995封,且没有一个误判。因为典型的垃圾邮件词汇在垃圾邮件中会以更高的频率出现,所以在做贝叶斯公式计算时,肯定会被识别出来。之后用最高频的15个垃圾词汇做联合概率计算,联合概率的结果超过90%将说明它是垃圾邮件。用贝叶斯过滤器可以识别很多改写过的垃圾邮件,而且错判率非常低。甚至不要求对初始值有多么精确,精度会在随后计算中逐渐逼近真实情况。