知行编程网知行编程网  2021-12-29 19:48 知行编程网 隐藏边栏 |   抢沙发  6 
文章评分 0 次,平均分 0.0

 

 

重版公告

由于小夕之后要讲的好几篇文章要基于这一篇的知识,但是以前写的的这篇文章对朴素贝叶斯的讨论不够深入,又不值得再额外写一篇朴素贝叶斯啦,因此本文重版了以前的文章《朴素贝叶斯》。与旧版相比,新版对基础知识的讲解进行了大幅更新,并加入了一些更深的讨论和结论,并重新进行了排版。

 

朴素贝叶斯分类器可以说是最经典的基于统计的机器学习模型了。首先,暂且不管贝叶斯是什么意思,朴素这个名字放在分类器中好像有所深意。

 

一查,发现这个分类器的英文是“Naïve Bayes”。Naïve(读作“哪义务”)即幼稚的、天真的(但是总不能叫“幼稚贝叶斯”阿),Bayes即贝叶斯。那么这里的Naïve/朴素,是什么意思呢?其实就是代表着简化问题复杂度,像一个小孩子一样,不考虑复杂的东西。

 

Naive

 

一句话描述Naïve的意思就是“特征独立性假设”。详细的说,这里的独立性假设一般是指条件独立性假设,但是在处理序列问题时(比如文本分类、语音识别),还经常用到位置独立性假设分别是什么意思呢?

 

条件独立性假设 {

 

如果我们要识别一个人的性别,要用到“身高”和“体重”这两个特征。所以这里的类别y为男/女,特征X=[x1=身高  x2=体重]。

 

我们知道,“身高”和“体重”明明是有关系的,比如身高1米8的人是不太可能体重低于100斤的,但是在朴素贝叶斯分类器的眼里,身高和体重没有关系。即令 x1=身高为180cm , x2=体重为50kg ,则:

 

【重版】朴素贝叶斯与拣鱼的故事

 

意思即一个人身高为180cm且体重为50kg的概率就等于一个人为180cm的概率乘以一个人为50kg的概率。虽然一个人为180cm的概率很大(比如一个男孩子),一个人为50kg的概率也很大(比如一个女孩子),但是人的身高为180cm且体重为50kg的概率很小。但是在贝叶斯的条件独立性假设下,x1与x2相互独立,故是直接将【重版】朴素贝叶斯与拣鱼的故事【重版】朴素贝叶斯与拣鱼的故事这两个大概率相乘的,故算出来的概率肯定远大于实际值。

 

总结,朴素贝叶斯模型会假设特征向量的各个维度间相互独立(毫无关系)。即“条件独立性假设”。

}

位置独立性假设{ 

 

位置独立性假设一般不会提,但是如果要用朴素贝叶斯模型解决序列化的分类问题时,就必须引入这个假设了。

 

位置独立性的意思是对于序列中各个位置的特征向量,完全忽略其位置信息。举个栗子,比如在文本挖掘中,“我|喜欢|狗”中有三个特征向量【重版】朴素贝叶斯与拣鱼的故事,即分别为向量“我”、向量“喜欢”、向量“狗”,如果我们按照先后顺序来考虑这三个特征的话,就能得出你喜欢狗这个事实。但是如果按照“狗”“喜欢”“我”这样的顺序的话,得到的意思就完全变了。显然,这里各个特征向量之间的先后顺序(即位置)对于语义相关的分类任务而言是很重要的。然而,朴素贝叶斯的假设就是位置之间是独立的,即完全抛弃序列的位置信息。因此在朴素贝叶斯看来,“我|喜欢|狗”与“狗|喜欢|我”是同一个分类任务。

}

 

好,朴素的意思我们懂了,那么核心就是贝叶斯了。

 

 

Bayes

 

显然,在统计理论中,与贝叶斯最相关的就是贝叶斯定理,也叫贝叶斯公式。不用管能不能看懂,先贴出通用形式的公式:

 

 

【重版】朴素贝叶斯与拣鱼的故事

 

我们把公式里的事件A看作样本特征为某值,该值用X表示把B看作分类目标的类别为某值,该值用y表示。然后就会发现非常非常简单啦,如下:

 

【重版】朴素贝叶斯与拣鱼的故事

 

所以呢,这个公式的意思就是:

 

公式左边:已知样本特征的值为X的情况下,目标类别为y的概率(即【重版】朴素贝叶斯与拣鱼的故事,专业说法叫后验概率)就等于

 

公式右边:什么都不知道的情况下,目标类别为y的概率(即【重版】朴素贝叶斯与拣鱼的故事,专业说法叫类别y的先验概率)乘以已知目标类别是y的情况下,特征的值为X的概率(即【重版】朴素贝叶斯与拣鱼的故事,专业说法叫似然函数)。再除以什么都不知道的情况下,特征的值为X的概率(即【重版】朴素贝叶斯与拣鱼的故事,专业说法叫特征X的先验概率,也有的叫证据)。

 

诶?细心的读者有没有发现什么呢?相信此时肯定已经有人激动了!我们这里看一个栗子,引入更深的讨论。

 

就是这个栗子。

 

【重版】朴素贝叶斯与拣鱼的故事

 

其实是下面的栗子啦( ̄∇ ̄)

 

假如小夕捕获了一批鱼,这批鱼中只有黑鱼和三文鱼。虽然小夕并不认识这两种鱼,但是小夕有设备可以测量出每条鱼肚皮的亮度等级(比如最白为10级,最黑为1级)。然后有一位好心的粉丝送给了小夕一批标好类别的黑鱼和三文鱼。那么小夕借助上面这些已经知道的东西,用朴素贝叶斯分类器来给小夕捕的那些鱼的类别贴标签,从而分拣出三文鱼和黑鱼,要怎么做呢?

 

 

拣鱼

 

诶?这里不是说鱼肚皮的亮度等级都能测出来嘛?那鱼肚皮的亮度等级不就是一个特征咯,每条鱼测出来的亮度等级不就是特征的值嘛,即X。而黑鱼和三文鱼就是我们要分类的目标,记为类别c0和类别c1。有没有灵光一现?

 

对!还记得贝叶斯定理的等式左边的【重版】朴素贝叶斯与拣鱼的故事的意思吗?假如某条鱼测得的亮度等级为2,那么我们只需要计算并比较 【重版】朴素贝叶斯与拣鱼的故事 与 【重版】朴素贝叶斯与拣鱼的故事 的大小不就可以啦!肯定是值更大的,也就是概率更大的,就是我们要输出的类别呀!专业说法叫取最大后验概率

 

那么怎么计算呢?显然就是用等式右边那三坨(噗,好不文明的说)。为了方便阅读,在这里再贴一遍。

 

【重版】朴素贝叶斯与拣鱼的故事

 

首先,右边这三坨中,除号底下的【重版】朴素贝叶斯与拣鱼的故事代表特征取某值的概率,然而我们要预测某一条鱼的类别,显然这条鱼的特征的值我们已经知道了,即定值,因此不管是求 【重版】朴素贝叶斯与拣鱼的故事 也好,求  【重版】朴素贝叶斯与拣鱼的故事 也好, 【重版】朴素贝叶斯与拣鱼的故事 是相同的值,对于比较这两个概率的大小没有任何帮助。因此干脆不计算了。

 

然后,这三坨中的 【重版】朴素贝叶斯与拣鱼的故事 代表某类别的先验概率,怎么计算得到呢?还记得粉丝给了小夕一堆鱼吗?那我们直接用这一堆鱼来近似得到 【重版】朴素贝叶斯与拣鱼的故事 不就可以啦!

 

按照概率论的大数定律的意思,当样本足够多时,样本的统计比率就可以近似真实概率。回想一下抛10000次均匀硬币时会有接近5000次正面向上,由此得到正面向上的概率为0.5

 

因此,假如粉丝给了小夕10000条鱼,其中3000条是黑鱼,7000条是三文鱼,那显然 【重版】朴素贝叶斯与拣鱼的故事 ,同理 【重版】朴素贝叶斯与拣鱼的故事 。看,【重版】朴素贝叶斯与拣鱼的故事 解决了吧。

 

三坨中的最后一坨, 【重版】朴素贝叶斯与拣鱼的故事 怎么得到呢?也很轻松啊,同样是利用粉丝给的10000条鱼,小夕用设备将这10000条鱼的亮度等级测出来后,只需要从每个类别的鱼群中,统计一下特征X的每个取值下的鱼数量该类别的鱼总数的比率就好啦。

 

比如黑鱼有3000条,其中亮度等级为8的鱼一共有1000条,那么 【重版】朴素贝叶斯与拣鱼的故事 。同理可以得到其他 【重版】朴素贝叶斯与拣鱼的故事 的值啦。

 

至此,等式右边全都解决了,因此等式左边也能比较大小了。所以对于下面这种情况的话(粉丝给了小夕100来条鱼用于训练分类器):

 

 

【重版】朴素贝叶斯与拣鱼的故事

 

小夕做好的朴素贝叶斯分类器肯定会将亮度等级小于【重版】朴素贝叶斯与拣鱼的故事的鱼都认为是三文鱼(在此情况下,类别判定为三文鱼的概率总是比黑鱼的概率大),反之都认为是黑鱼。

 

等等,问题出现了,我们知道,【重版】朴素贝叶斯与拣鱼的故事的点就是【重版】朴素贝叶斯与拣鱼的故事【重版】朴素贝叶斯与拣鱼的故事相等的点。但是,朴素贝叶斯在计算这两个值的时候,算出来的真的是这两个值吗?

 

 

到底是什么

 

还记不记得,前文中,我们在计算等式左边的时候,忽略了等式后边的【重版】朴素贝叶斯与拣鱼的故事这一项!再把公式搬过来:

 

【重版】朴素贝叶斯与拣鱼的故事

 

也就是说,贝叶斯分类器在计算每个类别的“后验概率”的时候,实际上计算出的并不是后验概率【重版】朴素贝叶斯与拣鱼的故事!由于只计算了【重版】朴素贝叶斯与拣鱼的故事,因此得到的结果实际上是【重版】朴素贝叶斯与拣鱼的故事!!!

 

【重版】朴素贝叶斯与拣鱼的故事是什么呢?有概率论基础的同学应该知道,这个就是y与X的联合概率,也就是【重版】朴素贝叶斯与拣鱼的故事,也就是X与y共同发生的概率。

 

所以说,朴素贝叶斯分类器的核心虽然是贝叶斯公式,但是其计算某样本的各类别的可能性时,实际上计算出的不是各类别的后验概率,而是各类别y与该样本特征X的联合概率【重版】朴素贝叶斯与拣鱼的故事

 

这一结论有什么用呢?以后就有用啦~而且至关重要哦。

 

等等,还有个问题,到目前为止,都没有用到文章开头写的条件独立性假设啊?这个假设有什么用呢?

 

多维特征

 

当然啦,这个假设本质上的意思就是忽略X各个维度之间的相关性,因此当X有多维特征时,就派上用场啦。

 

比如小夕又买了个尺子,可以测量鱼身的长度。

 

这时特征 X=[x1(亮度) x2(身长)] 了。这时唯一的影响就是在计算等式右边的这个 【重版】朴素贝叶斯与拣鱼的故事 时,按照独立性假设展开成 【重版】朴素贝叶斯与拣鱼的故事 就可以啦。看吧,naïve一些还是可以避免很多麻烦的。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享