朴素贝叶斯
这是我见过最NB的算法!因为它叫朴素贝叶斯(Naive Bayes,NB).与之前介绍的算法有所不同,NB是生成式算法,之前的为判别式算法!
-
生成式算法:对 p ( x ∣ y ) p(x|y) p(x∣y)和 p ( y ) p(y) p(y)进行建模,可以说是对 p ( x , y ) p(x,y) p(x,y)进行建模,求出 x , y x,y x,y的联合分布。
-
判别式算法:对 p ( y ∣ x ) p(y|x) p(y∣x)进行建模,相当于一个黑箱,给定一个数据集,直接根据数据集得到决策函数或规则。
NB是典型的生成式模型,利用训练数据集学习到 p ( x ∣ y ) p(x|y) p(x∣y)和 p ( y ) p(y) p(y)得到联合概率分布:
P ( X , Y ) = P ( Y ) P ( X ∣ Y ) P(X,Y)=P(Y)P(X|Y) P(X,Y)=P(Y)P(X∣Y)
大前提
NB的基本假设是条件独立性
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
1
,
X
(
2
)
=
x
2
,
.
.
.
,
X
(
n
)
=
x
n
∣
Y
=
c
k
)
P(X=x|Y=c_k)=P(X^{(1)}=x^1,X^{(2)}=x^2,...,X^{(n)}=x^n|Y=c_k)
P(X=x∣Y=ck)=P(X(1)=x1,X(2)=x2,...,X(n)=xn∣Y=ck)
由于这一假设,模型包含的条件概率的数量大为减少,NB的学习与预测大为简化,因而性能上大幅提升。不过也带来了一定的准确率问题。
表达式
朴素贝叶斯是利用贝叶斯定理与学到的联合概论进行预测的:
P ( Y ∣ X ) = P ( X , Y ) P ( X ) = P ( Y ) P ( X ∣ Y ) ∑ Y P ( Y ) P ( X ∣ Y ) P(Y|X)=\frac{P(X,Y)}{P(X)} = \frac{P(Y)P(X|Y)}{\sum_YP(Y)P(X|Y)} P(Y∣X)=P(X)P(X,Y)=∑YP(Y)P(X∣Y)P(Y)P(X∣Y)
测试集的结果为:
y
=
a
r
g
m
a
x
c
k
P
(
Y
=
C
K
)
∏
j
=
1
n
P
(
X
j
=
x
j
∣
Y
=
c
k
)
y=argmax_{c_k}P(Y=C_K)\prod_{j=1}^n P(X_j=x^{j}|Y=c_k)
y=argmaxckP(Y=CK)j=1∏nP(Xj=xj∣Y=ck)