
1、贝叶斯公式的本质: <u>由因到果,由果推因</u>
2、贝叶斯公式:
[图片上传中...(wps6.png-5fd624-1618488341725-0)]
1、朴素贝叶斯公式
x1,x2,...xn为特征集合,y为分类结果
朴素贝叶斯假设各个特征之间相互独立
分母相同情况下,我们只要保证分子最大
训练数据集
long,not_long,sweet,not_sweet,yellow,not_yellow,species
400,100,350,150,450,50,banana
0,300,150,150,300,0,orange
100,100,150,50,50,150,other_fruit
测试数据集
long,sweet,yellow
not_long,not_sweet,not_yellow
not_long,sweet,not_yellow
not_long,sweet,yellow
not_long,sweet,yellow
not_long,not_sweet,not_yellow
long,not_sweet,not_yellow
long,not_sweet,not_yellow
long,not_sweet,not_yellow
long,not_sweet,not_yellow
long,not_sweet,yellow
not_long,not_sweet,yellow
not_long,not_sweet,yellow
long,not_sweet,not_yellow
not_long,not_sweet,yellow
结果
特征值:[not_long, not_sweet, not_yellow]
预测结果:{'banana': 0.003, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[not_long, sweet, not_yellow]
预测结果:{'banana': 0.006999999999999999, 'orange': 0.0, 'other_fruit': 0.05625000000000001}
水果类别:other_fruit
特征值:[not_long, sweet, yellow]
预测结果:{'banana': 0.063, 'orange': 0.15, 'other_fruit': 0.018750000000000003}
水果类别:orange
特征值:[not_long, sweet, yellow]
预测结果:{'banana': 0.063, 'orange': 0.15, 'other_fruit': 0.018750000000000003}
水果类别:orange
特征值:[not_long, not_sweet, not_yellow]
预测结果:{'banana': 0.003, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, yellow]
预测结果:{'banana': 0.108, 'orange': 0.0, 'other_fruit': 0.00625}
水果类别:banana
特征值:[not_long, not_sweet, yellow]
预测结果:{'banana': 0.027, 'orange': 0.15, 'other_fruit': 0.00625}
水果类别:orange
特征值:[not_long, not_sweet, yellow]
预测结果:{'banana': 0.027, 'orange': 0.15, 'other_fruit': 0.00625}
水果类别:orange
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[not_long, not_sweet, yellow]
预测结果:{'banana': 0.027, 'orange': 0.15, 'other_fruit': 0.00625}
水果类别:orange
贝叶斯分类器,即是以贝叶斯决策理论为基础的分类器,什么是贝叶斯决策理论呢?
贝叶斯决策论是贝叶斯学派关于统计推断(根据已有资料或者说数据,对未知问题作出判断)的理论,要理解贝叶斯理论,就不得不和他的 “老对手”——频率学派(经典学派)一起聊。
首先我们看看统计推断的问题是什么。statistical inference 是学统计的目的,即根据样本数据,对总体进行统计推断(假设检验 或 预测).是指统计学中研究如何根据样本数据去推断总体数量特征的方法。统计推断主要可以分为两大类:一类是参数估计问题;另一类是假设检验问题。
关于这些问题,从20世纪上半页至今,频率学派和贝叶斯学派两大学派一直在辩论,也一直互相不服。贝叶斯学派的发展在二十世纪滞后于频率学派,所以我们在学校教材上学到的统计推断的方法基本上都是频率学派的,比如最大似然估计、卡方检验、T检验、矩估计等等。
两个学派争论的点是什么呢?
现在应该对贝叶斯学派的思想有了一点认识了。那我们看看在分类问题上贝叶斯分类器是怎么一回事呢?
贝叶斯分类器是一类分类算法的总称,贝叶斯定理是这类算法的核心,因此统称为贝叶斯分类。
在分类问题中,我们可以根据样本 x 计算出在样本中各个类别 c 出现的概率,即后验概率 P(c|x) ,根据之前对贝叶斯统计推断的介绍,还需要引入各种推断结果所带来的损失,我们定义 λ i,j 为将 c j 误分为 c i 时所产生的损失,根据误判出现的概率和导致的损失,可以计算出错误分类是产生的期望损失,称之为“风险”:
后验概率最大化与风险最小化 :对于二分类问题,λ要么等于0要么等于1
当 i = i ,即正确分类时, λ ii = 0,所以可以计算此时所以条件风险(该条件下的风险)为
P(c|x) 就是根据样本 x 进行分类,想想以前讲过的KNN、LR等,所做的不就是这个工作吗,这种直接对 P(c|x) 进行建模来预测 c 的方法,都叫做 判别式模型(Discriminative Model) ,判别式模型不考虑样本的产生模型,直接研究预测模型。如果我们换一种思路,先得到联合分布 P(c,x) ,再得到后验概率 P(c|x) ,这就是 生成式模型(Generative Model) ,顾名思义,生成式模型会研究样本的产生模型,判别式模型和生成式模型都是监督学习中的概念。
显然生成模型比判别模型包含更多的信息,可以做到更多的事,实际上由生成模型可以得到判别模型,但由判别模型得不到生成模型,贝叶斯分类器就是从生成模型的角度来解决分类问题,怎么实现呢?
P(c) 是类“先验”(prior)概率; P(c|x) 是样本x相对于类标记c的类条件概率(class-conditional probability) P(c|x) 是用于归一化的“证据”(evidence)因子。
类先验概率 P(c) 表达了样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时, P(c) 可通过各类样本出现的频率来进行估计. P(x) 看起来是样本出现的概率,对给定样本 x ,从形式上也可以看出 与样本的类标记无关 ,因此估计 P(c|x) 的问题就转化为如何基于训练数据D来估计先验 P(c) 和 P(x|c) 的问题,所以问题的重点就是怎么求 P(x|c) ,得到 P(x|c)
就能得到联合概率 P(x,c) ,也能能得到一个贝叶斯分类器了。那么怎么完成呢?能直接通过样本中的频率来统计吗?
对 P(x|c) 来说,由于它涉及关于x 所有属性的联合概率,直接根据样本出现的频率来估计将会遇到严重的困难,例如,假设样本的 d 个属性都是二值的,则样本空间将有 2 d 种可能的取值,在现实应用中,这个值往往远大于训练样本数m,也就是说,很多样本取值在训练集中根本没有出现,直接使用频率来估计 P(x|c) 显然不可行,因为"未被观测到"与"出现概率为零"通常是不同的。
那应该怎么计算呢?先说第一种方法: 最大似然估计 。
要求得类条件概率 P(x|c) ,如果我们什么信息都没有肯定是不行的,所以一般假设我们知道它的概率分布,然后用一定方法来求出分布的参数即可。对于求分布的参数,一般使用最大似然估计MLE,虽然MLE是频率学派的估计方法,不过好用的东西大家一起用嘛,贝叶斯学派有个差不多的估计方法:最大后验估计MAP,不过MAP比MLE多了个作为因子的先验概率P(θ),更复杂一些,这些内容咱们下回再讲。
说回最大似然估计,说到最大似然估计就不得不问一句,什么是似然?这里需要好好的说道说道,只有搞清楚似然的概念才能理解怎么计算它。
极大似然是频率学派的参数估计方法,似然即参数的似然,是由频率学派建立的、极大似然估计中的重要概念。从前文可知,频率学派认为参数是确定值,参数的似然就表达了给定样本 x 下某参数为这个确定值的可能性。在计算上,参数的似然值等于在该参数下事件发生的概率 L(θ|x) = P(X = x|θ) 。也就是说,似然值可以用概率来计算,但似然却不是概率,因为频率学派的体系下, 参数不是随机变量,故似然不是概率 ,概率是在确定参数的情况下,观测结果发生的可能性,概率的对象是概率空间中的事件,而似然的对象是参数。
因此,似然函数定义为:似然函数 L(θ|x) 是给定样本x时,关于参数θ的函数,其在数值上等于给定参数θ后变量X的概率
只是似然函数的自变量,并不是概率空间里的取值。这也从一方面说明似然是不满足概率定理(柯尔莫果洛夫公理)的三个条件的,似然并不是概率。
关于似然,知乎上还有一个很形象的例子,他山之石,可以借鉴一下, 如何理解似然函数?HiTao的回答
其中的核心观点是:似然和概率两个函数有着不同的名字,却源于同一个函数。 P(x|θ) 是一个有着两个变量的函数。 如果,你将θ设为常量,则你会得到一个概率函数(关于x的函数);如果,你将x设为常量你将得到似然函数(关于θ的函数) 。
举一个例子:
有一个硬币,它有 θ 的概率会正面向上,有 1-θ 的概率反面向上。现有正反序列:
现在应该对似然有了一定的了解了,我们回忆一下贝叶斯分类器说到哪了,对:
我们已经知道,似然即参数的似然,表示给定样本下,参数 θ 为真值的可能性,所以,极大似然估计就是以最大化参数的似然值的方法来估计参数的真值的算法。
对于一批样本,共有M个属性值和N个类别,那么 x 就是一个M维向量,要求得[图片上传中...(image-e088df-1618739940424-51)],其实就是要求
取对数得到对数似然函数,连乘转换为累加,求导之类的计算更加方便:
注意:
知乎上大神详细介绍了从散度的角度解读极大似然估计: 知乎 - 微调的回答 ,跟随大神的脚步学习一下(原回答了引入了期望,我觉得其实不用期望也没问题):
MLE的第一步是假设分布(或者已有一个分布),接下来就是通过最大化 X 发生的概率来求得分布参数,认为这就是最可能真实的分布,这个思路其实还是有一点绕的,凭什么说 X 发生的概率最大的参数就是真的参数呢?我们的目的是求出真实分布,最直观的思路应该是看我们 算出来的分布跟真实分布的相似程度 ,这刚好可以通过散度来解释。
这里的散度是机器学习的散度,也就是信息论中的散度,与物理上的散度不太一样。机器学习中我们常用的散度是KL散度(KL-Divergence)。信息论中, KL(P||Q) 可以理解为:用来衡量在同一份数据P下,使用P的编码方案和Q的编码方案的平均编码长度的差异,如果我们把真实的分布 P θ 和计算得到的分布
是不是根本就是一样的?所以其实如果我们正向考虑极大似然估计,当模型是条件概率分布,损失函数是对数损失函数时,极大似然估计就是做 经验风险最小化 ;如果我们反过来考虑,即上面从散度推导的过程,MLE就是在寻找最接近真实分布的分布。
以上一篇提到的西瓜好坏分类为例:
西瓜数据集如下图:
显然样本共有 M=6 个属性值和 N=2 个类别,首先根据样本估计类先验概率 P(好瓜)=8/17 = 0.47 , P(坏瓜)=9/17 = 0.53 ,然后为每个属性估计条件概率 P(x|c) ,要求 P(x|c)
,应该假设两个六维概率分布,比如我们假设样本为6元正态分布:
是一个6*6的正定矩阵。
然后分别写出似然函数的对数形式:
讲完了极大似然估计的理论和 *** 作,再来看看它和一个跟它很像的算法最大后验估计MAP的关系。
极大似然估计MLE是频率学派的参数估计方法,最大后验估计MAP是贝叶斯学派的参数估计方法。因此,同样是参数估计的问题,MLE中参数是确定值,故定义为 P(x,θ) ;MAP中参数是一个随机变量,故定义为
P(θ|c) ,是一个后验概率,受到先验 P(c) 和样本 x 的共同作用,这就是他们最本质的区别了,由此可得到其计算过程的区别:极大似然估计MLE对参数 θ 的估计是:
我们发现原来MAP与MLE在计算上的不同就是多了一个先验概率项,因此如果有一个合理的先验的话,MAP会比MLE对样本数据的依赖更小一些,如果数据量很大的话他们基本就是一样的了,以我们上一篇中的抛硬币例子来说:
如果按极大似然估计计算,取对数求导后计算得到 θ=0.7 ,这似乎不太符合我们的常识,如果是用MAP呢?对抛硬币问题,我们先验是
我们将贝叶斯分类器转化为了求解 P(x|c) 的问题,使用极大似然估计是我们介绍的第一个求解方法,它还存在一些不足:
求解 P(x|c) 问题的另一个方法:朴素贝叶斯。
根据 贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然 ,我们对贝叶斯分类器所要解决的问题、问题的求解方法做了概述,将贝叶斯分类问题转化成了求解 P(x|c) 的问题,上面我们分析了第一个求解方法:极大似然估计。这里我们来介绍一个更加简单的 P(x|c) 求解方法,并在此基础上讲讲常用的一个贝叶斯分类器的实现:朴素贝叶斯分类器(Naive Bayes classifier)。
我们的目标是通过对样本的学习来得到一个分类器,以此来对未知数据进行分类,即求后验概率 P(x|c)
。在[贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然】( https://www.jianshu.com/p/88b6ada7fa0e )中,我们描述了贝叶斯分类器是以生成式模型的思路来处理这个问题的,如下面的公式所示,贝叶斯分类器通过求得联合概率 P(x,c) 来计算 P(x|c) ,并将联合概率 P(x,c) 转化成了计算类先验概率 P(c) 、类条件概 P(x|c) 、证据因子 P(x) 。
朴素贝叶斯实现了我们的梦想!朴素贝叶斯中的朴素就是对多属性的联合分布做了一个大胆的假设,即 x
的 n 个维度之间相互独立:
贝叶斯分类器只能用于分类问题,贝叶斯分类器有两种,一种是Exact Bayesian,另一种是Naive Bayesian,贝叶斯分类器的predictor必须得是catogorical的。
算法一:Exact Bayesian原算法
a. 在训练集中寻找同新数据的predictor完全一致的所有数据
b. 在这些数据中寻找出现频率最多的数据,其分类为Ck
c. 将新的数据分类为Ck
算法二:Exact Bayesian的cutoff算法
a. 定义一个cutoff probability
b. 在训练集中寻找同新数据的predictor完全一致的所有数据
c. 计算这些数据属于class of interest的概率
d. 如果c中计算的概率高于这个cutoff probability,则认为该数据属于class of interest(否则属于另外的class,如果是二分类,则属于另外一类,如果是多分类,则定义其他类的cutoff probability并重复该算法的步骤)
如果使用算法二,其运用到条件概率模型:(假设d个predictor,m个class)
注: 以下的定义都是针对 训练集 而言
先验概率(prior probability)
似然函数 likelihood (probability of the profile given class k is true) :
后验概率(posterior probability) :
条件概率公式 :
因此:
最大后验等于先验乘以最大似然
这解释了为什么Exact Bayesian可以准确地进行分类
显然,Exact Bayesian的问题在于它需要被投喂很多的数据才能够找到对应的记录,如果有20个predictor,每个predictor都有两个值,那么至少需要 来保证每一条数据都有匹配的数据,因此采用Naive Bayesian的手段来缩减所需要的数据量
Naive Bayesian的假设 :当给定target class的时候,predictors之间条件独立
在该假设下:
链式法则 :
条件独立的假设
因此
注:同算法一和二,Naive Bayesian也有有cutoff和无cutoff两种版本
对于Naive Bayesian,关键的地方在于如何求出P(x|Ck)
a. 如果是categorical variable ,则
b. 如果是continuous variable (Gaussian Naive Bayesian)
假设其服从高斯分布
其中
c. Laplace Smoothing
当记录中缺少某个predictor的某个category的值的时候,Naive Bayes会输出该概率为0,为了解决这个问题,则需要一个smoothing parameter
由上可以看出:
a. 保证了概率的取值范围在(0,1),并且不会为0或者1
b. 如果category variable的取值越多,则相同的alpha会给出更小的概率值
Laplace Smoothing在Multinomial Naive Bayes(指X服从multinomial distribution)和Categorical Naive Bayes上都扮演重要的角色
d. 如果是binary variable (Bernoulli Naive Bayes)
Bernouli NB rule常用于NLP文档的在短文上面表现比较出色
如果 在原文档里面出现过一次,则 ,否则为0
由上公式可以看出,Bernouli NB rule会对没有出现的情形产生高惩罚项,然而Multinomial NB rule则是选择忽视
对于Exact Bayesian和Naive Bayesian的区别,用以下的例子比较容易说明:
b. Naive Bayesian
计算先验 :P(Cat) = 4/8 = 0.5 # 记录里面有4条分类为猫,总共8条记录
计算每个predictor的conditional probability
P(Light|Cat) = 3/4 = 0.75 # 4个cat的记录里面有3个是light
P(Fine|Cat) = 3/4 = 0.75
P(Brown|Cat) = 2/4 = 0.5
最大后验 :
P(Cat│Light, Fine, Brown) ∝ 0.75 x 0.75 x 0.5 x 0.5 = 0.14
同理可得
P(Dog│Light, Fine, Brown) ∝ 0.25 x 0.25 x 0.5 x 0.5 = 0.015
因此分类为猫
a. 数据量上,假设是d个binary variable,则Exact Bayesian需要至少 个数据,而Naive Bayesian只需要 个数据(仅仅随predictor的数量线性增长)
b. Naive Bayesian比Exact Bayesian简单而且速度更快
c. Naive Bayesian robust to noise data,因此其overfitting的概率比Exact Bayesian小
d. Naive Bayesian的结果的可靠性需要大量的数据来支撑
e. Naive Bayesian只保留了propensity(属于该class的概率)的顺序,但不能求出其具体的值
f. 两个Bayesian算法在处理categorical variable上都是直接而且高效的
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)