简述朴素贝叶斯算法的基本原理_贝叶斯分析例题

2022-11-17 11:18:08 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

朴素贝叶斯算法(Naive Bayesian algorithm) 是应用最为广泛的分类算法之一,在垃圾邮件分类等场景展露出了非常优秀的性能。

朴素贝叶斯公式来历

朴素贝叶斯,名字中的朴素二字就代表着该算法对概率事件做了很大的简化,简化内容就是各个要素之间是相互独立的。 比如今天刮风和气温低,两个要素导致了不下雨的结果。实际上刮风可能导致气温低,而且刮风对于天晴的影响会更大,朴素贝叶斯认为刮风和气温之间相互独立,且对于是否下雨这个结果的影响没有轻重之分。用公式来表示这种独立性就是:

在介绍朴素贝叶斯公式前,先介绍一下条件概率公式。条件概率表示在B已经发生的条件下,A发生概率。

朴素贝叶斯公式就是条件概率的变形。 假设已有数据为

其中x为属性值,y为分类结果,共有n个已有数据。每个x有多种属性,以第一组数据为例,上标表示第几个属性值,x的具体表示如下

假设y的可取值为(c1,c2,…,ck) 则贝叶斯公式表示为

由公式可以看出,贝叶斯公式就是条件概率的公式。贝叶斯公式的解释很简单:在已有数据的基础上,出现了一个新数据,只有X=(a1,a2,…,am),来预测y的取值。贝叶斯公式就是求在目前X发生的情况下,y取不同值的概率大小进行排序,取最大概率的y值。 其中X有多个属性,朴素贝叶斯假设各个属性之间是独立的,因此

因此朴素贝叶斯公式可以写成

此公式的含义就是在目前已知历史数据数据的前提下,出现了一个新的X,求在X已经发生的条件下,y取不同值的概率,然后取使得条件概率最大的y作为预测结果。也就是说寻找y的取值Cn,使得上式最大,用公式表示就是

这里可以看出,不论求y取任何值Ci的概率,分母都不变,为P(x=X),因此该公式可以简化为:(正因为将P(x=X)省略了,所以我就没有将P(x=X)写成全概率公式的样子)

其中P(y=Cn)是指y取Cn的值的数量占所有y值数量的百分比;P(xi=ai|y=Cn)表示在y取值为Cn的条件下,xi=ai的条件概率。公式表示如下:(I()函数表示当括号内的条件成立时,记为1。)

到这里,朴素贝叶斯的基础原理就完了。顺便提一下生成模型和判别模型吧。大家可以看到,朴素贝叶斯算法在进行判断时,每次都要用到历史数据,在求得概率分布的情况下再对新数据预测,这就是生成模型。什么是判别模型呢,简单的说就是像神经网络算法那种,训练完将各种权重保存起来,有了新数据直接使用权重带入进行计算,最后得出判别结果。这只是顺带提了一句,让读着有个大概的认识,语言并不是很严谨,如果读着想了解更多,请寻找相关的专业介绍生成和判别模型的文章。

举例1

这里使用了《统计学习方法-李航》里的例子。 历史数据为

x是二维向量,第一维度可取值(1,2,3),第二维度可取值(S,M,L),y可取值(-1,1)。目前有一个新数据x(2,S),使用朴素贝叶斯算法确定y的取值。 解: 目标是比较在数据x(2,S)下,不同y值的条件概率,也就是求P(y=1|x=(2,S))和P(y=-1|x=(2,S))的大小。

由此公式可知,分母相同,只需要对比分子的大小。

注意: P(x1=2|y=1)=3/9数错了,不好意思。图片不方便改,望知悉。

所以y的取值是-1

原始朴素贝叶斯公式的问题

大家在解例子的时候有没有发现一个问题,假如

标红框的连乘中有一项为0,也就是说在y取值为Cn的条件下,ai的值没有出现过,所以P(x=X|y=Cn)=0,也就是说y取Cn的可能性为0,与实际不符。很明显这种情况产生了严重的偏差。 为了纠正这种情况产生的偏差,对等式右边的概率计算进行了改进

  1. 先验概率改进计算公式:

式中λ>=0,K是y可取值的总数。当λ=0时,和原来的公式一样,当λ=1时称为拉普拉斯平滑(这个名词的背后历史就不提了,λ尝取的值就是1)。 不难看出有如下规律

说明Pλ也是一种概率分布,既解决了某些值概率可能为0的问题,又基本符合原来的概率分布。 2. 条件概率改进计算公式

同样的,λ>=0,Sj表示x第j个维度可取值的总数。同样的对于Pλ(xj=aj|y=Cn)也是一种概率分布,近似代表着改进之前的概率分布。 有了改进后的先验概率和条件概率的公式,便可以解决了单一条件概率为0时,判断不准确的问题。

举例2

对于例子1,使用拉普拉斯平滑后的概率计算公式来预测。我把题目复制一下,虽然看着累赘,省的回去一直翻着看。 历史数据为

x是二维向量,第一维度可取值(1,2,3),第二维度可取值(S,M,L),y可取值(-1,1)。目前有一个新数据x(2,S),使用朴素贝叶斯算法确定y的取值。 解:

因此可以看出y=-1的概率更大,因此预测结果为-1。这个结果与例子1的结果相同。 本文主要参考了《统计学习方法》这本书,只希望把学习结果能分享给对的人,总结的内容比较浅显简单。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/215536.html原文链接:https://javaforall.cn

0 人点赞