西瓜书学习—贝叶斯分类器(上)

Posted 探索中的机械人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了西瓜书学习—贝叶斯分类器(上)相关的知识,希望对你有一定的参考价值。

引言

监督学习的任务就是学习一个模型,应用模型对给定的输入预测相应的输出。这个模型的一般形式为决策函数(分类函数):Y=f(x)。或者条件概率分布:P(c|x)。

监督学习方法又可以分为生成方法和判别方法。其各自生成的模型分别叫做生成模型和判别模型。

我们先给出条件概率公式如下:

他们两个之间的区别在于:生成方法是先要求出联合分布P(x,c),然后求出条件概率分布作为模型。而判别方法通过数据直接学习出条件概率分布P(c|x)或者是决策函数f(x)。

典型的生成模型有:贝叶斯分类模型和隐马尔科夫模型。

典型的判别模型有:k临近,感知机,决策树,logistic回归,最大熵,支持向量机,提升方法和条件随机场等。

一、贝叶斯分类的原理

通过概率的眼光看统计学习,这个是我学习贝叶斯分类最大的感受。贝叶斯决策论是基于概率框架的学习模型。是在数据集合中,相关属性概率已知的情况下,通过贝叶斯定理来得到某种属性出现的概率,从中选中概率最高的标记。该标记即为分类结果标记。

李航博士是先通过讲述朴素贝叶斯再探究其原理,而周志华教授是先介绍原理,然后再具体讲到朴素贝叶斯的例子。无论怎么样,但殊途同归。还是建议各位读者,两本书结合起来学习,效率会好一些。这里,我们还是采用周教授的途径,毕竟是西瓜书学习嘛。    

对于贝叶斯分类算法,我们的核心目标可以归结为寻找一个分类函数h(x),使总体风险最小。这里的风险指的是“期望损失”   。总体风险如下:

西瓜书学习(十)—贝叶斯分类器(上)

这里的R(h(x)|x)指的是”条件风险”,即h(x)在样本x的条件下,出现h(x)的期望损失。举例:假设有N种可能的类别标记,即y={c1,c2,.....,cN},λij是将cj误判为ci所产生的损失。基于后验概率P(ci|x)可获得将样本x分类为ci所产生的期望损失,则如下:

西瓜书学习(十)—贝叶斯分类器(上)

我们在式(7.2)中,可以看到ci已经变成了h(x),因为我们的判定结果c,无论对错都是由分类函数h(x)输出的。很显然,如果我们想让总体风险R(h)最小化,只需要将“条件风险”—R(h(x)|x)最小化就可以了。也就是说,我们的优化目标,之前是:

西瓜书学习(十)—贝叶斯分类器(上)

那么,现在则变为了:

西瓜书学习(十)—贝叶斯分类器(上)

这时的分类函数h*(x),我们把它叫做贝叶斯最优分类器,与之对应的总体风险叫做贝叶斯风险。

这时,如果我们取0-1损失函数:

西瓜书学习(十)—贝叶斯分类器(上)

有:

西瓜书学习(十)—贝叶斯分类器(上)

因为:

西瓜书学习(十)—贝叶斯分类器(上)

再将式7.3取对偶,得到最大值如下:

西瓜书学习(十)—贝叶斯分类器(上)

到这里为止就解释了为什么可以通过最大后验概率来得到分类结果。

好了,我们明白了要想得到贝叶斯分类模型,首先求联合概率分布,然后再求证据因子P(x)。然后通过公式就可以求出条件概率分布了。但是,联合概率分布怎么求呢?根据贝叶斯定理,我们有:

西瓜书学习(十)—贝叶斯分类器(上)

这里的P(c)是类“先验概率”,具体指就是:某种标记的样本子集占样本总数的比率。P(x|c)是样本x相对于类标记c的类条件概率(又叫”似然“),具体指就是:样本集合中,某一个属性的样本所占某种标记样本总数的比率。P(x)是证据因子,对于给定的x,证据因子与类标记无关。所以,我们的主要关注点就是P(c)和P(x|c)。

我们可以看到算法中的核心就是贝叶斯定理,这就是为什么这叫贝叶斯分类方法而不是条件概率分类方法的原因。

二、极大似然估计和贝叶斯估计

1、引言

我们上面讲了,我们关注点在于P(c)和P(x|c)。P(c)是比较容易得到的,因为根据大数定律,当训练集包含充足的独立同分布样本时,其频率可以近似估计为概率。但是,我们要时刻注意频率和概率是不同的。比如”未被观测到“和”概率为0“是完全不同的概念,前者是频率为0,后者是概率为0。当我们要估计P(x|c)时,麻烦就来了。因为它涉及关于x所有属性的联合概率,假如它的d个属性都是二值的,那么样本空间中就会有2d种可能。但是现实应用中,我们的数据集很难包含所有的情况。这就意味着,有的情况是不会出现的。我们不能简单粗暴的将这些没有出现的事件的概率估计为0。这就是”未被观测到“和”概率为0“的矛盾。那么,我们如何去估计类概率呢?

2、极大似然估计

一种常见方法就是:先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数(比如θc)进行估计这样我们就引出了极大似然估计方法,用于估计c类的类条件概率P(x|c)的参数向量θc,进而来得到类条件概率。

大致方法如下:我们假设类条件概率P(x|c)有某种确定的形式(比如正态分布,0-1分布等等)且被参数向量θc唯一确定,那么我们的任务就是根据训练集D估计参数θc。于是P(x|c)就变为了P(x|θc)。

我们先回忆一下数理统计中的极大似然估计法:

其基本思想是(最大似然原理):对未知参数θ进行估计时,在该参数可能的取值范围内选取,使”样本获得观测值x1,x2,x3.....“的概率最大的参数值θ*作为θ的估计。

a.当总体样本(训练集)是连续型随机变量的时候

其概率密度为f(x;θ),则样本的似然函数为:

西瓜书学习(十)—贝叶斯分类器(上)

若存在θ*=θ*(x1,x2,...,xn),使以下成立:

西瓜书学习(十)—贝叶斯分类器(上)

则称θ*(x1,x2,...,xn)θ的极大似然估计。我们通常用极大似然估计样本为连续变量的参数时,一般先写出似然函数,似然函数为概率密度函数连乘积,为了防止下溢,然后对似然函数取对数,最后取似然函数的极值点。一般该极值点为极大似然估计参数点。

这里举个例子,如下:


西瓜书学习(十)—贝叶斯分类器(上)

解答如下:

西瓜书学习(十)—贝叶斯分类器(上)

再例如,我们这里假设概率密度函数为p(x|c)~N(μc,σc),即服从正态分布,则两个参数的极大似然估计为:

西瓜书学习(十)—贝叶斯分类器(上)

b.当总体样本为离散变量时

其概率分布为P(X=x)=p(x;θ),θ为待估计参数,X1,X2,...,Xn为总体样本的一个样本,则X1,X2,...,Xn取x1,x2,....,xn的概率为:

显然这个概率值是θ的函数,于是有似然函数:

西瓜书学习(十)—贝叶斯分类器(上)

若存在θ*=θ*(x1,x2,...,xn),使以下成立:

西瓜书学习(十)—贝叶斯分类器(上)

则称θ*(x1,x2,...,xn)θ的极大似然估计。我们通常用极大似然估计样本为离散变量的参数时,一般先写出似然函数,似然函数是每个属性概率分布的连乘积,再对似然函数取对数,最后求出极值。我们可以看到离散和连续的唯一区别在于其似然函数不同。

这里千万要注意的一点是:我们讲的关于所有极大似然估计的方法都是基于似然函数是正确的,具体而言,在机器学习模型建立时,其所假定样本的概率分布或者概率密度正确的,显然这是很难保证的。这就给我们模型建立带来了隐患。

补充一个概念:下溢是<计算机组成原理>中的一个概念,是运算结果的绝对值小于机器所能表示的绝对值。因为计算机所能表示的位数是有限的,比如c语言中的float类型数据只能32bit,而乘法运算是位数级别的运算,很容易超出计算机取值范围,所以我们这里取对数。

3、贝叶斯估计

用极大似然估计可能会出现概率值为0的情况,这样会影响我们后验概率的计算。因此,我们引入贝叶斯估计,式(7.16)和式(7.17)修正为:

西瓜书学习(十)—贝叶斯分类器(上)

当λ取1的时候,我们称之为拉普拉斯平滑。显然拉普拉斯平滑修正避免了因训练集样本不充分而导致概率估值为零的问题, 并且在训练集变大时,修正过程所引入的先验(prior) 的影响也会逐渐变得可忽略,使得估值渐趋向于实际概率值。

三、朴素贝叶斯方法

我们在第一部分最后了解到,类条件概率难以得到的原因在于:我们得到的类条件概率是关于所有属性的,也就是说每个属性之间是关联的。朴素贝叶斯就”朴素“的认为每个属性都是独立的。各自独立的对分类结果发生影响。

那么,根据属性条件独立性假设,我们有:

西瓜书学习(十)—贝叶斯分类器(上)

于是,式子(7.8)可以改写为:

西瓜书学习(十)—贝叶斯分类器(上)

因为,我们的训练集合是不变的,所以P(x)是一样的。因此,式子(7.6)可以改写为:

西瓜书学习(十)—贝叶斯分类器(上)

这就是朴素贝叶斯分类器表达式。

根据前面所学,我们可以总结出朴素贝叶斯分类器的学习方法:首先计算类先验概率P(c) ,再计算各个属性的类条件概率P(xi|c),最后将类先验概率和类条件概率求积,求取最大的后验概率。

令Dc表示训练集D中第c类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率:

西瓜书学习(十)—贝叶斯分类器(上)

对离散属性而言,令Dc,xi, 表示Dc 中在第i个属性上取值为xi 的样本组成的集合,则条件概率P(xiIc) 可估计为:

西瓜书学习(十)—贝叶斯分类器(上)

对连续属性可考虑概率密度函数,假定P(xiIc)~N(μc,i ,σc,i),其中μ和σc,i分别是第c类样本在第i个属性上取值的均值和方差,则有:

西瓜书学习(十)—贝叶斯分类器(上)

举例:下面给出西瓜集3.0

西瓜书学习(十)—贝叶斯分类器(上)

用该数据集训练一个朴素贝叶斯分类器,并对以下样本进行分类。

西瓜书学习(十)—贝叶斯分类器(上)

解:

1)首先估计类先验概率P(c),有:

西瓜书学习(十)—贝叶斯分类器(上)

2)再计算各个类条件概率P(xi|c),有:

西瓜书学习(十)—贝叶斯分类器(上)

3)再根据样本实例计算后验概率:

4)比较

很容易看出,该样本是好瓜的概率远大于是坏瓜的概率。

到此朴素贝叶斯分类方法结束。

四、总结

到此为止,我们就了解了贝叶斯分类方法的原理和所存在的困难,并且了解了为了解决困难而采取的折衷方法。也了解了,由于折衷方法而存在的隐患。同时,也通过讲解例题了解了朴素贝叶斯分类方法。我们可以看出朴素贝叶斯确实是一种很“朴素”的方法,让编者对此种方法产生了极大的怀疑。很明显,现实问题中,各个属性几乎不可能保证是完全独立的。那么有更好的方法解决这个问题吗?希望在下篇的半朴素贝叶斯和贝叶斯网可以解决我的疑惑。谢谢大家!!

参考文献

  1. 李航. 统计学习方法[M]. 北京:清华大学出版社, 2012. 47-52

  2. 周志华. 机器学习[M]. 北京:清华大学出版社, 2016. 147-150

  3. 张宇.概率论与数理统计9讲[M]. 北京:北京理工大学出版社, 2017. 178-191

以上是关于西瓜书学习—贝叶斯分类器(上)的主要内容,如果未能解决你的问题,请参考以下文章

太赞了!机器学习基础核心算法:贝叶斯分类!(附西瓜书案例及代码实现)

机器学习算法--贝叶斯分类器

机器学习——朴素贝叶斯分类器

《机器学习实战》基于朴素贝叶斯分类算法构建文本分类器的Python实现

文本分类-贝叶斯分类器

贝叶斯分类器(3)朴素贝叶斯分类器