贝叶斯分类器

本文摘抄自《机器学习》一书,作者:周志华

  • 贝叶斯分类器

对分类任务来说,在所有相关概率都已知的理想条件下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。以多分类任务为例进行解释。

假设有N种可能的类别标记(好瓜或者坏瓜等类别),即y=\left \{ c_1,c_2,...,c_N \right \}\lambda _{ij} 是将一个真实分类为c _{j}的样本误分类为c _{i}所产生的损失。基于后验概率p(c_{i}\mid x)可获得将样本x分类为c _{i}所产生的期望损失,即在样本x上的条件风险:

                                                                   R(c_{i}\mid x)=\sum_{j=1}^{N}\lambda _{ij}P(c_{j}\mid x)

因此我们需要寻找一个判定准则h,以最小化总体风险:

                                                                   R(h)=E_{x}\left [ R(h(x)\mid x) \right ]

显然,对于每个样本x,若h能最小化条件风险R(h(x)\mid x) \right,则总体风险R(h)也将被最小化。这就产生了贝叶斯准则:为最小化总体风险,只需在每个样本上选择那个能使条件风险R(c\mid x)最小的类别标记,即:

                                                                    h^{*}(x)=\underset{c\epsilon y}{argmin}R(c\mid x)

此时h^{*}称为贝叶斯最优分类器,与之对应的总体风险R(h^{*})称为贝叶斯风险。

具体来说,若目标是最小化分类错误率,则误判损失\lambda _{ij}可写为\lambda _{ij}=\left\{\begin{matrix} 0, & i=j\\ 1,& otherwise \end{matrix}\right.,此时条件风险为:

                                                                   R(c\mid x)=1-P(c\mid x)

于是,最小化分类错误率的贝叶斯最优分类器为:

                                                                   h^{*}(x)=\underset{c\epsilon y}{argmax}P(c\mid x)

因此,想要使用贝叶斯判定准则来最小化决策风险,首先要获取后验概率P(c\mid x)。然而在现实任务中这通常难以直接获得。从这个角度来看,机器学习所要实现的是基于有限的训练样本尽可能准确的估计出后验概率P(c\mid x)总体来说,主要有两种策略:给定x,可通过直接建模P(c\mid x)来预测c,这样得到的是“判别式模型”(决策树、BP神经网络、支持向量机)。也可先对联合概率分布P(x,c)建模,然后再由此获得P(c\mid x)这样得到的是“生成式模型”(贝叶斯)。接下来我们介绍生成式模型:

                                                                         P(c\mid x)=\frac{p(x,c)}{p(x)}

基于贝叶斯定理,P(c\mid x)可写为:

                                                                         P(c\mid x)=\frac{p(c)p(x\mid c)}{p(x)}

其中,P(c)是类(即类别,如好瓜、坏瓜等)先验概率,p(x\mid c)是样本x相对于类标记c的类条件概率,或称为“似然”。P(x)是用于归一化的证据因子,对给定样本x,证据因子P(x)与类标记无关。因此估计P(c\mid x)的问题就转化为如何基于训练数据D来估计先验概率P(c)和似然p(x\mid c)

类先验概率P(c)表达了样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时,P(c)可通过各类样本出现的频率进行估计。对类条件概率p(x\mid c)来说,由于他涉及关于x所有属性的联合概率,直接根据样本出现的频率进行估计将会遇到严重的困难,因此我们使用极大似然估计,具体介绍可参看我的另一篇博客

朴素贝叶斯分类器

基于贝叶斯公式估计后验概率P(c\mid x)的主要困难在于:类条件概率p(x\mid c)是所有属性上的联合概率,难以从有限的训练样本直接估计得到,为了避开这个障碍,朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。

基于属性条件独立性假设,贝叶斯公式可重写为:

                                                          P(c\mid x)=\frac{p(c)p(x\mid c)}{p(x)}=\frac{p(c)}{p(x)}\prod_{i=1}^{d}P(x_{i}\mid c)

其中d是属性数目,x_{i}为x在第i个属性上的取值。

对于所有类别来说P(x)相同,因此朴素贝叶斯表达式为:

                                                                h^{*}(x)=\underset{c\epsilon y}{argmax}P(c)\prod_{i=1}^{d}P(x_{i}\mid c)

显然,朴素贝叶斯分类器的训练过程就是基于训练集D来估计类先验概率P(c),并为每个属性估计条件概率P(x_{i}\mid c)

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

                                                                                   P(c)=\frac{\left | D_{c} \right |}{\left | D \right |}

离散属性而言,令D_{c,x_{i}}表示D_{c}中在第i个属性上取值为x_{i}的样本组成的集合,则条件概率P(x_{i}\mid c)可估计为:

                                                                                  P(x_{i}\mid c)=\frac{\left |D_{c,x_{i}} \right |}{\left | D_{c} \right |}

对连续属性而言可考虑概率密度函数,假定P(x_{i}\mid c)~N(\mu _{c,i},\sigma ^{2}_{c,i}),其中\mu _{c,i}\sigma ^{2}_{c,i}分别是第c类样本在第i个属性上取值的均值和方差,则有:

                                                               P(x_{i}\mid c)=\frac{1}{\sqrt{2\pi }\sigma _{c,i}}exp(-\frac{(x_{i}-\mu _{c,i})^{2}}{2\sigma ^{2}_{c,i}})

下面我们用西瓜数据集训练一个朴素贝叶斯分类器,并对一个测试例进行分类:

已知西瓜数据集
测试例

为了避免其他属性携带的信息被训练集中未出现的属性值抹去,在估计概率值时通常要进行平滑,常用“拉普拉斯修正”。具体来说,令N表示训练集D中可能的类别数,N_{i}表示第i个属性可能的取值数,则类先验概率和条件概率的式子可修正为:

                                                                      P\hat{}(c)=\frac{\left | D_{c} \right |+1}{\left | D \right |+N}

                                                                    P\hat{}(x_{i}\mid c)=\frac{\left |D_{c,x_{i}} \right |+1}{\left | D_{c} \right |+N_{i}}

显然,拉普拉斯修正避免了瘾训练集样本不充分导致概率估值为0的问题,并且在训练集变大时,修正过程所引入的先验的影响会逐渐变的可忽略。

  • 半朴素贝叶斯分类器

为了降低贝叶斯公式中估计后验概率P(c\mid x)的困难,朴素贝叶斯分类器采用了属性条件独立性假设,但在现实任务中这个假设往往很难成立。于是产生了“半朴素贝叶斯分类器”。

半朴素贝叶斯分类器的基本思想是适当考虑一部分属性间的相互依赖信息,从而即不需进行完全联合的概率计算,又不至于彻底忽略了比较强的属性依赖关系。“独依赖估计”(简称:ODE)是半朴素贝叶斯分类器最常使用的一种策略。顾名思义,所谓“独依赖”就是假设每个属性在类别之外最多仅依赖一个其他属性,即:

                                                              P(c\mid x)=P(c)\prod_{i=1}^{d}P(x_{i}\mid c,pa_{i})

其中pa_{i}为属性x_{i}所依赖的属性,称为x_{i}的父属性。此时,对每个属性x_{i},若其父属性pa_{i}已知,就可以估计概率值P(x_{i}\mid c,pa_{i})。于是,问题的关键就转化为如何确定每个属性的父属性,不同的做法产生不同的独依赖分类器。

主要有三种独依赖分类器:SPODE、TAN、AODE

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作业一(Matlab) 假设x=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20),y=( 2.94, 4.53, 5.96, 7.88, 9.02, 10.94, 12.14, 13.96, 14.74, 16.68, 17.79, 19.67, 21.20, 22.07, 23.75, 25.22, 27.17, 28.84, 29.84, 31.78).请写出拟合的直线方程,并画图(包括原数据点及拟合的直线),请打印出来。 请使用线性回归模型来拟合bodyfat数据。数据集介绍可阅读:https://www.mathworks.com/help/nnet/examples/body-fat-estimation.html 在matlab中,在命令行中输入[X,Y] = bodyfat_dataset; 即可获得一个拥有13个属性,252个样本的数据集。使用前200个样本来获得模型,并写出你所获得的模型。使用后52个样本做测试,汇报你所获得的泛化误差。 编程实现对数回归,并给出教材89页上的西瓜数据集3.0上的结果。要求采用4折交叉验证法来评估结果。因为此处一共17个样本,你可以去掉最后一个样本,也可以用所有数据,然后测试用5个样本。在汇报结果时,请说明你的选择。请在二维图上画出你的结果(用两种不同颜色或者形状来标注类别),同时打印出完整的代码。 作业二 采用信息增益准则,基于表4.2中编号为1、2、3、6、7、9、10、14、15、16、17的11个样本的色泽、根蒂、敲声、文理属性构建决策树。(本次作业可以用笔算,鼓励编程实现,但都需要列出主要步骤,其中log2(3)=1.585,log2(5)=2.322,log2(6)=2.585,log2(7)=2.807,log2(9)=3.17,log2(10)=3.322,log2(11)=3.459) 用表4.2中编号为4、5、8、11、12、13的样本做测试集,对上题的训练数据采用预剪枝策略构建决策树,并汇报验证集精度。 用表4.2中编号为4、5、8、11、12、13的样本做测试集,对题1所构建的决策树进行后剪枝,并汇报验证集精度。 作业三(Matlab) 试编程实现累积BP算法,在西瓜数据集2.0上(用训练数据)训练一个单隐层网络,用验证集计算出均方误差。要自己实现,不能直接调用现成的库函数。 作业四 下载并安装libsvm,http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ,在西瓜数据集3.0a上分别用线性核训练一个SVM。用正类1-6和负类9-14作为训练集,其余作为测试集。C取不同的值,其它参数设为默认值。作出测试正确率随C取值变化的图,C=[1 100 10000 10^6 10^8]。 换成高斯核(宽度设为1),重复上题的步骤。 作业五 以西瓜数据集2.0(见教材76页表4.1)中样本1--16为训练训练一个朴素贝叶斯分类,对测试样本17进行分类。请写出详细的计算过程。 假设x_k是一个班上学生的分数,对应的分数及其分布是 x_1=30, P1=0.5,一共有14个学生; x_2=18, P2=mu,有6个学生; x_3=20, P3=2mu,有9个学生; x_4=23, P4=0.5-3mu,有10个学生; 通过最大对数似然法求出mu的值。 作业六(Python) 1 使用PCA对Yale人脸数据集进行降维,并分别观察前20、前100个特征向量所对应的图像。请随机选取3张照片来对比效果。数据集http://vision.ucsd.edu/content/yale-face-database

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值