开发者学堂课程【高校精品课-北京理工大学-数据仓库与数据挖掘(上):贝叶斯分类器】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/921/detail/15645
贝叶斯分类器
内容介绍:
一、贝叶斯分类器概念
二、贝叶斯分类器计算
三、朴素贝叶斯分类器
四、朴素的贝叶斯计算问题
五、贝叶斯分类器的优缺点
一、贝叶斯分类器概念
贝叶斯分类器是一类基于统计的分类器。有坚实的数学基础,主要是依赖于贝叶斯定理。
对于贝叶斯分类器来说,它的性能是比较好的。最简单的贝叶斯分类器也就是朴素贝叶斯分类器,它的分类性能可以媲美决策树和基于神经网络的分类器的。
二、贝叶斯分类器计算
首先来看一下贝叶斯分类器中对于分类的任务的理解,在贝叶斯分类器中把每一个属性和每一个类都看做是一个随机变量。基于给定的一个数据对象,他的属性 X1X2 一直到 xd 分类的任务是要预测数据对象的类标签y。
1. 原理
在贝叶斯分类器中,要去找到一个y的值,使得概率 Given X1。X2 一直到 xd下Y=y 的概率最大。
2. 步骤
也就是把一个分类问题转换成了一个概率求解问题。如何去估算 GivenX1、X2、 xd 条件下 Y=y 的概率呢?通过一个例子介绍。
(1)、在贝叶斯分类器中,依然需要依赖训练集。训练集上,依然是由三个属性和一个类别。根据这样的一个训练集,需要预测一个未标记的数据对象x。确定x的类别是多少。
那么假设类别有两种 no 和 yes,需要判断的是,数据对象属于 yes 还是属于 no,也就是需要进行一个比较。
(2)、方法。根据贝叶斯定理,GivenX1、X2一直到 xn 条件下 y 的概率其实是等于 Given y 条件下 X1、X21 到 xd出现的概率乘以 y 的概率,然后再除于下面的 X1、X2 、、、xd 的联合概率。
(3)、因为在贝叶斯分类中,需要进行比较。也就是y的取值是有不同种,因为有不同的类别,每一类都会有一个概率,对于公式中分母的这一部分其实是完全一样的,所以是不需要计算的,那么对于 Py 来说,可以统计我们训练集中每一个类别出现的概率来实现估算。所以说最大化 Given x1 、x2 、、、xd 条件下 y 的概率,其实就等价于去最大化 py 乘以 Given y 条件下的 X1、X2 一直到 xd 出现的概率。
py 是可以估算的那么也就是在贝叶斯分类器中的核心就是怎么样去估算Given条件下X1、X2、、、xd 的值。
3.示例数据
(1)、给定一个测试记录。上面的一种概率计算是比较复杂的,但是可以通过一些假设简化他,比如还是以这个例子为主。
用 Yes 来代表一个类别等于 yes,用 no 来代表类别等于 no。对于这样的一个概率 Givenx 下 yes 出现的概率,用贝叶斯公式就可以表示,同理 Givenx 数据对象下取值为 no 的概率,那么可以去计算 yes 的概率和 no 的概率是很好估算。
(2)、概率计算。核心就变成了如何去求解 Giveny 条件下 X1 一直到 xd 出现的概率。
那么前面讲过,这样的概率是不太好计算的,所以就需要去使用一个假设条件。
三、朴素贝叶斯分类器
那么其中这样的一个。Σij就表示的是在类别为ij的条件下的属性为i的数据的方差,而μij就表示是类别为j,属性xi的均值。
然后得到概率分布函数之后,就可以把x值带进去计算,根据条件下xij的取值。
5.连续量类型例子
介绍一个例子。比如的收入是连续的。
(1)、因为 class=no 情况下,收入的均值是110。那么方差算出来是2975。对于 income=120。这种数据对象,在Given no 的条件下的属性,income=120的这概率就可以用概率分布函数计算出来,那么把我们的120带进去就可以得到再 Given no 条件下,income=120的概率等于0.0072,
(2)、属性分类
再回到例子中去,这里给出的是一个。用于预测是否买电脑的一个训练集。在训练集一共14个数据对象,他的类别主要是由两种 yes 或者是no。那么这时候,这样的一组训练集,需要对一个未标记的数据进行分类,未标记数数据的属性是 age 小于等于30。那么收入等于 medium,student 是等于 yes ,credit_rating=fairf。
(3)、P(CI)
首先要计算 py 的概率,那么在14个数据中,有九个是 yes,五个是 no,所以 yes 的概率就是0.643,no概率就是0.357。
(4)、Given(ci)条件下 x 出现的概率
然后再计算完P(CI)之后,来计算 Given(ci)条件下,x 出现的概率。首先计算 age 属性,在 yes 的条件下,age小于等于30的概率,因为 age 是一个离散属性,取之为 yes 的数据对象是九个,其中有两个 age 属性是小于等于30,所以是0.222。那么,在计算 no 条件下,age 小于等于30的概率,那么可以得到是0.6。以此类推,计算 income 的一个概率,那么再计算 student、credit_rating 把所有的 Given cjx 的概率求出来。
(5)、朴素贝叶斯训练数据集
之后就可以把它进行粘成了。对于数据对象来说,首先在 yes 的条件下,把每一个 Given yes 的条件下,这个属性出现的概率把他连乘起来。然后再计算在内条件下,把每个属性出现的概率乘起来,
还要考虑每一个类别出现的概率,最后可以看到在yes条件下数据对象数据的概率是0.028,在n o 条件下,数据对象出现的概率是0.007,那么很显然,yes 大于 No的,因此最后数据对象就被判定为是属于 yes 这个类。这个就是关于朴素的贝叶斯的计算方法。
四、朴素的贝叶斯计算问题
1. 概率为0
朴素的贝叶斯计算方法中呢有一个容易产生问题的地方,因为在计算 Given y 条件下 x 出现概率的时候,要把它每一个属性的条件概率都要相乘。如果有一个条件概率为零,无论它的其他取值怎么样,在每种类别下出现的概率都为零,所以说,这种情况是不利于对分类进行判别的。
2.处理方法
就需要对此进行处理,处理的方法就是对每一个类别增加一个事例,保证每一个属性都不会取值为零,通过一个例子介绍。
(1)、问题
比如数据集中,是有1000个元素。Income=no 是零个。Income 等于中等水平的是990个,而 incom 等于 high 的是有十个。
那因为 incom=no 是零,所以说 Given x 下 yes 出现的概率和 Given x 下 no 的概率都会是零。
(2)、拉普拉斯纠正
这个时候为了避免这样的一种情况,就把每一个类别都加一个数据对象。因为有三种情况,no 、medium、high。所以总共需要增加三个数据对象,这个时候收入等于no这种概率就是(1000+3)÷1。那我们的这样的一个收入,为中等的情况就是1000+3,除以990+1。那么这样一种操作把它称之为是叫做拉普拉斯纠正。
那通过这种拉普拉斯纠正,就避免了条件概率为零,从而导致没有办法去判定这个数据对象的类别的这样的一种问题。
五、贝叶斯分类器的优缺点
最后总结一下,贝叶斯分类器的优缺点。在这里介绍的贝叶斯分类器是基于一种假设,就是属性之间,是彼此独立的,这种分类器称之为叫做朴素的贝叶斯分类器。
1.优点
对于朴素的贝叶斯分类器来说,它的好处是比较容易理解,较容易实施,那么它的分类性能也是非常好的。
2. 缺点
缺点中有一个最突出的地方就是要依赖于假设,就是属性之间必须是独立的。但是在真实的情况中,属性之间可能是有相互联系甚至相互组合在一起,对类别产生影响,所以为了解决这样的一种属性间不满足独立的条件,就推出了一种叫做贝叶斯信念网络的一种分类器。











