朴素贝叶斯的应用

时间:2021-04-20 21:24:40

Nai¨veBayes

                             By

一、贝叶斯定理

X 是数据元组。在贝叶斯中, X 看作是“证据”。通常, X n 个属性集的测量值描述。令 H 为某种假设,如数据元组 X 属于某个特定类 C 。对于分类问题,希望确定给定“证据”或观测数据元组 X ,假设 H 成立的概率 P(H|X) 。换言之,给定 X 的属性描述,找出元组 X 属于类 C 的概率。

P(H|X) 是后验概率,或在条件 X 下, H 的后验概率。例如,假设数据元组事件限于分别有属性 age income 描述的用户,而 X 是一位25岁的小伙子,其收入是 5000 元。令 H 为某种假设,如顾客将购买计算机。则 P(H|X) 反映我们知道顾客的年龄和收入时,顾客 X 将购买计算机的概率。

相反 P(H) 为先验概率。对于我们的例子,他是任意给定客户购买计算机的概率,而不管他们年龄、收入或任何其它信息。后验概率 P(H|X) 比先验概率 P(H) 基于更多的信息。
P(X|H) 是条件 H 下, X 的后验概率,也就是说算的已经购买计算机的用户里性别和收入的概率。

我们通常使用贝叶斯公式进行计算。贝叶斯定理是:

P(H|X)=P(X|H)×P(H)P(X)

我们假定数据如下,暂时先设定一个维度性别:

合计
购买 200 80
不购买 80 140
合计 280 220

先确定事件为:设定用户为男性记为事件 A ,购买记为事件 B .
我们期待有这样的数值,新来客户为男性时,他购买的概率是多少?是女性时购买的概率是多少?对等事件我们分别记作 P(B|A),P(B|A¯)

按照理论,我们通常需要一个先验概率, P(A|B),P(A¯|B),P(A|B¯),P(A¯|B¯) ,以及 P(B) 的概率。
我们可以用已有的数据计算出先验概率:


购买条件下男性用户的概率 P(A|B) P(A|B)=200280=57


不购买条件下男性用户的概率 P(A|B¯) P(A|B¯)=80220=411


购买条件下女性用户的概率 P(A¯|B) P(A¯|B)=80280=27


不购买条件下女性用户的概率 P(A¯|B¯) P(A¯|B¯)=140220=711


购买的概率 P(B) : P(B)=280500=1425

有了先验概率之后,我们就可以计算出我们需要的后验概率,也即来了一个男性用户或者女性用户,我们知道他购买的概率。


男性购买的概率: P(B|A)=P(AB)P(A)=P(A|B)×P(B)P(A|B)+P(A|B¯)=57×142557+411=154415


女性购买的概率: P(B|A¯)=P(A¯B)P(A¯)=P(A¯|B)×P(B)P(A¯|B)+P(A¯|B¯)=27×142527+711=3081775

二、注意点

1、属性是连续的而不是分类的

在实际生活中,属性中大多会存在连续的,比如鱼的长度,人的年龄,借款的额度,借款的次数等等。贝叶斯为了解决这一问题,我们通常假设这一属性服从正态分布又称高斯分布:

f(x)=12πσe(xμ)22σ2

其中 μ 是属性的期望, σ2 为属性的方差。


属性的期望我们可以用 E(X)=ni=0nipi 来计算。


属性的方差我们可以用 σ2=ni=0(XX¯)2


例如我们要计算年龄为25岁小伙子的概率: P{X=25}=P{X<=25}P{X<=24}


根据微积分得到 f(x) 的分布函数 F(X)=12πσxe(tμ)22σ2dt ,由于期望和方差是已知的故而可以算出概率。

2、出现维度分类为0的情况

我们对照上边的实例假设一个这样的情况,假设商品电脑非常潮,而男生都喜欢电脑,所有的男性都买了此电脑,也就是说没有购买的男性的人数是0。
这时会出现一个问题。 P(A|B¯)=0
那么我现在再来计算一下 P(B¯|A) ,也即来了一个男性用户,我们预测他不购买的概率。


P(B¯|A)=P(A|B¯)×P(B¯)P(A)=0×P(B¯)P(A)=0


显然,这不符合逻辑。为了解决这一问题,拉普拉斯校准应运而生。我们通常选取的样本数量不会太小,否则不具有说服力,在此的基础上,我们对各个维度的每个分类上,给样本量+1,在计算各个维度的分类的时候分母加上维度的分类数。


选取上边的例子,各个维度的样本数都加1,于是我们得到下表:

合计
购买 201 81
不购买 81 141
合计 282 222

然后我们就采用校准之后的数据来获取先验概率,即可。

3、多维度的拓展

首先我们要明白这样一个事实,我们在建立模型的时候往往会有不止一两个维度,少则十几个,多则上百。而朴素贝叶斯的要求比较苛刻,我们在建立模型之初就假定各个条件相互独立,所以在解决多维度的时候,我们可以把各个维度之间看成相互独立事件。采用概率论上的独立事件算法。


假定事件 A 和事件 B 相互独立,则有 P(AB)=P(A)×P(B) 。有了这一公式,我们在解决多维度的时候会方便很多。


P(ABCDE)=P(A)×P(B)×P(C)×P(D)×P(E)

这里的 ABCDE 就可以看成我们模型中的每一个维度,从而来计算出我们的先验概率,以求的后验概率。

4、维度之间不独立

在实际生活中,很难说某两个维度之间是绝对独立,而朴素贝叶斯采取的条件就是假设各个维度独立,这样难免让我们生疑,比方说学历这个维度和收入就存在一定关系,高学历决定高收入不是完全正确,但只至少可以知道这句话说明了这两个维度之间存在必然的关系。那么如何说服众人,证明两个维度之间有无关系呢?
这就需要引入我们的相关分析,对于标称数据我们采用 χ2 检验,而对于数值属性我们使用相关系数和协方差,他们都是评估一个属性的值如何随另一个变化。


标称型:一般在有限的数据中取,而且只存在特定的结果[‘类1’,‘类2’,‘类3’](一般用于分类)


数值型:可以在无限的数据中取,而且数值比较具体化,例如1.001,2.002….这种值(一般用于回归分析)

1)、协方差和相关系数

我们知道方差是反映一个变量波动的大小。对于二维随机变量 (X,Y) ,如果有 X,Y 相互独立,则有 E{[XE(X)][YE(Y)]}=0 (证法详见概率论方差性质3和切比雪夫不等式。)
这就意味着如果 X Y 不相互独立,而是存在某种关系的时候 E{[XE(X)][YE(Y)]}0

E{[XE(X)][YE(Y)]} 称为随机变量 X Y 的协方差。记为 Cov(X,Y) ,即:

Cov(X,Y)=E{[XE(X)][YE(Y)]}
,而
ρXY=Cov(X,Y)D(X)D(Y)
称为随机变量 X Y 的相关系数。

我们先来引入两个概念:


1、方差 E{[XE(X)]2} ,表示各个 X 与期望值的差值的平方的累和,通常记为 D(X) , D(X) 记作标准差。实在不懂的请参考概率论。


2、 E(X) 记作变量 X 的期望值,计算方法为 X 的各个样本与概率的乘积的累和。

通常我们使用如下公式来计算两个变量的协方差: Cov(X,Y)=E(XY)E(X)E(Y) 。而 E(XY) 我们通常采用二重积分来求, E(X) E(Y) 的算法就比较简单了,这里不在赘述。如果求得协方差不为0则说明 X,Y 是不独立的。同样我们知道了相关系数的算法,也就知道了 X,Y 不相关时,相关系数为0.


这里简要说明一下 |ρXY|<=1 |ρXY| 越大说明 X,Y 的相关性越高(证法略)。

2)、卡方检验

在讲述卡方检验之前,我们先来引入卡方分布:


X21,X21,...,X2n 是来自总体 N(01) 的样本,则称统计量 χ2=X21+X21+...+X2n 是服从*度为 n χ2 的分布,记作 χ2χ2(n) ,( N 表示的是正态分布)。

我们采取我们假设的例子,学历与收入的关系做一张图表,来简述一下实现的过程:

doctor graduate undergraduates specialty total
high 150 100 70 40
mid 160 170 230 110
low 40 50 60 90
total 350 320 360 240

对于标称数据,两个属性 A B 之间的相关联系可以通过 χ2 (卡方)检验发现。假设A有c个不同值 a1,a2,,ac ,B有r个不同值
b1,b2,,br 。用A和B描述的数据元组可以用一个相依表显示,期中A的c个值构成列,B的r个值构成行。令( Ai,Bj )表示属
性A取值 ai 、属性B取值 bj 的联合事件,即( A=ai,B=bj )。每个可能的( Ai,Bj )联合事件都在表中有自己的单元。
χ2 值可以用下式计算:

χ2=i=1cj=1r(oijeij)2eij

其中, oij 是联合事件( Ai,Bj )的观测频度(即实际计数),而 eij 是( Ai,Bj )的期望频度,
eij=count(A=aj)×count(B=bj)n

其中,n是数据元组的个数, count(A=aj) 是A上具有值 ai 的元组个数,而 count(B=bj) 是B上具有值 bj 的元组个数。


χ2 统计检验假设A和B是独立的。检验基于显著水平,具有*度 (r1)×(c1)

博士的高收入期望频率: e11=count(doctor)×count(high)n=350×3601270=99.21


博士的中收入期望频率: e11=count(doctor)×count(mid)n=350×6701270=184.64


博士的低收入期望频率: e11=count(doctor)×count(low)n=350×2401270=66.14


这里就展示这么多,我已经通过excel计算除了一个详细的期望频率列表,如下:

doctor graduate undergraduates specialty
high 99.21 90.71 102.05
mid 184.65 168.82 189.92
low 66.14 60.47 68.03

单个频率的 χ2 值如下表:

doctor graduate undergraduates specialty
high 26.00 0.95 10.06
mid 3.29 0.01 8.46
low 10.33 1.81 0.95

χ2=(15099.21)299.21+(160184.65)2184.65+(4066.14)266.14+...+(9045.35)245.35


=26.00+0.95+10.06+11.55+3.29+0.01+8.46+2.18+10.33+1.81+0.95+43.95=119.54

当前的*度为: (41)×(31)=6

我们可以查找卡发分布表,这里我截取一段概率论课本后边的表,选取*度为6的,我们来下看:

n α 0.995 0.99 0.975 0.95 0.90 0.10 0.05 0.025 0.01 0.005
6 拒绝值 0.676 0.827 1.237 1.635 2.204 10.645 12.592 14.440 16.812 18.548

0.005 的置信水平下,拒绝假设的值是 18.548 ,由于我们计算的值大于该值,因此我们可以拒绝学历和收入独立的假设,并断言对于给定的人群,这两个属性是(强)相关的。

5、条件不独立怎么办?

在维度相关之后,我们的朴素贝叶斯的算法似乎就有点问题了,不能正常使用独立事件的概率,如果强行使用,难免会给结果带来较大的误差,因此我们需要一种新的算法来解决维度不独立的情况。而这种新的算法就是—贝叶斯信念网络,那么信念网络如何处理维度间的不独立呢?信念网络和神经网络有什么相似之处呢?请听下回讲解。

本章完