贝叶斯决策论
背景
对于一个数据进行分类,那么数据的属性信息称为x,如果知道后验概率的情况下即能得到确定x的情况下分类为ci的概率。这时我们还需要一个损失的权值,λij称为i错判为j的损失(λii为0,一般λij都相等=1但具体情况可以具体分配),由前边得到的后验概率来乘上这个λ的参数这就叫做条件风险(conditional risk)。
方法
那么我们可以设计一个映射关系h,从x->c可以将结果带入条件风险,求整体风险最小。
但是其中后验概率很难在现实任务中取到,所以引入机器学习的目标的就是去训练这样一个后验概率(从大量的样本数据中)当然也有两种方式:
- 一种是判别式模型(discriminative model)就是给定x判定为c的类别的概率
p(c|x)
(如:概率拟合模型) - 另一种是生成式模型(generative model)先可以通过对x,c的联合概率分布
p(c,x)
进行建模,然后由此来得到p(c|x)
。
可以看到前边判别类别的决策树,bp,svm都是判别式模型。(从这里看出我们的终极目标还是去计算p(c|x)
,符合现实的要求。)
生成式模型
背景:
根据贝叶斯定理,要求联合概率分布,可以通过p(c )*p(x|c)/p(x)
来得到,前者是类先验概率,后者是类条件概率,或者称似然。
p(x)
是用于归一化的证据因子,对于给定的样本x,证据因子和类标记无关。(证据因子的存在知识为了保证各类别的后验概率的总和为1,所以在固定x的情况下这一项相当于常数,在比较时不做考虑)
方法:
但如果x样本的属性很多或者是一个连续值,那么样本个数是不可能完全模拟到所有的取值的,更不用说还要去计算他们出现的联合概率了,也就是说得到的p(x|c)
会有很多零值。
那么无法通过样本来进行模拟分布,可以用mle(极大似然估计)的方法,通过设定一个通用的分布函数(如:正态分布,不一定是正态,所以这个假设存在一定误差,或者说我们在指定假设分布形式时需要参考一定的先验知识(也就是我们训练数据的风格))然后通过训练分布中的参数来让极大似然最大。
1.朴素贝叶斯分类器:(naïve bayes classification)
条件:
将所有的属性假设为相互独立也就是每个属性独立地对分类结果发生影响,这个想法很天真,很梦幻。
当然有了这个假设就很好计算了,计算联合分布的过程:通过训练集D来得到类先验概率然后再得到类条件概率。对于离散的取值数据量够可以直接用取值在训练集D中的概率直接估计,对于离散取值过多,或者是连续取值的情况可以用最大似然来做估计。
然后通过计算和比较p(c=1,x)
和p(c=2,x)
的大小,来或者最后输出c是判为1还是2。
因为离散取值会因为在数据集中找不到而变成概率为0,这样会影响所有的判断,这样就可以通过一个平滑处理(如:拉普拉斯修正)来将其修正为(Dci+1)/(Dc+Nx)
,Dci为类别为c,x属性取值为i的个数,Nx为属性x的可能的取值数。同理对于类先验也要进行平滑处理。(这样的平滑操作算是一种先验,而且随着样本集增大影响逐渐减少的趋向于真实值。)
2.半朴素贝叶斯分类器(semi-naïve bayes classification)
条件:
既然所有属性都假设为相互独立过于天真,那么我们假设一种独依赖,也就是假设每一个属性在类别之外最多仅依赖于一个其他属性。我们称这种假设为semi-naïve 的假设。
那么这样的独依赖也会有一些设计的方式:
1.都依赖于一个相同的父属性(SPODE);
2.随机依赖于除自己以外的其他的属性,但要让生成的树达到最大的权值(权值由两个属性之间的条件互信息来决定),构成最大带权生成树(TAN)。
但是因为有无环的性质,所以无论哪一种最后一定会有一个属性是没有父依赖的。
3.非朴素贝叶斯--贝叶斯网络:(放弃之前“天真”的假设)
条件:
前边半朴素通过图连接来刻画属性之间的依赖关系,那么同样贝叶斯网络也在用这种有向无环图来刻画属性之间的依赖关系,并用条件概率表(CPT,conditional probability table)作为边的参数也就是(整个贝叶斯网络的参数)主要是子属性和父属性相对应的条件概率。而一个属性他的父属性个数没有任何限制。
问题:
但这样不如上一个半朴素贝叶斯结构基本固定直接遍历搜索空间也不会很大,可以用最大边的方式构建贝叶斯网络,也就是说这样的网络结构很难去构建和生成,主要是用似然损失+构造损失(参数个数*参数的精度)作为损失函数来进行优化,但是这直接求解是一个NP难的问题,这样就有两种方式第一种:贪心法,通过初始化一个网络结构,然后每次调整一个边(增加,删除或调整方向)使得loss变化最大,直到最后评分函数无法在降低。(当然这样的一个初始化网络结构就会变得很重要)第二种:通过给网络结构添加约束,比如将网络结构限定为树形结构等。
方法:
除了之前我们用作的分类问题,还可以做扩展到一个推断的问题,比如蒙着眼摸出西瓜的根蒂,形状,大小,能推断出它的色泽到底是青绿还是黄绿,是好瓜还坏,甜度如何等等。而且还可以直接精确计算出后验概率,但是当网络结点很多,连接又很稠密,而且查询的属性又含有依赖关系的时候,在短时间内计算出准确的结果会很难。所以我们通过借助近似的方式推断结果。(我们只想知道哪种可能性大得多,具体大多少不是我们要求的结论)
这种近似的做法就是吉布斯采样方法,固定我们获得的证据属性E,然后通过初始化一个q0,接着对于q0中的某一个属性根据其他的属性不变,根据计算得到的条件概率进行采样。这是一个马尔科夫链(marcov chain),性质:在经过t次的采样之后,马尔科夫会收敛于一个平稳分布,而这个平稳分布正是我们要求的那个p(Q|E=e)
的分布。这样我们就可以通过吉布斯采样来得到一个模拟化的分布得到q最有可能的取值。(或者给定q,p(q|E=e)
估计的概率是多少)
隐变量介绍以及解决方法:
上诉还有一个问题那就是属性缺失的情况下怎么办,我们的模型网络还能创建得出来吗?也就是说存在隐变量(latent variable)该怎样解决这样的问题?
EM(Expectation-Maximization)算法是常用的估计参数隐变量的方法。
主要的思想就是:隐变量和模型参数是我们要求的,而二者之间存在相互依赖的关系,也就是不知道隐变量无法求出模型参数,不知道模型参数也无法反推出隐变量。那如果是一种优化迭代算法的话,初始化隐变量,然后训练得到最优的参数,然后通过固定最优的参数再反过来训练到最优的隐变量。直到最后收敛到一个局部最优解。(所以这种算法求解的结果是和 初始值关系比较大的局部最优解,如果能找到一个接近全局最优解的初始值,或者在接受解的概率上做调整不至于过快收敛,可能可以得到一个更好的解。)
参考文献:西瓜书-贝叶斯决策论