朴素贝叶斯的应用

N a i ¨ v e B a y e s Na\ddot{i}ve Bayes Nai¨veBayes

                             By 浪ふ沏沙

一、贝叶斯定理

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

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

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

我们通常使用贝叶斯公式进行计算。贝叶斯定理是: P ( H ∣ X ) = P ( X ∣ H ) × P ( H ) P ( X ) P(H|X)=\frac {P(X|H)\times {P(H)}}{P(X)} P(HX)=P(X)P(XH)×P(H)

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

购买与否合计
购买20080280
不购买80140220
合计280220500

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

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


购买条件下男性用户的概率 P ( A ∣ B ) P(A|B) P(AB) P ( A ∣ B ) = 200 280 = 5 7 P(A|B)=\frac {200}{280}=\frac{5}{7} P(AB)=280200=75


不购买条件下男性用户的概率 P ( A ∣ B ˉ ) P(A|\bar{B}) P(ABˉ) P ( A ∣ B ˉ ) = 80 220 = 4 11 P(A|\bar{B})=\frac {80}{220}=\frac{4}{11} P(ABˉ)=22080=114


购买条件下女性用户的概率 P ( A ˉ ∣ B ) P(\bar{A}|B) P(AˉB) P ( A ˉ ∣ B ) = 80 280 = 2 7 P(\bar{A}|B)=\frac {80}{280}=\frac{2}{7} P(AˉB)=28080=72


不购买条件下女性用户的概率 P ( A ˉ ∣ B ˉ ) P(\bar{A}|\bar{B}) P(AˉBˉ) P ( A ˉ ∣ B ˉ ) = 140 220 = 7 11 P(\bar{A}|\bar{B})=\frac {140}{220}=\frac{7}{11} P(AˉBˉ)=220140=117


购买的概率 P ( B ) P(B) P(B): P ( B ) = 280 500 = 14 25 P(B)=\frac{280}{500}=\frac{14}{25} P(B)=500280=2514

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


男性购买的概率: P ( B ∣ A ) = P ( A B ) P ( A ) = P ( A ∣ B ) × P ( B ) P ( A ∣ B ) + P ( A ∣ B ˉ ) = 5 7 × 14 25 5 7 + 4 11 = 154 415 P(B|A)=\frac{P(AB)}{P(A)}=\frac{P(A|B)\times{P(B)}}{P(A|B)+P(A|\bar{B})}=\frac{\frac{5}{7}\times \frac{14}{25}}{\frac{5}{7}+\frac{4}{11}}=\frac{154}{415} P(BA)=P(A)P(AB)=P(AB)+P(ABˉ)P(AB)×P(B)=75+11475×2514=415154


女性购买的概率: P ( B ∣ A ˉ ) = P ( A ˉ B ) P ( A ˉ ) = P ( A ˉ ∣ B ) × P ( B ) P ( A ˉ ∣ B ) + P ( A ˉ ∣ B ˉ ) = 2 7 × 14 25 2 7 + 7 11 = 308 1775 P(B|\bar{A})=\frac{P(\bar{A}B)}{P(\bar{A})}=\frac{P(\bar{A}|B)\times{P(B)}}{P(\bar{A}|B)+P(\bar{A}|\bar{B})}=\frac{\frac{2}{7}\times \frac{14}{25}}{\frac{2}{7}+\frac{7}{11}}=\frac{308}{1775} P(BAˉ)=P(Aˉ)P(AˉB)=P(AˉB)+P(AˉBˉ)P(AˉB)×P(B)=72+11772×2514=1775308

二、注意点

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

在实际生活中,属性中大多会存在连续的,比如鱼的长度,人的年龄,借款的额度,借款的次数等等。贝叶斯为了解决这一问题,我们通常假设这一属性服从正态分布又称高斯分布: f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sqrt{2\pi }\sigma }e^{-\frac{(x-\mu )^{2}}{2\sigma ^{2}}} f(x)=2π σ1e2σ2(xμ)2
其中 μ \mu μ是属性的期望, σ 2 \sigma^2 σ2为属性的方差。


属性的期望我们可以用 E ( X ) = ∑ i = 0 n n i p i E(X)=\sum_{i=0}^{n} n_{i}p_{i} E(X)=i=0nnipi 来计算。


属性的方差我们可以用 σ 2 = ∑ i = 0 n ( X − X ˉ ) 2 \sigma^2 = \sum_{i=0}^{n}(X-\bar{X})^{2} σ2=i=0n(XXˉ)2


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


根据微积分得到 f ( x ) f(x) f(x)的分布函数 F ( X ) = 1 2 π σ ∫ − ∞ x e − ( t − μ ) 2 2 σ 2 d t F(X)=\frac{1}{\sqrt{2\pi }\sigma }\int_{-\infty }^{x}e^{-\frac{(t-\mu)^{2} }{2\sigma^2}}dt F(X)=2π σ1xe2σ2(tμ)2dt,由于期望和方差是已知的故而可以算出概率。

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

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


P ( B ˉ ∣ A ) = P ( A ∣ B ˉ ) × P ( B ˉ ) P ( A ) = 0 × P ( B ˉ ) P ( A ) = 0 P(\bar{B}|A)=\frac{P(A|\bar{B})\times {P(\bar{B})}}{P(A)}=\frac{0\times {P(\bar{B})}}{P(A)}=0 P(BˉA)=P(A)P(ABˉ)×P(Bˉ)=P(A)0×P(Bˉ)=0


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


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

合计
购买20181282
不购买81141222
合计282222504

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

3、多维度的拓展

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


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


P ( A B C D E ) = P ( A ) × P ( B ) × P ( C ) × P ( D ) × P ( E ) P(ABCDE)=P(A)\times P(B)\times P(C)\times P(D)\times P(E) P(ABCDE)=P(A)×P(B)×P(C)×P(D)×P(E)
这里的 A B C D E ABCDE ABCDE就可以看成我们模型中的每一个维度,从而来计算出我们的先验概率,以求的后验概率。

4、维度之间不独立

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


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


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

1)、协方差和相关系数

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

E { [ X − E ( X ) ] [ Y − E ( Y ) ] } E\{[X-E(X)][Y-E(Y)]\} E{[XE(X)][YE(Y)]}称为随机变量 X X X Y Y Y的协方差。记为 C o v ( X , Y ) Cov(X,Y) Cov(X,Y),即: C o v ( X , Y ) = E { [ X − E ( X ) ] [ Y − E ( Y ) ] } Cov(X,Y)=E\{[X-E(X)][Y-E(Y)]\} Cov(X,Y)=E{[XE(X)][YE(Y)]},而 ρ X Y = C o v ( X , Y ) D ( X ) D ( Y ) \rho_{XY}=\frac {Cov(X,Y)}{\sqrt{D(X)}\sqrt{D(Y)}} ρXY=D(X) D(Y) Cov(X,Y)称为随机变量 X X X Y Y Y的相关系数。

我们先来引入两个概念:


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


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

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


这里简要说明一下 ∣ ρ X Y ∣ &lt; = 1 |\rho_{XY}|&lt;=1 ρXY<=1 ∣ ρ X Y ∣ |\rho_{XY}| ρXY越大说明 X , Y X,Y X,Y的相关性越高(证法略)。

2)、卡方检验

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


X 1 2 , X 1 2 , . . . , X n 2 X_{1}^{2},X_{1}^{2},...,X_{n}^{2} X12,X12,...,Xn2是来自总体 N ( 0 , 1 ) N(0,1) N(01)的样本,则称统计量 χ 2 = X 1 2 + X 1 2 + . . . + X n 2 \chi^{2} = X_{1}^{2}+X_{1}^{2}+...+X_{n}^{2} χ2=X12+X12+...+Xn2是服从自由度为 n n n χ 2 \chi^{2} χ2的分布,记作 χ 2 ∼ χ 2 ( n ) \chi^{2}\sim \chi^{2}(n) χ2χ2(n),( N N N表示的是正态分布)。

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

doctorgraduateundergraduatesspecialtytotal
high1501007040360
mid160170230110670
low40506090240
total3503203602401270

对于标称数据,两个属性 A A A B B B之间的相关联系可以通过 χ 2 \chi ^2 χ2(卡方)检验发现。假设A有c个不同值 a 1 , a 2 , … , a c a_{1},a_{2},\ldots,a_{c} a1,a2,,ac,B有r个不同值
b 1 , b 2 , … , b r b_{1},b_{2},\ldots,b_{r} b1,b2,,br。用A和B描述的数据元组可以用一个相依表显示,期中A的c个值构成列,B的r个值构成行。令( A i , B j A_{i},B_{j} Ai,Bj)表示属
性A取值 a i a_{i} ai、属性B取值 b j b_{j} bj的联合事件,即( A = a i , B = b j A=a_{i},B=b_{j} A=ai,B=bj)。每个可能的( A i , B j A_{i},B_{j} Ai,Bj)联合事件都在表中有自己的单元。
χ 2 \chi ^2 χ2值可以用下式计算: χ 2 = ∑ i = 1 c ∑ j = 1 r ( o i j − e i j ) 2 e i j \chi ^2=\sum_{i=1}^{c}\sum_{j=1}^{r}\frac{(o_{ij}-e_{ij})^2}{e_{ij}} χ2=i=1cj=1reij(oijeij)2
其中, o i j o_{ij} oij是联合事件( A i , B j A_{i},B_{j} Ai,Bj)的观测频度(即实际计数),而 e i j e_{ij} eij是( A i , B j A_{i},B_{j} Ai,Bj)的期望频度,
e i j = c o u n t ( A = a j ) × c o u n t ( B = b j ) n e_{ij}=\frac{count(A=a_{j})\times count(B=b_{j})}{n} eij=ncount(A=aj)×count(B=bj)
其中,n是数据元组的个数, c o u n t ( A = a j ) count(A=a_{j}) count(A=aj)是A上具有值 a i a_{i} ai的元组个数,而 c o u n t ( B = b j ) count(B=b_{j}) count(B=bj)是B上具有值 b j b_{j} bj的元组个数。


χ 2 \chi ^2 χ2统计检验假设A和B是独立的。检验基于显著水平,具有自由度 ( r − 1 ) × ( c − 1 ) (r-1)\times (c-1) (r1)×(c1)

博士的高收入期望频率: e 11 = c o u n t ( d o c t o r ) × c o u n t ( h i g h ) n = 350 × 360 1270 = 99.21 e_{11}=\frac {count(doctor)\times count(high)}{n} = \frac {350 \times 360}{1270}=99.21 e11=ncount(doctor)×count(high)=1270350×360=99.21


博士的中收入期望频率: e 11 = c o u n t ( d o c t o r ) × c o u n t ( m i d ) n = 350 × 670 1270 = 184.64 e_{11}=\frac {count(doctor)\times count(mid)}{n} = \frac {350 \times 670}{1270}=184.64 e11=ncount(doctor)×count(mid)=1270350×670=184.64


博士的低收入期望频率: e 11 = c o u n t ( d o c t o r ) × c o u n t ( l o w ) n = 350 × 240 1270 = 66.14 e_{11}=\frac {count(doctor)\times count(low)}{n} = \frac {350 \times 240}{1270}=66.14 e11=ncount(doctor)×count(low)=1270350×240=66.14


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

doctorgraduateundergraduatesspecialty
high99.2190.71102.0568.03
mid184.65168.82189.92126.61
low66.1460.4768.0345.35

单个频率的 χ 2 \chi^{2} χ2值如下表:

doctorgraduateundergraduatesspecialty
high26.000.9510.0611.55
mid3.290.018.462.18
low10.331.810.9543.95

χ 2 = ( 150 − 99.21 ) 2 99.21 + ( 160 − 184.65 ) 2 184.65 + ( 40 − 66.14 ) 2 66.14 + . . . + ( 90 − 45.35 ) 2 45.35 \chi ^2=\frac{(150-99.21)^2}{99.21}+\frac{(160-184.65)^2}{184.65}+\frac{(40-66.14)^2}{66.14}+...+\frac{(90-45.35)^2}{45.35} χ2=99.21(15099.21)2+184.65(160184.65)2+66.14(4066.14)2+...+45.35(9045.35)2


= 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 =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 =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

当前的自由度为: ( 4 − 1 ) × ( 3 − 1 ) = 6 (4-1)\times (3-1)=6 (41)×(31)=6

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

n n n α \alpha α0.9950.990.9750.950.900.100.050.0250.010.005
6拒绝值0.6760.8271.2371.6352.20410.64512.59214.44016.81218.548

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

5、条件不独立怎么办?

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

本章完

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值