[读书笔记-西瓜书] Bayes分类器

这是阅读周志华教授《机器学习》中第七章(贝叶斯分类器)的笔记。


贝叶斯决策论

使用贝叶斯决策论解决问题时的目标实际上是“最小化总体风险”,可以形式化表示成下式:
R(ci|x)=nj=1λijP(cj|x)


λiji类误分类成j类的代价。

P(ci|x):样本x分类成ci的概率。

贝叶斯决策论希望找到一个最小化总体风险的判别准则h(x),对于分类任务则是一个分类准则(h(x)表示将x归类为h(x)类),使得上述总体风险最小:
h(x)=argmin R(c|x)


贝叶斯准则

贝叶斯准则可以简单理解为“整体风险最小化=每个样本的风险最小化”,风险指的是(比如在分类问题中)被分成错误类的期望。

能够使用贝叶斯准则的前提是获得后验概率P(c|x),贝叶斯分类器此类生成模型则会考虑使用贝叶斯定理来求解这个后验概率:
P(c|x)=P(c)P(x|c)P(x)


解释一下公式中的每一个量的意义:

P(c|x)后验概率,认为x分类成c的概率。

P(c)先验概率,从公式上直观上看就是“偏见”、“第一眼看到这个人就觉得他是坏人”这样的概率。

P(x|c)x相对于c的类条件概率,也称似然。指的是已知某些观测所得到结果(类别是c)时,对有关事物的性质(恰好是样本x)的参数进行估计[1]。

P(x):用于归一化的因子,P(x)=ni=1P(x|c=i)P(c=i).

贝叶斯定理实际上就是希望通过已知相当数量的训练数据集合D,我们希望找到一个合理的方法来估计D中的P(c)P(x|c)

我们假设训练集中的训练数据独立同分布,那么根据大数定律,P(c)可以用每一类样本的频率来估计。

P(x|c)很难使用频率估计,因为D中的样本x通常无法完全覆盖所有情况:未被数据集覆盖出现概率为0。于是需要使用极大似然估计.


极大似然估计(MLE)

书中首先在介绍Logistic回归的时候使用了MLE(对数似然),但是没有仔细介绍。

首先假设数据集符合某种概率分布D(θc),被分成不同类完全取决于参数向量θc.训练模型的过程就是参数估计的过程。

极大似然估计(MLE)就是一种参数估计方法,估计方法完全写在名字里了:似然(P(x|c))极大化。由于分类结果完全取决于θc,因此这个似然可以表示成P(x|θc).介绍贝叶斯准则的时候也讲了,“整体风险最小化=每个样本的风险最小化”。因此θc对于整个数据集D的似然就是:
P(D|θc)=xDP(x|θc)


我们给它取对数(因为小数连乘会导致精度损失):
L(θc)=logP(D|θc)=xDlogP(x|θc)

我们对θc的估计为:
^θc=argmaxθcL(θc)

分析到这里这个式子已经展不开了,因为每个样本具体的似然取决于我们假设的是哪个分布,比如概率密度函数服从正态分布\N(μc,σ2c),那么对于它的参数μcσ2c的极大似然估计分别为数据集的均值xDx|D|和方差xD(x^μc)2|D|

(然而我认为通常这么随意假设数据分布是不科学的= =)


朴素贝叶斯分类器

由于P(x|c)是所有属性的联合概率,难以估计属性之间的关系,为了避免计算上的问题,引入属性条件独立性假设。

属性条件独立性假设:假设所有属性(理解:样本x中的每一维)相互独立。

于是P(c|x)重写为:
P(c|x)=P(c)P(x|c)P(x)=P(c)P(x)di=1P(xi|c)


d为属性数,xi为样本x在第i个属性的取值。对于每个类cP(x)都一样。在计算过程中可以忽略,于是:
h(x)=argmin R(c|x)

=argmax P(c|x)

=argmax P(c)di=1P(xi|c)

P(c):可以由每类的样本出现频率获得。

P(xi|c):针对离散的情况,可以根据类别是c并且含有属性xi的出现频率获得;针对连续的情况,用密度函数。

一句话:于是计算贝叶斯实际上就是算两个量:P(c)P(xi|c),按照两个量对应样本的频率获得一个概率,然后再用h(x)的计算方法乘出不同属性对应不同分类的极大似然估计即可。


缺省值处理

有时会遇到某个样本某个属性缺失的情况,但是又不至于将该样本删除,于是需要进行平滑处理。拉普拉斯修正。


半朴素贝叶斯

适当考虑部分属性的相互依赖信息,半朴素贝叶斯使用“独依赖估计”,即每个属性至多依赖于一个其他属性。
P(c|x)P(c)di=1P(xi|c,pai)


paixi所依赖的属性(xi的父属性),计算过程就是将任意两个属性之间的依赖信息I(xi,xj)为边权建图,跑最大生成树。


贝叶斯网

贝叶斯网是个有向无环图,用点表示属性,权值为属性发生的概率,边表示依赖关系,边权为条件概率。例如A有一条指向B的边,点权描述的是P(A)P(B),这条边的权描述的就是P(B|A). 没有边相连的两个点之间是相互独立的。

有一个笔记[2]中的例子非常形象地描述了相互独立的性质:

一个聪明人,在一场很难的考试里拿了高分,却得到了一封很烂的推荐信,同时他SAT考试却是高分的概率是多少?

我们再隐藏一些细节,一个人推荐信很烂,他SAT高分的概率是多少?或者,一个人SAT低分,却手握牛推的概率是多少?

如果不考虑随机变量之间的依赖关系,上述内容是很难计算的。但是如果有一个构建好的概率图,上面的问题则可以转化为条件概率问题。

学习

已知网络结构的话,那么贝叶斯网上的各种信息是很容易统计的,按照网络要求和训练数据统计不同频率即可。

若网络结构未知,将贝叶斯网的学习看作是一个数据压缩任务,目标是学习到一个能以最短编码长度描述训练数据的模型。定义评分函数:
s(B|D)=f(θ)|B|L(B|D)


s(B|D):在数据集D条件下的贝叶斯网B的评分函数。

|B|:贝叶斯网的参数个数。

f(θ):描述每个参数θ所需字节数

L(B|D):贝叶斯网的对数似然。

我们最终的目的是寻找一个B使s(B|D)最小,f(θ)可以取1或者12log m,分别称为AIC和BIC。

推理

不能直接根据贝叶斯网定义的联合概率分布来计算后验概率,因为网络节点多的稠密图推理是NP-hard的。于是可以借助近似推断,常用Gibbs采样完成,先跳过了= =、


Reference:

[1]. https://blog.csdn.net/lwq1026/article/details/70161857

[2]. https://www.cnblogs.com/ironstark/p/5087081.html

Code 401: 未经授权的操作,请检查你的AppId和AppKey.
Powered By Valine
v1.5.2