“种一棵树最好的时间是十年前,其次是现在”

1 频率域学派 VS 贝叶斯学派

1.1 常见概率

* 先验概率
根据经验获取的概率,是对事件发生情况的经验性判断。表示成p(θ)p(θ)的形式。
* 似然概率
一般表示成p(x|θ)p(x|θ)的形式,是指在某个参数θθ下,得到观测样本x的概率有多大。
*
后验概率
执果寻因,事件已经发生,其发生是由各因素引起的可能性为多大。
一般表示成p(θ|x)p(θ|x)的形式,表示在已知观测样本的情况下,由参数θθ导致得到该观测样本的概率为多大。

*
贝叶斯公式
P(A|B)=P(B|A)P(A)P(B)P(A|B)=P(B|A)P(A)P(B)
假如A是条件,B是结果。贝叶斯公式告知我们如何交换条件概率中的条件与结果。

举例:参考自https://www.cnblogs.com/yemanxiaozu/p/7680761.html
<https://www.cnblogs.com/yemanxiaozu/p/7680761.html>


1.2 问题引出

在机器学习的分类任务中,往往需要判断观测到样本x的类别c,即计算似然概率P(x|c)P(x|c)。假定P(x|c)P(x|c)具有确定的形式且被参数θθ
唯一确定,那么我们的任务就是根据训练数据集D去估计参数θθ,为明确起见,我们将P(x|c)P(x|c)表示成P(x|θ)P(x|θ)。

实际上,概率模型的训练过程就是参数估计的过程。对于参数θcθc的估计,统计学界的两个学派提供了不同的解决方案,这两个学派就是下面要介绍的频率学派和贝叶斯学派。

1.3 频率学派 and MLE

频率学派的观点认为参数θθ是一个确定的未知数,就是说参数本身是确定的,只是暂时未知而已。

频率域学派求解参数的典型方法是最大似然估计(Maxmium likelihood estimation,MLE)。

MLE的思想为:
对于数据集D,一般假设其似然函数具有某种确定的形式且可以用参数θθ进行表示,则对D中的每一个样本xixi,都对应一个似然函数P(xi|θ)P(xi|θ)
,似然函数的含义是对于当前观测到的样本,似乎假定参数为θθ是合理的。那么对于整个样本D而言,其似然函数为L(θ)=Πmi=1P(xi|θ)L(θ)=Πi=1mP
(xi|θ)。

为什么上面是连乘的形式?因为对每一个样本xixi,根据似然概率可以得到最适合该样本自身的参数θθ
,而对于数据集D,其中的各样本是独立同分布的,那么我们现在想找到对于整个数据集D最合适的参数θθ
,就需要对各样本的似然函数进行连乘,得到一个联合概率估计,当这个值最大时,就表示基于全体训练样本得到的参数θθ与其真实值之间的偏差最小。


往往在实际运算的时候,由于各样本的似然概率值都小于1,当样本数量很多时,无限的连乘很容易造成参数下溢,而对数函数不会改变取极值的位置且由连乘变成连加之后易于计算,因此往往进行取对数处理。即定义似然函数为:
logL(θ)=∑mi=1logP(x|θ)logL(θ)=∑i=1mlog⁡P(x|θ).

因此,MLE求解的极值即为θ^ML=argmaxlogL(θ)θ^ML=argmaxlog⁡L(θ).

1.4 贝叶斯学派 and MAP

贝叶斯学派的观点不同于频率学派,其认为参数θθ同样为随机变量,也有其自己的分布P(θ)P(θ)。

一般而言,机器学习的实践者会选择一个相当宽泛的先验分布P(θ)P(θ),以表示参数θθ的高度不确定性。假设有一组样本D={x1,x2,⋯,xm}D={x1,x
2,⋯,xm},根据贝叶斯准则,我们可以得到参数θθ的后验概率为:
P(θ|D)=P(D|θ)P(θ)P(D)P(θ|D)=P(D|θ)P(θ)P(D).

在贝叶斯估计常用情况下,先验分布P(θ)P(θ)
起始通常是相对均匀的分布或高熵的高斯分布,观测样本通常会使得后验概率的熵值下降,从而集中参数于几个可能性最高的值上。这句话的含义是,贝叶斯估计并不是得到一个确定的参数,而是得到一个参数的分布,参数在分布的每一点处都是有可能的,只不过不同位置的概率大小不同而已。

贝叶斯估计和最大似然估计的区别是:

* 最大似然估计是参数的点估计,得到了参数的具体值。而贝叶斯估计是参数的全估计。那么根据贝叶斯估计和训练集D得到参数θθ
的估计后,在对新样本进行预测时,就需要P(xm+1|D)=∫P(xm+1|θ)P(θ|D)dθP(xm+1|D)=∫P(xm+1|θ)P(θ|D)dθ
,即根据训练集D得到的θθ的分布的任一值都对新样本的类别判断发生作用;
* 最大似然方法关心的是参数的似然概率,贝叶斯估计关心的是参数的后验概率;
* 贝叶斯估计中引入了参数的先验概率P(θ)P(θ),如果估计的先验概率符合真实情况,则有益,如果偏差较大,则起到了负面的作用。成也萧何,败也萧何。
MAP:
最大后验概率,Maximum A Posteriori,MAP。

如上面贝叶斯估计所示,我们应当使用参数θθ
的全分布进行新样本的预测,但单个的点估计通常也是有必要的。这是因为涉及到贝叶斯全分布的预测往往计算量比较大,而使用点估计可以得到一个可行的近似解。

MAP就是贝叶斯估计的点估计版本。

MAP选择使得后验概率最大的参数点θθ。即:
θMAP=argmaxθP(θ|x)=argmaxθlogP(x|θ)+logP(θ)θMAP=argmaxθP(θ|x)=argmaxθlog⁡P(x|θ)
+log⁡P(θ)。
左式对应标准的对数似然项,右式对应参数的先验分布。也就是说MAP是在MLE的基础上加上了先验分布的对数形式。

相比于最MLE,MAP优势是利用了无法从训练数据中得到的先验信息。该信息有助于较小最大后验估计的方差,代价是增加了方差。

1.4 频率域学派 与 贝叶斯学派的区别

价值观不同:频率域学派认为参数固定未知,贝叶斯学派认为参数为随机变量;
求解对象不同:频率域学派求解似然概率,贝叶斯学派求解后验概率;
核心区别:要不要引入参数的先验信息。

2 贝叶斯决策论


贝叶斯决策论是基于概率的方法来进行决策的基本方法。对于分类任务而言,在所有概率值都已知的情况下,贝叶斯决策论考虑如何基于这些概率最小化误分类损失来获取各样本的最优分类结果。

以多分类任务为例,假设样本集共有N种可能分分类类别,即y={C1,C2,⋯,CN}y={C1,C2,⋯,CN},定义λijλij为将某真实类别为CjCj
的样本误分类为CiCi类造成的损失。基于后验概率P(Ci|x)P(Ci|x)可得将样本x误分类为类别CiCi所造成的期望损失,其在样本x上的条件风险。R(Ci|
x)=∑mi=1λijP(Ci|x)R(Ci|x)=∑i=1mλijP(Ci|x).

那么我们的目标是最小化这个期望损失,即找到一个最优的分类模型h(x)h(x),基于该模型的分类结果所造成的期望损失是最小的。因此我们的目标就是最小化R(h)=
Ex[R(h(x)|x)]R(h)=Ex[R(h(x)|x)],也就是说对每一个样本x,选择能够使条件风险最小的类别标记,即h∗(x)=argminc∈yR(c
|x)h∗(x)=argminc∈yR(c|x),此时h∗(x)h∗(x)称为贝叶斯最优分类器,与之对应的总体风险R(h∗)R(h∗)称为贝叶斯风险。1−R(h
∗)1−R(h∗)反映了通过机器学习所能达到的最好性能,即能够训练得到的模型精度上限。

对于分类任务,定义
λij={0,i=j1,i≠jλij={0,i=j1,i≠j
那么,假设共有N类,则R(c|x)=1∗(1−P(c|x))R(c|x)=1∗(1−P(c|x)),此时最优贝叶斯分类器为h∗(x)=argmaxc∈yP(
c|x)h∗(x)=argmaxc∈yP(c|x),即对每个样本x选择能够使得后验概率P(c|x)P(c|x)
最大的类别标记。这也是为什么贝叶斯学派关心后验概率的原因。

根据上面的分析,我们现在的目标已经变成了从有限的训练数据集中尽可能准确地估计出后验概率P(c|x)P(c|x)。针对P(c|x)P(c|x)
的估计,有两种常见的策略:

* 判别式模型,直接计算P(c|x)P(c|x),logistic regression,SVM,神经网络,LDA都是常见的该类模型;
*
生成式模型,计算联合概率P(x,c)P(x,c),再根据贝叶斯准则计算得到后验概率P(c|x)P(c|x),高斯判别分析、贝叶斯分类属于该类模型。

两者的核心区别也就是是否使用了参数θθ的先验分布信息。

对于贝叶斯分类模型,在贝叶斯准则中,分子是P(x|c)P(x|c)和P(c)P(c),分母是P(x)P(x)。P(c)P(c)
可以根据训练集中各类样本出现的次数计算其概率;由于贝叶斯分类器最终做出样本类别的判断是基于样本属于各类后验概率的相对大小而不是绝对大小,而P(x)P(x)
对于同一样本的不同类别之间是相同的,因此分母可以忽略不记。因此难点也就回到了如何去计算似然概率P(x|c)P(x|c)。


MLE是计算似然概率的一个典型方法,但是该方法基于所认为的似然函数与真实分布情况相近的假设,如果不满足该假设则会造成比较大的估计误差。因此这里可以用贝叶斯估计来完成分类问题。

3 朴素贝叶斯分类器

3.1 核心思想

根据上面的分析,我们已经知道现在拟通过贝叶斯估计来完成样本的分类任务,因此需要计算似然概率P(x|c)P(x|c)和P(c)P(c)。

对于P(x|c)P(x|c)来说,由于涉及到样本所有属性的联合概率,直接计算往往对样本量的需求很大。如假设样本包含d个二值属性,那么计算该联合概率需要2d2d
个训练样本,该值很容易超过可以获得的训练样本的数量。也就是说,很多样本取值在训练集中根本就没有出现过,直接使用频率来估计P(x|c)P(x|c)
显然不可行,因为“没有观测到”不等于“没有出现过”。

针对这个问题,提出了朴素贝叶斯分类器,所谓“朴素”就是指样本各维特征对分类结果的影响是相互独立的。基于这个假设,计算联合似然概率P(x|c)P(x|c)
所需的样本数就减小为了2*d,大大减小了所需的样本数量,也就避免了上一段提到的样本数量不足的问题。

基于“朴素”假设,朴素贝叶斯分类即为计算P(c|xi)=P(xi|c)P(c)P(x)P(c|xi)=P(xi|c)P(c)P(x),对一个样本而言,P(x)
P(x)保持不变,可以忽略;P(c)P(c)可以根据训练集中各类别样本出现的频率进行计算;核心点就在于根据训练集计算出P(xi|c)P(xi|c)
。也就是说朴素贝叶斯分类器的训练过程即为计算P(c)P(c)和各属性与类别之间的条件概率P(xi|c)P(xi|c),这里的xixi
表示样本的各属性。在对新样本进行分类时,根据新样本各属性的取值,计算P(c|x)=Πdi=1P(c|xi)P(c|x)=Πi=1dP(c|xi)
,最终分类样本x为具有最大后验概率的类别。

3.2 使用举例

3.2.1 周志华《机器学习》西瓜分类

训练集:


训练过程:计算概率
P(c)P(c):
P(c=是好瓜)=817P(c=是好瓜)=817
P(c=不是好瓜)=917P(c=不是好瓜)=917

P(xi|c)P(xi|c):

P(色泽|c)P(色泽|c):
P(色泽=青绿|c=是好瓜)=38P(色泽=青绿|c=是好瓜)=38
P(色泽=青绿|c=不是好瓜)=39P(色泽=青绿|c=不是好瓜)=39
P(色泽=乌黑|c=是好瓜)=48P(色泽=乌黑|c=是好瓜)=48
P(色泽=乌黑|c=不是好瓜)=29P(色泽=乌黑|c=不是好瓜)=29
P(色泽=浅白|c=是好瓜)=18P(色泽=浅白|c=是好瓜)=18
P(色泽=浅白|c=不是好瓜)=49P(色泽=浅白|c=不是好瓜)=49

P(根蒂|c)P(根蒂|c):
P(根蒂=蜷缩|c=是好瓜)=58P(根蒂=蜷缩|c=是好瓜)=58
P(根蒂=蜷缩|c=不是好瓜)=39P(根蒂=蜷缩|c=不是好瓜)=39
P(根蒂=稍蜷|c=是好瓜)=38P(根蒂=稍蜷|c=是好瓜)=38
P(根蒂=稍蜷|c=不是好瓜)=49P(根蒂=稍蜷|c=不是好瓜)=49
P(根蒂=硬挺|c=是好瓜)=08P(根蒂=硬挺|c=是好瓜)=08
P(根蒂=硬挺|c=不是好瓜)=29P(根蒂=硬挺|c=不是好瓜)=29

P(敲声|c)P(敲声|c):
P(敲声=浊响|c=是好瓜)=68P(敲声=浊响|c=是好瓜)=68
P(敲声=浊响|c=不是好瓜)=49P(敲声=浊响|c=不是好瓜)=49
P(敲声=沉闷|c=是好瓜)=28P(敲声=沉闷|c=是好瓜)=28
P(敲声=沉闷|c=不是好瓜)=39P(敲声=沉闷|c=不是好瓜)=39
P(敲声=清脆|c=是好瓜)=08P(敲声=清脆|c=是好瓜)=08
P(敲声=清脆|c=不是好瓜)=29P(敲声=清脆|c=不是好瓜)=29

P(纹理|c)P(纹理|c):
P(色泽=清晰|c=是好瓜)=78P(色泽=清晰|c=是好瓜)=78
P(色泽=清晰|c=不是好瓜)=29P(色泽=清晰|c=不是好瓜)=29
P(色泽=稍糊|c=是好瓜)=18P(色泽=稍糊|c=是好瓜)=18
P(色泽=稍糊|c=不是好瓜)=49P(色泽=稍糊|c=不是好瓜)=49
P(色泽=模糊|c=是好瓜)=18P(色泽=模糊|c=是好瓜)=18
P(色泽=模糊|c=不是好瓜)=39P(色泽=模糊|c=不是好瓜)=39

P(脐部|c)P(脐部|c):
P(脐部=凹陷|c=是好瓜)=58P(脐部=凹陷|c=是好瓜)=58
P(脐部=凹陷|c=不是好瓜)=29P(脐部=凹陷|c=不是好瓜)=29
P(脐部=稍凹|c=是好瓜)=38P(脐部=稍凹|c=是好瓜)=38
P(脐部=稍凹|c=不是好瓜)=39P(脐部=稍凹|c=不是好瓜)=39
P(脐部=平坦|c=是好瓜)=08P(脐部=平坦|c=是好瓜)=08
P(脐部=平坦|c=不是好瓜)=49P(脐部=平坦|c=不是好瓜)=49

P(触感|c)P(触感|c):
P(触感=硬滑|c=是好瓜)=68P(触感=硬滑|c=是好瓜)=68
P(触感=硬滑|c=不是好瓜)=69P(触感=硬滑|c=不是好瓜)=69
P(触感=软粘|c=是好瓜)=28P(触感=软粘|c=是好瓜)=28
P(触感=软粘|c=不是好瓜)=39P(触感=软粘|c=不是好瓜)=39

这个例子里有意思的是出现了连续属性,按照书本里的介绍,应该按照概率密度函数,假设其符合高斯分布,计算均值和方差。即认为P(xi|c)=12π√σc,iexp(
−(xi−uc,i)22σ2c,i)P(xi|c)=12πσc,iexp(−(xi−uc,i)22σc,i2).

对密度特征:
是好瓜的均值为0.574,方差为0.129;
不是好瓜的均值为0.496,方差为0.195;

对含糖率特征:
是好瓜的均值为0.279,方差为0.101;
不是好瓜的均值为0.154,方差为0.108;

这里把所有的概率值都提前计算出来,使用时进行查表,即所谓的“懒惰学习”方式。

新样本预测:
给定新样本:



其是好瓜的概率:
P(c=是好瓜|x)=38∗58∗68∗78∗58∗68∗1.959∗0.788P(c=是好瓜|x)=38∗58∗68∗78∗58∗68∗1.959∗
0.788 = 0.038
P(c=不是好瓜|x)=6.8∗10−5P(c=不是好瓜|x)=6.8∗10−5
两者比较大小,因此这个测试样本预测为好瓜。


使用朴素贝叶斯进行新样本预测时,由于在特征数很多时涉及到大量的较小数的连乘,结果很容易下溢出。解决办法是取对数,改连乘为连加。最后依然是比较测试样本属于各类别的后验概率的相对大小决定测试样本的预测类别。之所以使用对数函数是因为对数函数是单调递增函数,不改变函数原始的变化趋势,另外对数函数不改变原始函数极值点的位置。

3.2.2 拉普拉斯平滑


在上面的例子中,是有一个问题的,比如一个测试样本,其敲声=清脆,由于训练集中没有出现过敲声=清脆且类别=是好瓜的训练样本,所以对这样的测试样本进行预测时,其被分类为是好瓜的概率值一定为0。这样是不合理的,因为“没有观测到”不等于“没有出现过”。

解决方案也就是下面要介绍的拉普拉斯平滑。核心思想就是在计算每一个概率值时,都在分子上加1,分母是加该属性所有可能取值的类别数。如计算P(c)P(c)
时,分子上都加1,分母是加总的类别数,西瓜例子里这个值就是2;计算P(xi=敲声|c)P(xi=敲声|c)时,分子都加1,分母都加3;而计算P(xi=触感|c)
P(xi=触感|c)时,分子都加1,分母都加2。




拉普拉斯平滑实质上假设了属性值与类别的均匀分布,也是引入了一点先验信息,在训练集规模变大后,引入的均匀分布的先验对概率的影响逐步减小,估值逐渐趋向于实际概率值。这样做就避免了因训练集样本不充分造成的概率为0的问题。

3.2.3 CS229中介绍的文本分类

朴素贝叶斯分类器最经典的应用是用来进行文本分类任务。文本分类是指根据某给定文本中出现的单词判断该文本所属的类别,如是否为垃圾邮件、是否属于体育新闻等等。
根据不同的概率计算方式又分为词集模型(set-of-words model)和词袋模型(bag-of-words model)。

3.2.3.1 词集模型


词集模型认为有一个字典,字典中的每一个单词如果出现在了当前文本中,则置一个向量中该对应位置为1,否则为0。这样一份文本就可以表示成一个长度为字典单词个数的向量,向量元素非0即1。

词集模型属于多变量伯努利事件模型。

在朴素贝叶斯分类器训练的过程中,基于“朴素”假设,同样是计算P(c)和P(xi|c)P(c)和P(xi|c)。P(c)P(c)
还是根据训练集中各类样本出现的比例进行计算;P(xi|c=k)P(xi|c=k)
还是通过第k类文本中第i个单词出现的概率进行计算,也就是文本属于第k类且词典中第i个单词出现的数目除以第k类文本总的数目得到。CS229根据MLE给出了为什么这么计算的详细推导过程。

文本分类中同样会出现预测样本中包含从未在训练集中出现的单词的情况,此时直接计算P(xj|c)P(xj|c)为0.解决方案同样是使用拉普拉斯平滑,计算各P(xj
|c)P(xj|c)时分子加1,分母加上该单词j所有可能出现的情况,这里就是出现和不出现两种,所以分母加2;而计算P(c)P(c)
的时候,则是分子加1,分母加上文本所有可能的类别数。

3.2.3.2 词袋模型


词袋模型同样有一个字典,但是对每一个文本进行向量化表示的时候不是以单词是否出现为标准,而是以文本中包含的单词在字典中的编号为标准。这样对每一个文本进行向量化表示之后,向量的长度等于该文本中单词个数,且包含的元素取值为1到V,V表示字典中总的单词个数。

词袋模型属于多维事件模型。

在进行基于训练集的概率计算时,同样基于“朴素”假设,P(c)P(c)计算同词集模型相同。但P(x=j|c=k)P(x=j|c=k)
的计算略有不同,应该为训练集中类别为k的文本中字典中排序为j的单词出现的总次数除以类别为k的文本中出现的总的单词个数。

而在进行拉普拉斯平滑时,P(c)P(c)同于词集模型,P(x=j|c=k)P(x=j|c=k)分子加1,分母加上的是V,因为每一个单词在字典中序号共有V种。

3.2.4 再啰嗦两句拉普拉斯平滑

拉普拉斯平滑目的是其他属性携带的信息被训练集种未出现的信息抹去,避免出现概率为0的情况。
核心思想是假设各属性的每一种取值起始分布都是均匀分布。

做法是分子加1,分母加上对应的值。在西瓜例子种,敲声可能取值共有“清脆”“浊响”“稍浊”三种,所以拉普拉斯平滑时分母加3;而在词集模型中,关心的是字典中的每一个单词是不是出现在了训练集中,共有“出现”“不出现”两种,所以分母加2;而在词袋模型中,关心的是训练集中的单词在字典中的编号,取值共有V种,即字典总的单词个数,所以分母加V。不知道这样解释是不是对,请大家批评指正。

3.3 总结下朴素贝叶斯分类器

朴素贝叶斯分类器基于朴素假设,通过训练集计算P(c)和P(xi|c)P(c)和P(xi|c)
,计算测试样本属于各类别的后验概率,基于各类别后验概率的相对大小得到测试样本的预测类别。

朴素贝叶斯分类器计算简单,原理清晰,但往往可以取得较好的分类效果。在实际的机器学习任务中,可以优先尝试下其分类效果。

待学习

4 半朴素贝叶斯分类器

5 贝叶斯网

才疏学浅,欢迎批评指正。

参考内容:

http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/
<http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/>
https://www.zhihu.com/question/21134457
<https://www.zhihu.com/question/21134457>
https://blog.csdn.net/juanjuan1314/article/details/78189527?locationnum=8&fps=1

<https://blog.csdn.net/juanjuan1314/article/details/78189527?locationnum=8&fps=1>
周志华 《机器学习》
《机器学习实战》
《深度学习》
CS229

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信