贝叶斯分类器算法及案例详解

时间:2024-03-20 21:26:40

作者:vicky 致谢:小龙快跑jly, 巧儿、克力,Esther_or so,雨佳小和尚

本文是对贝叶斯分类器(包括朴素贝叶斯分类器,半朴素贝叶斯分类器及贝叶斯网络)算法的演算及案例的详细分析。本文只是在学习后进行了总结并加入了自己的理解,如有不妥之处,还望海涵,也希望大家多多指教,一起学习!

ps.建议先阅读“理解贝叶斯分类器原理及关系 https://blog.csdn.net/weixin_43742744/article/details/85492334 ” 后再阅读本文,会对上述几种贝叶斯分类器有更深入的理解。

一、 朴素贝叶斯分类器

特点:假设输入的变量的特征属性之间具有很强的独立性。
即假设x1,x2,….,xn相互独立。{若AB相互独立,则P(AB)=P(A)P(B)}
通过这个假设,可以把联合分布概率转化为多个类条件概率的乘积。
(以下公式来自SIGAI–机器学习—雷老师)
贝叶斯分类器算法及案例详解
朴素贝叶斯分类器既可以处理离散数值的分类问题,也能处理连续数值的分类问题。
下面分别结合公式和案例分析如何处理这两类问题。

1)离散型

贝叶斯分类器算法及案例详解
(PS. 拉普拉斯平滑处理是平滑处理的一种方式。平滑处理是为了避免某一类样本数量为0,导致该样本出现的概率为0。只要有一个概率为0,预测函数将概率连乘后就为0了。为了避免这种情况,我们在分子加上λ,分母加上Kλ,保证所有概率都非零。拉普拉斯平滑是λ=1的情况。)

2)连续型

当样本的特征是连续型的数值时,条件概率的分布通常假设为高斯分布,其朴素贝叶斯被称为高斯朴素贝叶斯。高斯分布又分为一维正态分布和多维正态分布。下面依次介绍两种正态分布。
 一维正态分布
贝叶斯分类器算法及案例详解
为了得到函数,需要求出均值和方差:
求得均值和方差后,我们可以得到某类的不同特征属性的高斯函数。
最大化后验概率正比于似然与先验的乘积,算出似然后,还需计算先验概率。
i. 假设各类出现的概率一样
贝叶斯分类器算法及案例详解
ii. 仅考虑训练样本数据时
贝叶斯分类器算法及案例详解
平滑处理后的概率:(λ=1时为拉普拉斯平滑修正)
贝叶斯分类器算法及案例详解
案例(来源于西瓜书):[1]
贝叶斯分类器算法及案例详解

判断一个具有特征:{色泽=青绿,根蒂=蜷缩,敲声=浊响,纹理=清晰,脐部=凹陷,触感=硬滑,密度=0.697,含糖率=0.460}的测试样例瓜是否为好瓜?

先验:P(好瓜=是)=8/17≈0.471 P(好瓜=否)=9/17≈0.529
类条件概率:
离散值属性通过样本统计得出,连续值属性假设为一维正态分布,通过样本计算出均值和方差,再代入测试集的数据求解。
贝叶斯分类器算法及案例详解
最后计算先验与类条件概率的乘积,数值大的对应的分类为分类结果:
贝叶斯分类器算法及案例详解
由计算结果可知,此瓜更有可能是好瓜。
 多维正态分布
贝叶斯分类器算法及案例详解
其对数似然函数为:
贝叶斯分类器算法及案例详解
下面结合案例分析。
案例[2]:某国人体特征指标:
贝叶斯分类器算法及案例详解
根据样本估计均值向量:
贝叶斯分类器算法及案例详解
男性体征对应的三维均值向量:
贝叶斯分类器算法及案例详解
同理可得:
贝叶斯分类器算法及案例详解
计算协方差:(举例计算男性身高和体重的协方差,其他同理)
贝叶斯分类器算法及案例详解
得到协方差矩阵:
贝叶斯分类器算法及案例详解
求出协方差矩阵的行列式和逆矩阵:
贝叶斯分类器算法及案例详解
代入对数似然函数中:
贝叶斯分类器算法及案例详解

已知某人身高6英尺,体重130磅,脚掌长8英寸,预测该人是男还是女。

预测样本向量x=(6, 130, 8)T
带入ln(L男)和ln(L女)
ln(L男) =-16.314
ln(L女) = -28.730
ln(L男)>ln(L女)
所以这个人更有可能是男人.

二、 半朴素贝叶斯分类器

因为生活中有的属性之间有较强的联系,完全假设各属性独立是不太合理的,因此在朴素贝叶斯各属性互相独立的基础上放松了限制条件。可以加一个父属性(One-Dependent Estimator,ODE)或K个父属性(K-Dependent Estimator,KDE)。若k值较大又会造成维数较多,计算困难,因此常用的是独依赖估计,即给每个属性增加了一个父属性pai。

现在的问题是如何确定这个父属性?
有三种方法:SPODE,AODE和TAN算法。
贝叶斯分类器算法及案例详解
Ps.以下对于公式的解释均采用西瓜数据集的数据。
1) SPODE (Super-Parent ODE): 假设所有属性都依赖同一个属性,这个属性称为“超父”属性。
贝叶斯分类器算法及案例详解
采用拉普拉斯修正后的计算公式:
贝叶斯分类器算法及案例详解贝叶斯分类器算法及案例详解
假设pai是色泽青绿,xi是纹理清晰,c是好瓜。
则公式中N为是否为好瓜的类别数目:2(是,否)
Dc为好瓜的数目:8
D为所有瓜的数目:17
所以P©=(8+1)/(17+2)
Dc,xi为纹理清晰的好瓜数目:7
Ni为纹理类别的数目:3(清晰,稍糊,模糊)
P(xi│c)=(7+1)/(8+3)
2) AODE ( Averaged ODE): 假设所有的属性都做一次父属性,相当于在SPODE的基础上加了一个循环。但是如果每个属性都作为父属性,计算量太大了,所以加了一个限定条件,如果要作为父属性,在样本中出现的次数应该大于等于m(m一般取30,是一个经验值)。
贝叶斯分类器算法及案例详解
采用拉普拉斯修正后的计算公式:
贝叶斯分类器算法及案例详解
假设xi是色泽为青绿,xj是纹理清晰,c是好瓜。
则公式中Dc,xi为纹理清晰的好瓜数目:7
D为所有瓜的数目:17
N为是否为好瓜的类别数目:2(是,否)
Ni为色泽类别的数目:3(乌黑,青绿,浅白)
Dc,xi,xj为色泽青绿且纹理清晰的好瓜的数目:3
Nj为纹理类别的数目:3(清晰,稍糊,模糊)
所以P(c,xi)=(7+1)/(17+2*3)
P(xj│c,xi)=(3+1)/(7+3)
3) TAN(Tree Augmented Naïve Bayes): 通过最大带权生成树算法确定属性之间的依赖关系,简单说,就是通过计算条件互信息,求得每个属性最相关的属性,然后形成一个有向边。条件互信息的计算公式如下:
贝叶斯分类器算法及案例详解
假设xi是色泽为青绿, xj是纹理清晰,c是好瓜。
则公式I (xI,xj│y)表示的是色泽青绿与纹理清晰的条件互信息
这里y有两类(是,否为好瓜),分别计算每类后累加数值即可求得条件互信息
P(xI,xj│c)为好瓜中色泽青绿且纹理清晰的概率
P(xI│c)为好瓜中色泽青绿的概率
P(xj│c)为好瓜中纹理清晰的概率
SPODE ,AODE与TAN的关系:
贝叶斯分类器算法及案例详解
SPODE:各属性都依赖于一个超父属性
AODE: (m>30的属性)都作为父属性算一遍,相当于给SPODE外面加了一个循环(上图是用x2作为父属性画的,还有其他属性可作为父属性)
TAN:通过计算条件互信息,确定每个属性最相关的属性,然后构造有向边

为了更加直观地理解,再次结合西瓜书上的案例:
贝叶斯分类器算法及案例详解

判断一个具有特征:{色泽=青绿,根蒂=蜷缩,敲声=浊响,纹理=清晰,脐部=凹陷,触感=硬滑,密度=0.697,含糖率=0.460}的测试样例瓜是否为好瓜?

SPODE:假设其他特征都依赖于色泽为青绿
AODE:假设各个特征都作为父属性计算后求和,相当于在SPODE外面加了一层循环,只是这里的案例没有一个满足m>30的条件约束,不适用AODE算法
TAN:计算各个特征之间的条件互信息(以色泽为青绿、敲声浊响、纹理清晰、脐部凹陷为例)[3]
贝叶斯分类器算法及案例详解
属性互条件信息值:
贝叶斯分类器算法及案例详解
通过表格可以看到属性间的条件互信息值,找到每个属性条件互信息最大的值及相对应的属性,于是我们可以画出下图的红线,此时是无向网络图。为了变成有向网络图,我们需要找一个起点,这里我们找的是“凹陷”作为起点(哪个属性作为起点无所谓,只要不会形成闭环就可以),画出了下图的蓝线,构造出了有向网络图。[3]
贝叶斯分类器算法及案例详解

三、 贝叶斯网络

贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型(directed acyclic graphical model),是一种概率图模型,于1985年由Judea Pearl首先提出。一般而言,贝叶斯网络可以用在知道某些变量的值或分布时求另一部分的变量的概率分布。
案例[4]:
贝叶斯分类器算法及案例详解
其中,各个单词、表达式表示的含义如下:
P(S): smoking表示吸烟
P(C|S):一个人在吸烟的情况下得肺癌(lung Cancer)的概率
P(X|C,S):因吸烟且得肺癌而需要照X光(X-ray)的概率
P(B|S):一个人在吸烟的情况下得支气管炎(Bronchitis)的概率
P(D|C,B):因吸烟且得了支气管炎导致呼吸困难(dyspnoea)的概率
C = 0表示lung Cancer不发生的概率,C = 1表示lung Cancer发生的概率
B等于0(B不发生)或1(B发生)也类似于C,同样,D=1表示D发生的概率,D=0表示D不发生的概率
便可得到dyspnoea的一张概率表,如上图的最右下角所示

关于贝叶斯网络,更多内容可参考[4].

四、 参考文献

[1] 周志华,《机器学习》,[M],1版,北京:清华大学出版社,2016
[2] 正态贝叶斯分类器,[J/OL], https://blog.csdn.net/bbzz2/article/details/50915660
[3] 贝叶斯分类器(一):朴素贝叶斯分类器与半朴素贝叶斯分类器,[J/OL], https://blog.csdn.net/rongrongyaofeiqi/article/details/53100391
[4] 机器学习算法----贝叶斯网络,[J/OL],
https://blog.csdn.net/sunshine_in_moon/article/details/51276119