朴素贝叶斯
我们的分类模型中有M个样本,每个样本有N维,输出的类别有C类。
样本例如
(
X
1
1
,
X
2
1
,
X
3
1
.
.
.
X
n
1
,
Y
1
)
(X_1^1,X_2^1,X_3^1...X_n^1,Y_1)
(X11,X21,X31...Xn1,Y1)
(
X
1
2
,
X
2
,
X
3
2
.
.
.
X
n
2
,
Y
2
)
(X_1^2,X_2^,X_3^2...X_n^2,Y_2)
(X12,X2,X32...Xn2,Y2),从样本中我们可以得到先验概率
P
(
Y
)
P(Y)
P(Y)(K=1,2…C)及条件概率
P
(
X
∣
Y
)
P(X|Y)
P(X∣Y),然后得到联合概率为:
P
(
X
Y
)
P(XY)
P(XY),定义联合概率为
P
(
X
Y
)
=
P
(
Y
=
C
k
)
∗
P
(
X
=
x
∣
Y
=
C
k
)
=
P
(
Y
=
C
k
)
∗
P
(
X
=
(
x
1
,
x
2
,
.
.
.
x
n
)
∣
Y
=
C
k
)
P(XY) =P(Y=C_k)*P(X=x|Y=C_k)\\= P(Y=C_k)* P(X=(x_1,x_2,...x_n)|Y=C_k)
P(XY)=P(Y=Ck)∗P(X=x∣Y=Ck)=P(Y=Ck)∗P(X=(x1,x2,...xn)∣Y=Ck)
朴素贝叶斯假设
在这里我们假设X的n个维度之间互相独立,得到 P ( X = ( x 1 , x 2 , . . . x n ) ∣ Y = C k ) = P ( X 1 = x 1 ∣ Y = C k ) P ( X 2 = x 2 ∣ Y = C k ) ∗ P ( X n = x n ∣ Y = C k ) P(X=(x_1,x_2,...x_n)|Y=C_k)=P(X_1=x_1|Y=C_k)P(X_2=x_2|Y=C_k)*P(X_n=x_n|Y=C_k) P(X=(x1,x2,...xn)∣Y=Ck)=P(X1=x1∣Y=Ck)P(X2=x2∣Y=Ck)∗P(Xn=xn∣Y=Ck)
朴素贝叶斯原理
C
r
e
s
l
u
t
=
a
r
g
m
a
x
  
P
(
Y
∣
X
)
=
P
(
X
∣
Y
)
∗
P
(
Y
)
P
(
X
)
C_{reslut} =argmax\;P(Y|X)={P(X|Y)*P(Y)\over P(X)}
Creslut=argmaxP(Y∣X)=P(X)P(X∣Y)∗P(Y)
其中
P
(
Y
=
C
k
)
P(Y=C_k)
P(Y=Ck)是类别在训练集中中出现的频数,及
P
(
Y
=
C
k
)
=
m
c
k
m
P(Y=C_k)={m_{ck} \over m}
P(Y=Ck)=mmck其中
m
c
k
m_{ck}
mck是类别K出现的次数。
上式中由于分母都一样都是
P
(
X
)
P(X)
P(X),那么只要计算分子最大化即可。及
C
r
e
s
l
u
t
=
a
r
g
m
a
x
  
P
(
Y
∣
X
)
=
P
(
X
∣
Y
)
∗
P
(
Y
)
C_{reslut} =argmax\;P(Y|X)={P(X|Y)*P(Y)}
Creslut=argmaxP(Y∣X)=P(X∣Y)∗P(Y)由于朴素贝叶斯的独立性,得到新的计算公式
C
r
e
s
l
u
t
=
a
r
g
m
a
x
  
P
(
Y
∣
X
)
=
P
(
Y
)
∗
∏
j
=
1
n
P
(
X
=
x
j
∣
Y
=
C
k
)
C_{reslut} =argmax\;P(Y|X)={P(Y)*\prod_{j=1}^nP(X=x_j|Y=C_k)}
Creslut=argmaxP(Y∣X)=P(Y)∗j=1∏nP(X=xj∣Y=Ck)
对于
P
(
X
j
=
x
j
α
∣
Y
=
C
k
)
  
(
j
=
1
,
2
,
3...
n
)
P(X_j=x_{j\alpha}|Y=C_k) \; (j=1,2,3...n)
P(Xj=xjα∣Y=Ck)(j=1,2,3...n),对于输入样本的每一特征个数不同,我们这里默认每一个特征的选择都是是特征
α
\alpha
α. 对于后验概率中需要后验的就是对于每一个特征的不同选择。
在这里对于每个特征的的不同输入值有三种计算方案:
- 如果该特征是离散值:
P ( X j = x j α ∣ y = C k ) =    x j α + λ m k + n λ P(X_j =x_{j\alpha}|y=C_k)=\;{x_{j\alpha}+\lambda\over{m_k+n\lambda} } P(Xj=xjα∣y=Ck)=mk+nλxjα+λ
其中 λ \lambda λ是拉普拉斯平滑参数,n是 X j X_j Xj的类别个数
sklearn中所对应的类是MultinomialNB- 是稀疏的二项式离散值:
P ( X j = x j α ∣ y = C k ) =    P ( j ∣ Y = C k ) X j α + ( 1 − P ( j ∣ Y = C k ) ) ( 1 − X j α ) P(X_j =x_{j\alpha}|y=C_k)=\;P(j|Y=C_k)X_{j\alpha}+(1-P(j|Y=C_k))(1-X_{j\alpha}) P(Xj=xjα∣y=Ck)=P(j∣Y=Ck)Xjα+(1−P(j∣Y=Ck))(1−Xjα)
其中 X j α X_{j\alpha} Xjα取值为0,1。 P ( j ∣ Y = C K ) P(j|Y=C_K) P(j∣Y=CK)为在类别为K是第j维特征出现1的概率
sklearn中所对应的类是BernoulliNB- 该特征是连续值,认为 X j X_j Xj在类别 C k C_k Ck中为正态分布
P ( X j = x j α ∣ y = C k ) =    1 2 π σ k 2 ∗ − ( X j − μ k ) 2 2 σ k 2 P(X_j =x_{j\alpha}|y=C_k)=\;{1\over{\sqrt{2\pi\sigma_k^2}}}*{-{(X_j-\mu_k)^2}\over2\sigma_k^2} P(Xj=xjα∣y=Ck)=2πσk21∗2σk2−(Xj−μk)2
其中 σ k 2 \sigma_k^2 σk2是在样本 C k C_k Ck中在该维度下所有的可取值的方差, μ k \mu_k μk是在样本 C k C_k Ck中所有可取值的均值(对于该样本的该特征我们的取值是 α \alpha α及 x j α x_{j\alpha} xjα,对于该特征值的取值为连续函数值)
sklearn中所对应的类是GaussianNB
算法过程
训练集m个样本,n个维度,输出类别有k类,每一个类别的个数有 m 1 , m 2 , . . . m k m_1,m_2,...m_k m1,m2,...mk。
-
计算类别的先验概率 P ( Y = C k ) = m k m P(Y=C_k)={m_k \over m} P(Y=Ck)=mmk
-
计算第k个类别的第j维特征取值为 α \alpha α时的条件概率 P ( X j α ∣ Y = C k ) P(X_{j\alpha}|Y=C_k) P(Xjα∣Y=Ck)其中 α \alpha α是要求的样本的第j维特征的取值,这个是需要在后验中给出的。
-
由于贝叶斯假设性,我们可以得到 P ( X ∣ Y ) = ∏ j = 1 n P ( X j ∣ Y = C k ) P(X|Y)=\prod_{j=1}^nP(X_j|Y=C_k) P(X∣Y)=j=1∏nP(Xj∣Y=Ck)那么对于输入样本X的分类 C r e s u l t C_{result} Cresult的结果是 C r e s u l t = a r g m a x    ∏ j = 1 n P ( X j ∣ Y = C k ) ∗ P ( Y = C k ) C_{result}=argmax\;\prod_{j=1}^nP(X_j|Y=C_k)*P(Y=C_k) Cresult=argmaxj=1∏nP(Xj∣Y=Ck)∗P(Y=Ck)
算法小结
- 对于小规模数据表现良好,处理多分类问题
- 对于缺失值不敏感,常用于文本分类
- 但需要知道先验概率,而且是通过数据提供的后验数据(就是样本在每个特征上的取值)及先验决定分类,如果先验有问题(数据不平均差距很大)时有错误