Nai¨veBayesNa\ddot{i}ve BayesNai¨veBayes
一、贝叶斯定理
设XXX是数据元组。在贝叶斯中,XXX看作是“证据”。通常,XXX用nnn个属性集的测量值描述。令HHH为某种假设,如数据元组XXX属于某个特定类CCC。对于分类问题,希望确定给定“证据”或观测数据元组XXX,假设HHH成立的概率P(H∣X)P(H|X)P(H∣X)。换言之,给定XXX的属性描述,找出元组XXX属于类CCC的概率。
P(H∣X)P(H|X)P(H∣X)是后验概率,或在条件XXX下,HHH的后验概率。例如,假设数据元组事件限于分别有属性ageageage和incomeincomeincome描述的用户,而XXX是一位25岁的小伙子,其收入是500050005000元。令HHH为某种假设,如顾客将购买计算机。则P(H∣X)P(H|X)P(H∣X)反映我们知道顾客的年龄和收入时,顾客XXX将购买计算机的概率。
相反P(H)P(H)P(H)为先验概率。对于我们的例子,他是任意给定客户购买计算机的概率,而不管他们年龄、收入或任何其它信息。后验概率P(H∣X)P(H|X)P(H∣X)比先验概率P(H)P(H)P(H)基于更多的信息。
P(X∣H)P(X|H)P(X∣H)是条件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(H∣X)=P(X)P(X∣H)×P(H)
我们假定数据如下,暂时先设定一个维度性别:
购买与否 | 男 | 女 | 合计 |
---|---|---|---|
购买 | 200 | 80 | 280 |
不购买 | 80 | 140 | 220 |
合计 | 280 | 220 | 500 |
先确定事件为:设定用户为男性记为事件AAA,购买记为事件BBB.
我们期待有这样的数值,新来客户为男性时,他购买的概率是多少?是女性时购买的概率是多少?对等事件我们分别记作P(B∣A),P(B∣Aˉ)P(B|A),P(B|\bar{A})P(B∣A),P(B∣Aˉ)
按照理论,我们通常需要一个先验概率,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(A∣B),P(Aˉ∣B),P(A∣Bˉ),P(Aˉ∣Bˉ),以及P(B)P(B)P(B)的概率。
我们可以用已有的数据计算出先验概率:
购买条件下男性用户的概率P(A∣B)P(A|B)P(A∣B):P(A∣B)=200280=57P(A|B)=\frac {200}{280}=\frac{5}{7}P(A∣B)=280200=75
不购买条件下男性用户的概率P(A∣Bˉ)P(A|\bar{B})P(A∣Bˉ):P(A∣Bˉ)=80220=411P(A|\bar{B})=\frac {80}{220}=\frac{4}{11}P(A∣Bˉ)=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(B∣A)=P(A)P(AB)=P(A∣B)+P(A∣Bˉ)P(A∣B)×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(B∣Aˉ)=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πσ1e−2σ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(X−Xˉ)2
例如我们要计算年龄为25岁小伙子的概率:P{X=25}=P{X<=25}−P{X<=24}P\{X=25\}=P\{X<=25\}-P\{X<=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πσ1∫−∞xe−2σ2(t−μ)2dt,由于期望和方差是已知的故而可以算出概率。
2、出现维度分类为0的情况
我们对照上边的实例假设一个这样的情况,假设商品电脑非常潮,而男生都喜欢电脑,所有的男性都买了此电脑,也就是说没有购买的男性的人数是0。
这时会出现一个问题。P(A∣Bˉ)=0P(A|\bar{B})=0P(A∣Bˉ)=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(A∣Bˉ)×P(Bˉ)=P(A)0×P(Bˉ)=0
显然,这不符合逻辑。为了解决这一问题,拉普拉斯校准应运而生。我们通常选取的样本数量不会太小,否则不具有说服力,在此的基础上,我们对各个维度的每个分类上,给样本量+1,在计算各个维度的分类的时候分母加上维度的分类数。
选取上边的例子,各个维度的样本数都加1,于是我们得到下表:
男 | 女 | 合计 | |
---|---|---|---|
购买 | 201 | 81 | 282 |
不购买 | 81 | 141 | 222 |
合计 | 282 | 222 | 504 |
然后我们就采用校准之后的数据来获取先验概率,即可。
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{[X−E(X)][Y−E(Y)]}=0(证法详见概率论方差性质3和切比雪夫不等式。)
这就意味着如果XXX和YYY不相互独立,而是存在某种关系的时候E{[X−E(X)][Y−E(Y)]}≠0E\{[X-E(X)][Y-E(Y)]\}\neq 0E{[X−E(X)][Y−E(Y)]}̸=0。
量E{[X−E(X)][Y−E(Y)]}E\{[X-E(X)][Y-E(Y)]\}E{[X−E(X)][Y−E(Y)]}称为随机变量XXX与YYY的协方差。记为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{[X−E(X)][Y−E(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)称为随机变量XXX与YYY的相关系数。
我们先来引入两个概念:
1、方差E{[X−E(X)]2}E\{[X-E(X)]^{2}\}E{[X−E(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∣<=1|\rho_{XY}|<=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(0,1)的样本,则称统计量χ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表示的是正态分布)。
我们采取我们假设的例子,学历与收入的关系做一张图表,来简述一下实现的过程:
doctor | graduate | undergraduates | specialty | total | |
---|---|---|---|---|---|
high | 150 | 100 | 70 | 40 | 360 |
mid | 160 | 170 | 230 | 110 | 670 |
low | 40 | 50 | 60 | 90 | 240 |
total | 350 | 320 | 360 | 240 | 1270 |
对于标称数据,两个属性AAA和BBB之间的相关联系可以通过χ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=1∑cj=1∑reij(oij−eij)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)(r−1)×(c−1)。
博士的高收入期望频率: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计算除了一个详细的期望频率列表,如下:
doctor | graduate | undergraduates | specialty | |
---|---|---|---|---|
high | 99.21 | 90.71 | 102.05 | 68.03 |
mid | 184.65 | 168.82 | 189.92 | 126.61 |
low | 66.14 | 60.47 | 68.03 | 45.35 |
单个频率的χ2\chi^{2}χ2值如下表:
doctor | graduate | undergraduates | specialty | |
---|---|---|---|---|
high | 26.00 | 0.95 | 10.06 | 11.55 |
mid | 3.29 | 0.01 | 8.46 | 2.18 |
low | 10.33 | 1.81 | 0.95 | 43.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(150−99.21)2+184.65(160−184.65)2+66.14(40−66.14)2+...+45.35(90−45.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(4−1)×(3−1)=6
我们可以查找卡发分布表,这里我截取一段概率论课本后边的表,选取自由度为6的,我们来下看:
nnn | α\alphaα | 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.0050.0050.005的置信水平下,拒绝假设的值是18.54818.54818.548,由于我们计算的值大于该值,因此我们可以拒绝学历和收入独立的假设,并断言对于给定的人群,这两个属性是(强)相关的。
5、条件不独立怎么办?
在维度相关之后,我们的朴素贝叶斯的算法似乎就有点问题了,不能正常使用独立事件的概率,如果强行使用,难免会给结果带来较大的误差,因此我们需要一种新的算法来解决维度不独立的情况。而这种新的算法就是—贝叶斯信念网络,那么信念网络如何处理维度间的不独立呢?信念网络和神经网络有什么相似之处呢?请听下回讲解。