联合概率:
在概率论中,我们可以证明,两个事件的联合概率等于这两个事件任意条件概率 * 这个条件事件本身的概率。
因为分类算法给出的是“样本标签更可能是某类的可能性”,而不是一种“确定”,比如决策树使用叶子结点占比较多的标签所占的比例(接口predict_prob),逻辑回顾使用sigmoid函数压缩后的似然(接口predict_prob),SVM使用样本点到决策边界的距离(接口decision_function),这些指标本质都是一种“类概率”的表示,通过归一化或sigmoid函数将这些指标压缩打0~1之间,让其表示模型对预测结果究竟有多大的把握(置信度)。但希望使用真正的概率来衡量可能性,使用概率算法:朴素贝叶斯。
1. 概率论基础知识
假设有两个随机变量X和Y,分别取值为x和y,定义以下两种概率:
联合概率:X取值为x,Y取值为y这两件事同时发生的概率,表示为
条件概率:在“X取值为x”的前提下,“Y取值为y”的概率,表示为
两件事件的联合概率=这两个事件任意条件概率*这个条件事件本身的概率。
根据上述情况的出贝叶斯理论等式:
将特征X当作条件事件,要求解的标签Y当成条件满足后被影响的结果,概率式子为,称作后验概率。而标签Y在没有任何条件限制下取值为某个值的概率,写作,称作先验概率。而被称为“类的条件概率”,表示当Y的取值固定时,X为某个值的概率。
机器学习中简写的,通常表示标签取到少数类的概率,少数类往往使用正类别表示,即,本质就样本中所有标签为1的样本所占的比例。是对于任意一个样本而言,如果这个样本的特征X的取值为1,则表示求解,如果这个样本的特征X取值为0,则表示求解,每个样本的如果大于阈值0.5,则认为样本是少数类(样本为1)反之小于0.5,则认为样本是多数类(负样本,0或者-1)。
在机器学习中,对每一个样本,不可能只有一个特征X,而是会存在包含n个特征的取值的特征向量。因此机器学习中的后验概率写作,其中包含样本在n个特征上的分别取值,由此。
对每一个样本:
2.
对于分子而言,就是少数类占样本量的比例,,假设只有两个特征:
假设之间是条件独立的,这是在假设是一个对在某个条件下的取值完全无影响的变量。
推广到n个上:
// 两件事件的联合概率=这两个事件任意条件概率 * 这个条件事件本身的概率。
//
这个式子证明,在Y=1的条件下,多个特征的取值被同时取到的概率,就等于Y=1的条件下,多个特征的取值被分别取到的概率相乘,
假设特征之间是条件独立的,可以解决众多问题,也简化了很多计算过程,这是朴素贝叶斯被称为“朴素”的理由,现实中的数据多多少少都会有一些相关性。
3.
使用全概率公式求解:
是标签的种类,那么对二分类而言:
4. sklearn对应的模块
朴素贝叶斯是一个不建模的算法,以前学的不建模算法比如:KMeans,PCA,都是无监督学习,而朴素贝叶斯是一个有监督,不建模的分类算法,它的训练集和测试集来自于同一个不可获得的大样本下,在训练集计算出的各种概率,可以直接放到测试集上使用。
针对
分母的复杂度会随着特征数目的变多而指数级增长。
接下来有趣的来了:
对于一个二分类问题:
并且,在分类时,选择和中较大的一个所对应的Y的取值作为该样本的分类,这两个概率计算的分母是一样的,我们可以不计算分母,只考虑分子的大小。并且当计算出两个分子的大小后,让两个分子相加,获得分母的值,避免计算,这个过程叫“最大后验估计”。在最大后验估计中,我们只需要求解分子,主要是求解一 个样本下每个特征取值下的概率 ,再求连乘便能够获得相应的概率。
在现实中,要求解分子也会有各种各样的问题。比如说,测试集中出现的某种概率组合,是训练集中从未出现的状 况,这种时候就会出现某一个概率为0的情况,贝叶斯概率的分子就会为0。还有,现实中的大多数标签还是连续型 量,要处理连续型变量的概率,就不是单纯的数样本个数的占比的问题了。接下来我们就来看看,如何对连续型特征求解概率。
4. 处理连续变量
来思考一个简单的问题:汉堡王向客户承诺说他们的汉堡至少是100g一个,但如果我们去汉堡王买个 汉堡,我们可以预料到它肯定不是标准的100g。设我们的汉堡重量为特征 ,100g就是我们的取值 ,那我买到一个汉堡是100g的概率是多少呢?如果我们买n个汉堡,很可能n个汉堡都不一样重,只要我们称重足够精确,100.000001g和100.00002g就可以是不一致的。这种情况下我们可以买无限个汉堡,可能得到无限个重量,可 以有无限个基本随机事件的发生,所以我们有:
即买到的汉堡刚好是100g概率为0。当一个特征下有无数种可能发生的事件时,这个特征的取值就是连续型的,比如 我们现在的特征“汉堡的重量”。从上面的例子可以看得出,当特征为连续型时,随机取到某一个事件发生的概率就为 0。
那换一个问题,我们随机买一个汉堡,汉堡的重量在98g~102g之间的概率是多少?即是说,我们现在求解概率 。那我们现在随机购买100个汉堡,称重后记下所有重量在98g~102g之间的汉堡个数,假设为 m,则就有:
在数学中,连续型随机变量概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。而随机变量的取值落在某个区域之内的概率则为概率密度函数在这个区域上的积分。当概率密度函数存在的时候,累积分布函数是概率密度函数的积分。
将求解连续型变量下某个点取值的概率问题,转化成了求解一个函数在点上的取值的问题。
5. 概率类模型评估指标
5.1 布里尔分数
其中为样本数量,是朴素贝叶斯预测出的概率,是样本对应的真实结果,只能取到0或1,事件发生为1,不发生为0。布里尔分数取值为0到1,分数越高,则预测结果越差,校准程度越差。因为本质是衡量损失,在sklearn中命名为brier_score_loss。