N
a
i
¨
v
e
B
a
y
e
s
Na\ddot{i}ve Bayes
Nai¨veBayes
一、贝叶斯定理
设 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(H∣X)。换言之,给定 X X X的属性描述,找出元组 X X X属于类 C C C的概率。
P ( H ∣ X ) P(H|X) P(H∣X)是后验概率,或在条件 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(H∣X)反映我们知道顾客的年龄和收入时,顾客 X X X将购买计算机的概率。
相反
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)是条件
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(H∣X)=P(X)P(X∣H)×P(H)
我们假定数据如下,暂时先设定一个维度性别:
购买与否 | 男 | 女 | 合计 |
---|---|---|---|
购买 | 200 | 80 | 280 |
不购买 | 80 | 140 | 220 |
合计 | 280 | 220 | 500 |
先确定事件为:设定用户为男性记为事件
A
A
A,购买记为事件
B
B
B.
我们期待有这样的数值,新来客户为男性时,他购买的概率是多少?是女性时购买的概率是多少?对等事件我们分别记作
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 ) = 200 280 = 5 7 P(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 ˉ ) = 80 220 = 4 11 P(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 ) = 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(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 ˉ ) = 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(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
)
=
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πσ1e−2σ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(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 ) = 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πσ1∫−∞xe−2σ2(t−μ)2dt,由于期望和方差是已知的故而可以算出概率。
2、出现维度分类为0的情况
我们对照上边的实例假设一个这样的情况,假设商品电脑非常潮,而男生都喜欢电脑,所有的男性都买了此电脑,也就是说没有购买的男性的人数是0。
这时会出现一个问题。
P
(
A
∣
B
ˉ
)
=
0
P(A|\bar{B})=0
P(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 ) = 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(A∣Bˉ)×P(Bˉ)=P(A)0×P(Bˉ)=0
显然,这不符合逻辑。为了解决这一问题,拉普拉斯校准应运而生。我们通常选取的样本数量不会太小,否则不具有说服力,在此的基础上,我们对各个维度的每个分类上,给样本量+1,在计算各个维度的分类的时候分母加上维度的分类数。
选取上边的例子,各个维度的样本数都加1,于是我们得到下表:
男 | 女 | 合计 | |
---|---|---|---|
购买 | 201 | 81 | 282 |
不购买 | 81 | 141 | 222 |
合计 | 282 | 222 | 504 |
然后我们就采用校准之后的数据来获取先验概率,即可。
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{[X−E(X)][Y−E(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{[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)]}称为随机变量 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{[X−E(X)][Y−E(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{[X−E(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 ∣ < = 1 |\rho_{XY}|<=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(0,1)的样本,则称统计量 χ 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表示的是正态分布)。
我们采取我们假设的例子,学历与收入的关系做一张图表,来简述一下实现的过程:
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 |
对于标称数据,两个属性
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=1∑cj=1∑reij(oij−eij)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) (r−1)×(c−1)。
博士的高收入期望频率: 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计算除了一个详细的期望频率列表,如下:
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 ) 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(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的,我们来下看:
n n n | α \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.005 0.005 0.005的置信水平下,拒绝假设的值是 18.548 18.548 18.548,由于我们计算的值大于该值,因此我们可以拒绝学历和收入独立的假设,并断言对于给定的人群,这两个属性是(强)相关的。
5、条件不独立怎么办?
在维度相关之后,我们的朴素贝叶斯的算法似乎就有点问题了,不能正常使用独立事件的概率,如果强行使用,难免会给结果带来较大的误差,因此我们需要一种新的算法来解决维度不独立的情况。而这种新的算法就是—贝叶斯信念网络,那么信念网络如何处理维度间的不独立呢?信念网络和神经网络有什么相似之处呢?请听下回讲解。