朴素贝叶斯的应用

本文深入浅出地介绍了朴素贝叶斯算法的基本原理及其应用场景,包括贝叶斯定理的应用、连续属性处理方法、维度分类为零的问题解决方案、多维度拓展及属性不独立情况下的处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nai¨veBayesNa\ddot{i}ve BayesNai¨veBayes

                             By 浪ふ沏沙

一、贝叶斯定理

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

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

相反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)是条件HHH下,XXX的后验概率,也就是说算的已经购买计算机的用户里性别和收入的概率。

我们通常使用贝叶斯公式进行计算。贝叶斯定理是: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

先确定事件为:设定用户为男性记为事件AAA,购买记为事件BBB.
我们期待有这样的数值,新来客户为男性时,他购买的概率是多少?是女性时购买的概率是多少?对等事件我们分别记作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)=200280=57P(A|B)=\frac {200}{280}=\frac{5}{7}P(AB)=280200=75


不购买条件下男性用户的概率P(A∣Bˉ)P(A|\bar{B})P(ABˉ)P(A∣Bˉ)=80220=411P(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)=80280=27P(\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ˉ)=140220=711P(\bar{A}|\bar{B})=\frac {140}{220}=\frac{7}{11}P(AˉBˉ)=220140=117


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

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


男性购买的概率:P(B∣A)=P(AB)P(A)=P(A∣B)×P(B)P(A∣B)+P(A∣Bˉ)=57×142557+411=154415P(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ˉ)=27×142527+711=3081775P(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)=12πσe−(x−μ)22σ2f(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=0nnipiE(X)=\sum_{i=0}^{n} n_{i}p_{i}E(X)=i=0nnipi 来计算。


属性的方差我们可以用σ2=∑i=0n(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)=12πσ∫−∞xe−(t−μ)22σ2dtF(X)=\frac{1}{\sqrt{2\pi }\sigma }\int_{-\infty }^{x}e^{-\frac{(t-\mu)^{2} }{2\sigma^2}}dtF(X)=2πσ1xe2σ2(tμ)2dt,由于期望和方差是已知的故而可以算出概率。

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

我们对照上边的实例假设一个这样的情况,假设商品电脑非常潮,而男生都喜欢电脑,所有的男性都买了此电脑,也就是说没有购买的男性的人数是0。
这时会出现一个问题。P(A∣Bˉ)=0P(A|\bar{B})=0P(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)=0P(\bar{B}|A)=\frac{P(A|\bar{B})\times {P(\bar{B})}}{P(A)}=\frac{0\times {P(\bar{B})}}{P(A)}=0P(BˉA)=P(A)P(ABˉ)×P(Bˉ)=P(A)0×P(Bˉ)=0


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


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

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

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

3、多维度的拓展

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


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


P(ABCDE)=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)
这里的ABCDEABCDEABCDE就可以看成我们模型中的每一个维度,从而来计算出我们的先验概率,以求的后验概率。

4、维度之间不独立

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


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


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

1)、协方差和相关系数

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

E{[X−E(X)][Y−E(Y)]}E\{[X-E(X)][Y-E(Y)]\}E{[XE(X)][YE(Y)]}称为随机变量XXXYYY的协方差。记为Cov(X,Y)Cov(X,Y)Cov(X,Y),即:Cov(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)]},而ρXY=Cov(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)称为随机变量XXXYYY的相关系数。

我们先来引入两个概念:


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


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

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


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

2)、卡方检验

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


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

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

doctorgraduateundergraduatesspecialtytotal
high1501007040360
mid160170230110670
low40506090240
total3503203602401270

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


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

博士的高收入期望频率:e11=count(doctor)×count(high)n=350×3601270=99.21e_{11}=\frac {count(doctor)\times count(high)}{n} = \frac {350 \times 360}{1270}=99.21e11=ncount(doctor)×count(high)=1270350×360=99.21


博士的中收入期望频率:e11=count(doctor)×count(mid)n=350×6701270=184.64e_{11}=\frac {count(doctor)\times count(mid)}{n} = \frac {350 \times 670}{1270}=184.64e11=ncount(doctor)×count(mid)=1270350×670=184.64


博士的低收入期望频率:e11=count(doctor)×count(low)n=350×2401270=66.14e_{11}=\frac {count(doctor)\times count(low)}{n} = \frac {350 \times 240}{1270}=66.14e11=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)299.21+(160−184.65)2184.65+(40−66.14)266.14+...+(90−45.35)245.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的,我们来下看:

nnnα\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.0050.0050.005的置信水平下,拒绝假设的值是18.54818.54818.548,由于我们计算的值大于该值,因此我们可以拒绝学历和收入独立的假设,并断言对于给定的人群,这两个属性是(强)相关的。

5、条件不独立怎么办?

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

本章完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值