机器学习算法之朴素贝叶斯原理

85 篇文章 5 订阅
21 篇文章 0 订阅

缘起:真正的概率分类器

在许多分类算法应用中,特征和标签之间的关系并非是决定性的。比如说,我们想预测一个人究竟是否会在泰坦尼克号海难中生存下来,那我们可以建一棵决策树来学习训练集。在训练中,其中一个
人的特征为:30岁,男,普通舱,他最后在泰坦尼克号海难中去世了。当我们测试的时候,我们发现有另一个⼈人的特征也为:30岁,男,普通舱。基于在训练集中的学习,我们的决策树必然会给这个人打上标签:去世。然而,这个人的真实情况一定是去世了吗?并非如此。
也许这个人是心脏病患者,得到了上救生艇的优先权。又有可能,这个人就是挤上了救生艇,活了下来。对分类算法来说,基于训练的经验,这个人“很有可能”是没有活下来,但算法永远也无法确定”这个人一定没有活下来“。即便这个人最后真的没有活下来,算法也无法确定基于训练数据给出的判断,是否真的解释了了这个人没有存活下来的真实情况。这就是说,算法得出的结论,永远不是100%确定的,更多的是判断出了一种“样本的标签更更可能是某类的可能性”,而非一种“确定”。我们通过某些规定,比如说,在决策树的叶子节点上占比较多的标签,就是叶子节点上所有样本的标签,来强行让算法为我们返回一个固定结果。但许多时候,我们也希望能够理解算法判断出的可能性本身。
每种算法使用不不同的指标来衡量这种可能性。比如说,决策树使用的就是叶子节点上占比较多的标签所占的比例(接口predict_proba调用),逻辑回归使用的是sigmoid函数压缩后的似然(接口predict_proba调用),而SVM使用的是样本点到决策边界的距离(接口decision_function调用)。但这些指标的本质,其实都是一种“类概率”的表示,我们可以通过归一化或sigmoid函数将这些指标压缩到0~1之间,让他们表示我们的模型对预测的结果究竟有多大的把握(置信度)。但无论如何,我们都希望使用真正的概率来衡量量可能性,因此就有了了真正的概率算法:朴素贝叶斯。

朴素贝叶斯是如何工作的

基本原理概述

在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树、KNN、逻辑回归、支持向量量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数Y=f(X) ,要么是条件分布 P(Y|X)。但是朴素贝叶斯确实生成方法,也就是直接找出特征输出Y和特征X的联合分布P(X,Y),然后用P(Y|X)=P(X,Y)/P(X)得出结论。
朴素贝叶斯很直观,计算量也不大,在很多领域有广泛的应用,首先我们对朴素贝叶斯算法原理做一梳理。

贝叶斯相关统计学原理

在了解朴素贝叶斯的算法之前,我们需要对相关必须的统计学知识做一个回顾。
贝叶斯学派很古老,但是从诞生到一百年前一直不是主流。主流是频率学派。频率学派的权威皮尔逊和费歇尔都对贝叶斯学派不屑一顾,但是贝叶斯学派硬是凭借在现代特定领域的出色应用表现为自己赢得了半壁江山。
贝叶斯学派的思想可以概括为「先验概率+数据=后验概率」。也就是说我们在实际问题中需要得到的后验概率,可以通过先验概率和数据一起综合得到。数据大家好理解,被频率学派攻击的是先验概率,一般来说先验概率就是我们对于数据所在领域的历史经验,但是这个经验常常难以量化或者模型化,于是贝叶斯学派大胆的假设先验分布的模型,比如正态分布、beta分布等。这个假设一般没有特定的依据,
因此一直被频率学派认为很荒谬。虽然难以从严密的数学逻辑里推出贝叶斯学派的逻辑,但是在很多实际应用中,贝叶斯理论很好用,比如垃圾邮件分类,文本分类。
我们先看看条件独立公式,如果X和Y相互独立,它们的联合概率P(X=x,Y=y)是指X取值x且Y取值y的概率。我们接着看看条件概率公式:
P(Y|X)=P(X,Y)/P(X)
P(X|Y)=P(X,Y)/P(Y)
在概率论中,我们可以证明,两个事件的联合概率等于这两个事件任意条件概率 * 这个条件事件本身的概率。
P(X,Y)=P(Y|X)*P(X)=P(X|Y)*P(Y)
接着看看全概率公式:
P(X)= ∑ k \sum_k kP(X|Y=Yk)P(Yk)
其中 ∑ k \sum_k kP(Yk)=1,由上面的式子,得到贝叶斯公式:
P(Y|X)= P ( X ∣ Y ) P ( X ) \frac{P(X|Y)}{P(X)} P(X)P(XY)P(Y)
P(Yk|X)= P ( X ∣ Y k ) P ( Y k ) ∑ k P ( X ∣ Y = Y k ) P ( Y k ) \frac{P(X|Y_k)P(Y_k)}{\displaystyle\sum_kP(X|Y=Y_k)P(Y_k)} kP(XY=Yk)P(Yk)P(XYk)P(Yk)
而这个式子,就是一切贝叶斯算法的根源理论。把特征当成条件事件,而要求解的标签当成是被满足条件后会被影响的结果,而两者之间的概率关系就是P(Y|X),这个概率在机器学习中,称为是标签的后验概率(posterior probability),即,先知道了条件,再去求解结果。而标签在没有任何条件限制下取值为某个值的概率,写作P(Y),与后验概率相反,这是完全没有任何条件限制的,标签的先验概率(prior probability)。而**P(X|Y)**称为“类的条件概率”,表示当Y的取值固定的时候,X为某个值的概率。现在,有趣的事情出现了。
P(Y)称为 「先验概率」,即在事件发生之前,我们对X事件概率的一个判断。
P(Y|X)称为「后验概率」,即在事件发生之后,我们对X事件概率的重新评估。
P(X|Y)/P(X)称为「可能性函数」,这是一个调整因子,使得预估概率更接近真实概率。
所以,条件概率可以理解为:后验概率=先验概率 * 调整因子
如果可能性函数>1,意味着先验概率被增强,事件发生的可能性变大;
如果可能性函数=1,意味着X事件无助于判断事件Y的可能性;
如果可能性函数<1,意味着先验概率被削弱,事件Y可能性变小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值