朴素贝叶斯分类

更新时间:2024-05-15 20:31:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

朴素贝叶斯分类

一、朴素贝叶斯分类方法描述

设样本集T有n个属性:A1,A2,....An,可能类别为m个:C1,C2,...,Cm,待分类样本为:

X?{x1,x2,...xn},分别计算条件概率:P(Ci|X)?P(X|Ci)P(Ci),(1)

P(X)则条件概率最大的P(Ci|X)对应的类Ci就是X的预测类。

在公式(1)中,计算等式左边的每个条件概率时,右边的分母相同,因此只需要计算分子,然后比较大小即可。其中P(Ci)?|Ci类|Ci类的样本数 ?(2)|T|训练集T中总的样本数另外,用朴素贝叶斯分类时还需假设各属性之间相互独立,此时:

P(X|Ci)?P(x1,x2,...,xn|Ci)?P(x1|Ci)P(x2|Ci)...P(xn|Ci)??P(xj|Ci)(3)

j?1n二、条件概率P(xj|Ci)的估计方法

1、 如果属性Aj为离散型随机变量,则条件概率

P(xj|Ci)?Ci类中属性Aj为xj的样本数Ci类的总样本数 (4)例1 表1是用于构造分类模型的训练集,包含14个样本和5个属性:

,它的取值有三个:Sunny(晴天)、Overcast(阴天)、Rain(下雨); A1为Outlook(天气)

,它的取值有三个:Hot(炎热)、Mild(适中)、Cool(凉爽); A2为Temperature(温度)

,它的取值有两个:Hign(潮湿)、Normal(一般); A3为Humidity(湿度)

,它的取值有两个:Falsese(无)、Trueue(有); A4为Windy(风)

,它是分类属性,取值有两个:Yes(是)、No(否)。 A5为Play(比赛)

表1 训练样本集

Table 1 Trueaining data outlook sunny sunny overcast rain rain rain overcast sunny sunny rain overcast overcast overcast rain temperature humidity windy hot hot hot mild cool cool cool mild cool mild mild mild hot mild high high high high normal normal normal high normal normal normal high normal high false true false false false true true false false false true true false true play no no yes yes yes no yes no yes yes yes yes yes no 根据此训练样本集,用贝叶斯方法判断新样本X?{rain,hot,high,true}所属类别。 具体过程如下:

这是一个二分类问题,即只有两个类别:Yes(是)或No(否)。 先对类别汇总如下:

训练集T 9 类别C1(yes) 5 类别C2(no) 14 Total 因此,P(C1)?9/14?0.643,

P(C2)?5/14?0.643;

对于属性A1(Outlook),数据汇总如下 Outlook Sunny Overcast Rain Total 各条件概率计算如下

1 5 3 9 类别C1(yes) 3 0 2 5 类别C2(no) P(Sunny|Yes)?1/9?0.111,P(Sunny|No)?3/5?0.6 P(overcast|Yes)?5/9?0.556,P(Overcast|No)?0 P(Rain|Yes)?3/9?0.333,P(Rain|No)?2/5?0.4

类似的,其它个属性数据分别汇总,计算其条件概率如下: Temperature Hot Mild Cool Total 2 4 3 9 类别C1(yes) 2 2 1 5 类别C2(no) P(Hot|Yes)?2/9?0.222,P(Hot|No)?2/5?0.4 P(Mild|Yes)?4/9?0.444,P(Mild|No)?2/5?0.4 P(Cool|Yes)?3/9?0.333,P(Cool|No)?1/5?0.2

Humidity High Normal Total 3 6 9 类别C1(yes) 4 1 5 类别C2(no) P(High|Yes)?3/9?0.333,P(High|No)?4/5?0.8 P(Normal|Yes)?6/9?0.667,P(Normal|No)?1/5?0.2

Windy False True Total 6 3 9 类别C1(yes) 2 3 5 类别C2(no) P(False|Yes)?6/9?0.667,P(False|No)?2/5?0.4 P(True|Yes)?3/9?0.333,P(False|No)?3/5?0.6

对于待分类样本X?{rain,hot,high,true},分别计算以下两个概率:

P1?P(\Rain,hot,high,true\|Yes)*P(Yes)

?P(Rain|Yes)*P(Hot|Yes)*P(high|Yes)*P(True|Yes)*P(Yes)=0.333*0.22*0.33*0.3*0.643=0.0053

P2?P(\Rain,hot,high,true\|No)*P(No)

?P(Rain|No)*P(Hot|No)*P(high|No)*P(True|Yes)*P(No)=0.4*0.4*0.8*0.6*0.357=0.0274

P1?P2,因此X?{rain,hot,high,true}为第二类,即不适合比赛。

2、属性为连续型数据类型

例2 训练数据如表2,判断新样本X?{\是,已婚,120K\所属的类别,即是否拖欠贷款。

表2 训练数据2

Table 2 Training data No.2 tid

1 2 3 4 5 6 7 8 9 10

有房

是 否 否 是 否 否 是 否 否 否

婚姻状况 年收入 拖欠贷款

单身 已婚 但是 已婚 离婚 已婚 离婚 单身 已婚 单身

125 100 70 120 95 60 220 85 75 90

否 否 否 否 是 否 否 是 否 是

属性“年收入”为连续型数据类型,此时如果再用公式(4) P(xj|Ci)?Ci类中属性Aj为xj的样本数Ci类的总样本数

来估计条件概率已不合适,例如,若新样本的“年收入”为110K,则

P(110|Yes)?P(110|No)?0,类似的新样本将无法判别。有两种策略可以用了估计连续

型属性的条件概率。

1、 把连续属性离散化

如前面构造决策树的Gini Index或信息增益方法,把连续属性划分成几个区间,即连续属性离散化。按前面所述,如果把“年收入”划分成两个区间,则最佳的候选划分点为97K,对应区间为(0,97]和(97,??),通过计算类Ci中属性“年收入”落入对应区间的比例来估计条件概率P(xj|Ci),即把训练数据集修改为表3

表3 修改的训练数据 Table 3 Training data No.2

tid

1 2 3 4 5 6 7 8 9 10

有房

是 否 否 是 否 否 是 否 否 否

婚姻状况 年收入?97 拖欠贷款

单身 已婚 但是 已婚 离婚 已婚 离婚 单身 已婚 单身

否 否 是 否 是 是 否 是 是 是

否 否 否 否 是 否 否 是 否 是

这样便可以按例1的方法来预测新样本所属的类别,此留做练习。

2、 用概率分布来估计条件概率

假设连续型属性服从某种概率分布(通常假设服从正态分布),然后用训练数据估计出分布的参数,进而计算相应的条件概率。如例2中,假设“年收入”属性为随机变量

X3~N(?,?2),对于每个类Ci,属性xj属于类Ci的条件概率为

P(xj|Ci)?12??ijexp(?(xj??ij)22?ij2)(5)

?ij,?ij分别为类Ci中属性xj的期望和方差,可以用Ci中属性xj的观察值的样本均值和

方差来估计,如表2中训练数据,设类别C1=“否”,C2=“是”,对应的“年收入”如表4

表4

年收入 拖欠贷款

125 否

100 否

70 否

120 否

95 是

60 否

220 否

85 是

75 否

90 是

类别C1=“否”的两个参数估计如下:

X?

1(125?100?70?120?60?220?75)?110 7

1 S2?{(125?110)2?(100?110)2?(70?110)2 6?(120?110)2?(60?110)2?(220?110)2?(75?110)2}?2975

S?54.54

因此C1=“否”的两个参数分别为:(?,?2)?(110,54.542) 同理可以估计C2=“是”的两个参数为:(?,?2)?(90,52)

对于新样本X?{\是,已婚,120K\,可以估计“年收入”属性相应的条件概率为:

1(120?110)2P(120|C1(No))?exp(?)?0.0072

2*29752?54.54P(120|C2(Yes))?1(120?90)exp(?)?1.212*10?92*252?5

2

说明:公式(5)的解释有一定的误导性,因为如果Xj为连续型随机变量,则P(Xj?K)?0,取而代之,应计算Xj落在区间(xj,xj??]上的概率(?为很小的正数):

??xjP(xj?Xj???xj|Ci)?xj?f(Xj22;?ij,?ij)dXj?f(Xj;?ij,?ij)*?

对于每个Xj的取值,都用同一个?,在比较时,?成为一个常数乘法因此,不影响比较结果,因此公式(5)仍可以用了估计相应的条件概率。

下面用上述方法来判别新样本X?{\是,已婚,120K\所属的类别。 离散属性数据汇总如下: 训练集T 7 类别C1(no) 3 类别C2(yes) P(C1)?73?0.7,P(C2)??0.3 1010类别C1(no) 3 4 7 0 3 3 类别C2(yes) 属性“有房” 是 否 Total 3?0.4285,P(是|C2)?0 74P(否|C1)??0.5715 ,P(否|C2)?1

7P(是|C1)?属性“婚姻状况” 离婚 单身 已婚 Total 类别C1(no) 类别C2(yes) 1 2 4 7 1 2 0 3 P(离婚|C1)?1/7?0.1429,P(离婚|C2)?1/3?0.333 P(单身|C1)?2/7?0.2857,P(单身|C2)?2/3?0.667 P(已婚|C1)?4/7?0.5714,P(已婚|C2)?0

对于属性“年输入”,已估计相应的条件概率为:

P(120|C1)?0.0072,P(120|C2)?1.2152*10?9

由以上概率计算样本X?{\是,已婚,120K\相应的条件概率为:

P1?P(X|C1)?744***0.0072?0.0016 1077 3P2?P(X|C2)?*0*0*1.2152*10?9?010

P1?P2,因此新样本属于第二类,即“是”拖欠贷款。

3、 条件概率的m估计 从上面的例子可以看出,用训练数据估计条件概率时有一个潜在的问题:如果有一个属性的类条件概率P(xj|Ci)为0,则整个类的后验概率就等于0,简单地使用记录比例来估计类条件概率的方法就显得脆弱了,尤其当训练样本很少而属性数目有很多时。 如例2,如果训练数据中属性“婚姻状况”统计如下而其它数据不变: 属性“婚姻状况” 离婚 单身 已婚 Total 类别C1(no) 类别C2(yes) 0 3 4 7 1 2 0 3 相应的类条件概率为:P(离婚|C1)?0,P(离婚|C2)?1/3?0.333

120\, 判断其类别,计算如下: 给定一个新样本X?{\有房,离婚,74*0**0.0072?0 1073P2?P(X|C2)?*0*0*1.2152*10?9?0

10P1?P(X|C1)?此时将无法识别新样本。解决该问题的途径是使用m估计(m-estimate)方法来估计条件概率:

P(xj|Ci)?nc?mp (6)

n?mn 为类Ci中实例总数,nc为类Ci的训练样本中取值为xj的样本数,m称为等价样本

大小的参数,而p为用户指定的参数。如例2,P(已婚|C2)?0,即训练样本中没有含该属性值的样本,使用m估计,m?3,p?1/3则条件概率不再是0,而是

P(已婚|C2)?0?3*1/3?1/6

3?3

如果假设对类Yes的所有属性p?1/3,对类No的所有属性p?2/3,m=3,则可以重新修改各条件概率,并能对任意新样本进行判断。

本文来源:https://www.bwwdw.com/article/hrs7.html

Top