贝叶斯
1.贝叶斯决策论
很多朋友都应该听说过贝叶斯决策论,甚至知道其相关公式,但是对于正确理解贝叶斯决策论可能还有一些小问题,今天我们就来说一说这些问题。
1.1.先验概率
以抛硬币为例,假如有人告诉我们所抛硬币正面朝上的概率p1=0.7,反面朝上的概率p2=0.3。在这种情况下,我们会倾向预测结果是正面,因为0.7>0.3,此时错误率就是1-0.7=0.3,也就是反面朝上的概率。
对于这种在观测前我们就知道的概率p1和p2就是先验概率(指的是在观测前我们就已知的结果概率分布 p(y))。此时我们不需要考虑其他因素,例如硬币的大小、质量等等。
1.2.后验概率
但在实际情况中,往往有很多因素会对我们的预测结果造成不同程度的影响,而并不是像前面一样不考虑其他因素的影响,所以就有了当……因素时,硬币……的概率是多少,当硬币正面朝上时用数学表达式就是p(y=1|x),当硬币反面朝上时用数学表达式就是p(y=0|x)。这里的x指的是影响预测结果的因素。
ps:这里把正面朝上记为1,反面朝上记为0
这里p(y=1|x)、p(y=0|x)就是我们所说的后验概率,指的是在观测到x后我们对结果y的估计。和 p(y=1) 不同,它不是计算y=1的概率,而是计算仅当x被观测到时y=1的概率
说了这么多那么先验概率和后验概率间有怎样的联系呢?
简单来看,后验概率可以被看做是对先验概率的一种“更加细致的刻画和更新“,因为此时我们观测到了x,有了额外的信息。
因此后验概率比先验概率更有意义,因为我们引入了额外信息,所以预测结果会更加准确。而大部分机器学习模型尝试得到的,就是后验概率。
1.3.引入贝叶斯公式求解后验概率
后验概率这种表达叫做条件概率(conditional probability),一般写作 p(A|B) ,即仅当B事件发生时A发生的的概率,假设p(A)和p(B)都大于0,则有:
于是我们前面的后验概率就有:
举个例子:
假设做了100次硬币实验,有大中小三种硬币(x)。其中30次结果是反面(y=0),在反面时小硬币出现6次。在70次正面向上的情况中(y=1)小硬币出现了7次。我们此时假设x指的是小硬币,观察公式1&2:
分母p(x)代表观测x为小硬币出现的概率,那么p(x)=(6+7)/100=0.13
分子上的p(x|y=0)代表当结果是反面时,小硬币的概率。有实验结果可知:p(x|y=0)=6/30=0.2。而分子上的p(y=0)=30/100=0.3
于是我们就可以因此计算当观测到小硬币时反面的后验概率:
p(y=0|x)=(0.2*0.3)/0.13=0.46
同理也可计算观测到小硬币时正面的后验概率:
p(y=1|x)=(0.1*0.7)/0.13=0.54
贝叶斯决策的预测值是选取后验概率最大的结果。在二分类问题中,也就是对比p(y=0|x) 和p(y=1|x)的结果。因为0.54>0.46,因此我们认为观测到小硬币时的结果是正面的概率更大。
1.4.贝叶斯决策论的不足
贝叶斯决策中假设比较强,实际操作起来并不容易:
很喜欢原作者的这一段话:
抛开统计学习不谈,贝叶斯思想是对生活也很有指导意义,毕竟我们总是不断利用先验(过往的经验)和观测到现象(x)做出决策(试图得到后验概率)。那为什么懂了那么多道理(规则),却依然过不好这一生呢(误差太大)?根本原因在于别人的先验和我们的可能差别太大了,最终导致了过高的方差以至于过拟合(笑)。
参考文章: 如何简单理解贝叶斯决策理论(Bayes Decision Theory)?
2.朴素贝叶斯分类器
前面我们说过了如果用单纯的贝叶斯公式去计算后验概率,可能会碰到很多问题,而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。对于一些问题,朴素贝叶斯比直接使用贝叶斯公式更适用。
如何理解朴素贝叶斯算法的朴素一词
下面给出一个例子:
现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?
由贝叶斯公式得:
我们需要求p(嫁|(不帅、性格不好、身高矮、不上进),这是我们不知道的,但是通过贝叶斯公式可以转化为好求的三个量,p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)
但是有这样一个等式:
p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁),那么我就要分别统计后面几个概率,也就得到了左边的概率!
为什么这个等式成立呢?学过概率论可能知道,这个等式成立的条件需要特征间相互独立。
为什么要相互独立呢
1.我们这么想,假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,这么说,我们这个例子有4个特征,其中帅包括{帅,不帅},性格包括{不好,好,爆好},身高包括{高,矮,中},上进包括{不上进,上进},那么四个特征的联合概率分布总共是4维空间,总个数为233*2=36个。
24个,计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因。
2.假如我们没有假设特征之间相互独立,那么我们统计的时候,就需要在整个特征空间中去找,比如统计p(不帅、性格不好、身高矮、不上进|嫁),
我们就需要在嫁的条件下,去找四种特征全满足分别是不帅,性格不好,身高矮,不上进的人的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况。 这样是不合适的。
根据上面俩个原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。
解释了这些原因以后,我们就可以解决例题了。
由图知:
p(嫁) = 6/12(总样本数) = 1/2
p(不帅|嫁) = 3/6 = 1/2
p(性格不好|嫁)= 1/6
p(矮|嫁) = 1/6
p(不上进|嫁) = 1/6
p(不帅) = 4/12 = 1/3
p(性格不好) = 4/12 = 1/3
p(身高矮) = 7/12
p(不上进) = 4/12 = 1/3
代入公式:
同理得:
显然,(1/61/211/2)>(1/21/61/61/6),所以最终答案就是不嫁
参考文章: 带你理解朴素贝叶斯分类算法.
原文大佬讲得非常详细,大家可以去看看
3.半朴素贝叶斯分类器
半朴素贝叶斯分类器顾名思义是指适当考虑一部分属性间的相互依赖关系,不同于朴素贝叶斯分类器各特征完全相互独立,也不直接套用公式不考虑任何独立性。
其中最常用的策略:假定每个属性仅依赖于其他最多一个属性,称其依赖的这个属性为其超父属性,这种关系称为:独依赖估计(ODE)。
因此,对某个样本x 的预测朴素贝叶斯公式就由如下:
修正为如下的半朴素贝叶斯分类器公式:
这里pai 为属性xi所依赖的属性
采用拉普拉斯修正后的先验概率P©的计算公式:
基于类c和类外的依赖属性pai的条件概率计算公式如下:
我们还是给出一个例子来理解半朴素贝叶斯分类器
则先验概率 P(c),
P(c = 好果)= (4+1) / (10+2) = 5/12
P(c = 一般) = (6+1) / (10+2) = 7/12
带有依赖属性的类条件概率:
P(大小=大 | c=好果,形状=圆形) = (2+1)/(3+2) = 3/5
P(颜色=青色 | c=好果) = (0+1)/(4+2) = 1/6
P(形状=圆形 | c=好果,大小=大) = (2+1) / (3+2) = 3/5
P(大小=大 | c=一般,形状=圆形) = (1+1) /( 2+2) = 2/4
P(颜色=青色 | c=一般) = (5+1)/(6+2) = 6/8
P(形状=圆形 | c=一般,大小=大) = (1+1)/(3+2) = 2/5
因此:
P(c=好果) * P(大小=大 | c=好果,形状=圆形) * P(颜色=青色 | c=好果) * P(形状=圆形 | c=好果,大小=大)
= 5/12 * 3/5 * 1/6 * 3/5
= 0.025
P(c=一般) * P(大小=大 | c=一般,形状=圆形) * P(颜色=红色 | c=一般) * P(形状=圆形 | c=一般,大小=大)
= 7/12 * 2/4 * 6/8 * 2/5
= 0.0875
因此,测试集上要预测的这个样本和朴素贝叶斯分类器要预测的结果是相同的,都为一般的果子。
这种依赖属性选取算法称为超父ODE算法:SPODE。显然,这个算法是每个属性值只与其他唯一 一个有依赖关系。基于它之上,又提出另一种基于集成学习机制,更为强大的独依赖分类器,AODE。
这个算法思路很简单,就是在SPODE算法的基础上在外面包一个循环吧,说的好听点就是尝试将每个属性作为超父属性来构建SPODE。
公式:
可能大家对上面的式子后加上一个数字有疑问,这里实际涉及到了拉普拉斯平滑,具体案例可以参考下面这位大佬的文章。
参考文章: 理解朴素贝叶斯分类的拉普拉斯平滑.
4.贝叶斯网络
4.1.什么是贝叶斯网络
贝叶斯网络是一种模型,用来反应世界上一些事物的可能的情况的发生概率。
任何系统都能用贝叶斯网络来模
贝叶斯网由一个有向无环图(DAG)和条件概率表(CPT)组成
通过DAG和一组随机变量表示它们的条件依赖关系。
学生示例的贝叶斯网图
学生的成绩不仅取决于他的智商,同时也取决于课程的难度,课程的难度
因此这个问题包括五个随机变量,学生的智商(I)课程的难度(D),考试的成绩(G),学生的SAT成绩(S),推荐信的质量(L),G可以三个值,其余的都只能取两个值,因此,联合分布可以取值的总数为48
贝叶斯网可以用有向图来表示,节点表示随机变量,边表示一个变量对另一个变量的直接影响。
课程的难度和学生的智商以独立的方式确定,并且先于模型中的任何变量。学生的成绩同时取决于这两个变量。SAT只取决于学生的智商。
所以就有了上图所示的关系
ps:模型中的每个变量都直接依赖于其在网络中的父节点。
模型中每个变量X都关联着一个条件概率分布,在已知其父节点的每种可能联合赋值的条件下,用来具体指明X的值的一个分布。对没有父节点的节点,条件概率分布以空变量集为条件。这个网络结构和条件概率分布一起组成了贝叶斯网β
贝叶斯网络的构造和学习
训练贝叶斯网络,如果不训练,我们只能知道定性的网络,而不能定量。实际上这一步也就 是要完成条件概率(CPT表)的构造,如果每个随机变量的值都是可以直接观察的,那么这一步的训练就是直观的。但通常贝叶斯网络存在隐藏变量节点。
假设DAG已经构造了,我们要做的就是训练这个DAG网络,也就是说调整CPT的参数,最优化联合条件概率。
梯度下降法。
因此,把这种方法应用在训练贝叶斯网络上。
•1.初始化随机CPT表中的项目
•2.求Pw (D)在w初始值时的“梯度”。
•3.更新权重
•4.规格化权重
•5.继续迭代直至结束。
5.EM算法
在介绍EM算法前我们来看一个问题
两箱苹果,其中从A箱中取到一个好苹果的概率大于从B箱中取得,如果有一堆苹果来自于A箱和B箱,但是不知道某个苹果来自于A箱还是B箱,进行了5组实验,每组抽取10个苹果,每组抽到的好苹果和一般苹果都记录到纸上,通过这些观测数据,能得出从A或B箱中取到一个好苹果的概率吗?
这个预测,无形中增加了一个隐变量:苹果出处这属性吧(取值:A箱或B箱)。在这种情况下,介绍一种常用的估计类似参数隐变量的利器:Expectation-Maximization 算法(期望最大算法)。EM算法正如它的名字那样每轮迭代经过两步:E步和M步,迭代,直至收敛。
第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;
第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。
小例
举个例子,抛硬币,有两个硬币,但是两个硬币的材质不同导致其出现正反面的概率不一样,目前我们只有一组观测数据,要求出每一种硬币投掷时正面向上的概率。总共投了五轮,每轮投掷五次,现在先考虑一种简单的情况,假设我们知道这每一轮用的是哪一个硬币去投掷的:
那么我们拿着这样的一组数据,就可以很轻松的估计出A硬币和B硬币出现正面的概率,如下:
PA = (3+1+2)/ 15 = 0.4
PB= (2+3)/10 = 0.5
假如我们不知道用的哪一种硬币,也就是说硬币类型是一个隐变量,那怎么办呢?
那么现在可以想一想,假设我们把每一次硬币的种类设为z,则这五次实验生成了一个5维的向量(z1,z2,z3,z4,z5),现在问题来了,如果我们要根据观测结果去求出PA,PB,那么首先需要知道z,但是如果用最大似然估计去估计z,又要先求出PA,PB。这就产生了一个循环。那么这个时候EM算法的作用就体现出来了,EM算法的基本思想是:先初始化一个PA,PB,然后我们拿着这个初始化的PA,PB用最大似然概率估计出z,接下来有了z之后就用z去计算出在当前z的情况下的PA,PB是多少,然后不断地重复这两个步骤直到收敛。
有了这个思想之后现在用这个思想来做一下这个例子,假设初始状态下PA=0.2, PB=0.7,然后我们根据这个概率去估计出z:
因为这里给的PA=0.2,即是说A类型硬币正面朝上的概率是0.2,所以对应的反面朝上的概率就是0.8,拿第一组为例,就有0.20.20.20.80.8=0.00512,同理可求得为硬币B的概率就是0.03087
因为0.03087>0.00512,故第一组预测的硬币类型为硬币B
故按照最大似然估计,z=(B,A,A,B,A),有了z之后我们反过来重新估计一下PA,PB:
PA = (2+1+2)/15 = 0.33
PB =(3+3)/10 = 0.6
可以看到PA,PB的值已经更新了,假设PA,PB的真实值0.4和0.5,那么你在不断地重复这两步你就会发现PA,PB在不断地靠近这两个真实值。
博主真心觉得这个例子对于理解EM算法非常有用,具体公式大家也可以去参考给出这个例子的大佬的博客。
参考文章: 【机器学习基础】EM算法