NBC模型【机器学习】
一、什么是贝叶斯算法?
贝叶斯方法根基于贝叶斯原理,运用概率统计手段对样本数据集实施分类。由于其牢固的数学支撑,贝叶斯分类算法的误判率是很低的。该方法的特点在于融合先验概率与后验概率,这样既克服了仅依赖先验概率可能带来的主观偏见,又规避了仅依据样本信息可能导致的过度拟合问题。在大型数据集的应用场景中,贝叶斯分类算法展现出卓越的准确性,且算法结构相对简洁明了。
二、 贝叶斯要解决的问题
正向概率: 假设袋子里有M个白球,N个黑球,伸手去摸出一个球,则摸到白球的概率是多少。
显然正向概率很好计算:概率为
M
M
+
N
\frac{M}{M+N}
M+NM
逆向概率: 如果在不知道袋子里黑球和白球的比例的前提下,随机摸出几个球,统计这些球的颜色后,根据黑球和白球的个数对袋子里黑球和白球的比例做出推测。
三、公式
P ( H ∣ X ) = P ( X ∣ H ) ∗ P ( H ) P ( X ) P(H | X)= \frac{P(X | H)*P(H)}{P(X)} P(H∣X)=P(X)P(X∣H)∗P(H)
P
(
H
):
P(H):
P(H):是先验概率,P(H)是独立于X的
P
(
X
):
P(X):
P(X):样本数据被观察的概率
P
(
X
∣
H
):
P(X | H):
P(X∣H):代表假设H成立的情况下,观察到X的概率
P
(
H
∣
X
):
P(H | X):
P(H∣X):后验概率,或称条件X下H的后验概率
朴素贝叶斯分类就是假定一个属性值对给定类的影响独立于其他属性的值。
四、贝叶斯原理
问题:
-
若某一学校中男生人数占60%,女生人数占40%
-
男生总是短发,女生则一半长发一半短发
-
正向概率:随机选取一个学生,则他(她)短发的概率和长发的概率是多少
-
逆向概率:面前100米有一位同学在往前走,你只能看到他(她)的背影,因此你只能看到他(她)是长发还是短发,而无法确定他(她)的性别。你是否能够推断出他(她)是女生的概率是多大
-
求:该学校中短发的同学有多少女生?
解:
假设学校中一共有Y个同学
- 短发的(男生): Y ∗ P ( B o y ) ∗ P ( S h o r t h a i r ∣ B o y ) Y*P(Boy)*P(Short hair | Boy) Y∗P(Boy)∗P(Shorthair∣Boy)
- 短发的(女生): Y ∗ P ( G i r l ) ∗ P ( S h o r t h a i r ∣ G i r l ) Y*P(Girl)*P(Short hair | Girl) Y∗P(Girl)∗P(Shorthair∣Girl)
短发学生的总数: Y ∗ P ( B o y ) ∗ P ( S h o r t h a i r ∣ B o y ) + Y ∗ P ( G i r l ) ∗ P ( S h o r t h a i r ∣ G i r l ) Y*P(Boy)*P(Short hair | Boy)+Y*P(Girl)*P(Short hair | Girl) Y∗P(Boy)∗P(Shorthair∣Boy)+Y∗P(Girl)∗P(Shorthair∣Girl)
短发中女生的人数为
P
(
S
h
o
r
t
h
a
i
r
/
G
i
r
l
)
/
P
(
S
h
o
r
t
h
a
i
r
)
P(Short hair/Girl)/P(Short hair)
P(Shorthair/Girl)/P(Shorthair)
即下面的公式:
P
(
G
i
r
l
∣
S
h
o
r
t
h
a
i
r
)
=
Y
∗
P
(
G
i
r
l
)
∗
P
(
S
h
o
r
t
h
a
i
r
∣
G
i
r
l
)
Y
∗
P
(
B
o
y
)
∗
P
(
S
h
o
r
t
h
a
i
r
∣
B
o
y
)
+
Y
∗
P
(
G
i
r
l
)
∗
P
(
S
h
o
r
t
h
a
i
r
∣
G
i
r
l
)
P(Girl | Short hair)=\frac{Y*P(Girl)*P(Short hair | Girl)}{ Y*P(Boy)*P(Short hair | Boy)+Y*P(Girl)*P(Short hair | Girl)}
P(Girl∣Shorthair)=Y∗P(Boy)∗P(Shorthair∣Boy)+Y∗P(Girl)∗P(Shorthair∣Girl)Y∗P(Girl)∗P(Shorthair∣Girl)
化简为: P ( G i r l ∣ S h o r t h a i r ) = P ( G i r l ) ∗ P ( S h o r t h a i r ∣ G i r l ) P ( B o y ) ∗ P ( S h o r t h a i r ∣ B o y ) + P ( G i r l ) ∗ P ( S h o r t h a i r ∣ G i r l ) P(Girl | Short hair)=\frac{P(Girl)*P(Short hair | Girl)}{P(Boy)*P(Short hair | Boy)+P(Girl)*P(Short hair | Girl)} P(Girl∣Shorthair)=P(Boy)∗P(Shorthair∣Boy)+P(Girl)∗P(Shorthair∣Girl)P(Girl)∗P(Shorthair∣Girl)
这样就可以通过贝叶斯公式根据短发人数和男女比例逆向的推出短发女生的人数。
五、贝叶斯分类练习
希望分类的样本:
X(age=‘<30’,income=‘medium’,student=‘yes’,credit_rating=‘fair’)
我们想要判断这个数据属于哪一类,即是否购买电脑;buys_computer是yes还是no
思路:
计算每一个类的
P
(
C
i
∣
X
)
=
P
(
X
∣
C
i
)
∗
P
(
C
i
)
P
(
X
)
P(Ci | X)=\frac{P(X | Ci)* P(Ci)}{P(X)}
P(Ci∣X)=P(X)P(X∣Ci)∗P(Ci)
Ci为每一个类别,X为希望分类的样本(这里C1代表购买电脑,C2代表没有购买电脑)。
-
先验概率
P(C1)=P(buys_computer=‘yes’)=9/14=0.222
P(C2)=P(buys_computer=‘no’)=5/14=0.357 -
条件概率
P(age<30 | buys_computer=‘yes’)=2/9=0.222
P(age<30 | buys_computer=‘no’)=3/5=0.600
P(income=‘medium’ | buys_computer=‘yes’)=4/9=0.444
P(income=‘medium’ | buys_computer=‘no’)=2/5=0.400
P(student=‘yes’ | buys_computer=‘yes’)=6/9=0.677
P(student=‘yes’ | buys_computer=‘no’)=1/5=0.200
P(credit_rating=fair | buys_computer=‘yes’)=6/9=0.667
P(credit_rating=fair | buys_computer=‘no’)=2/5=0.400 -
比较P(C1 | X)=P(X | C1)*P(C1)/ P(X)和P(C2 | X)=P(X | C2)*P(C2)/ P(X)
-
根据条件独立性假设得到:
P(X | buys_computer=‘yes’)=P(age<30 | buys_computer=‘yes’)*P(income=‘medium’ | buys_computer=‘yes’)*P(student=‘yes’ | buys_computer=‘yes’)*P(credit_rating=fair | buys_computer=‘yes’)=0.222*0.444*0.667*0.667=0.044
P(X | buys_computer=‘no’)=P(age<30 | buys_computer=‘no’)*P(income=‘medium’ | buys_computer=‘no’)*P(student=‘no’ | buys_computer=‘no’)*P(credit_rating=fair | buys_computer=‘no’)=0.600*0.400*0.200*03400=0.019
P(X | buys_computer=‘yes’)*P(buys_computer=‘yes’)=0.044*0.643=0.028
P(X | buys_computer=‘no’)*P(buys_computer=‘no’)=0.019*0.357=0.007
故对于样本X,根据贝叶斯分类预测buys_computer=‘yes’