3-2 朴素贝叶斯分类算法及MATLAB实现
\quad \quad 贝叶斯学派的思想可以概括为先验概率+数据=后验概率。也就是说我们在实际问题中需要得到的后验概率,可以通过先验概率和数据一起综合得到。贝叶斯学习可以用于垃圾邮件分类,文本分类等。
1.基础知识
- 全概率公式: P ( B ) = ∑ i = 1 n P ( A i ) ∗ P ( B ∣ A i ) P(B)=\sum^{n}_{i=1}P(A_i)*P(B|A_i) P(B)=∑i=1nP(Ai)∗P(B∣Ai)
- 条件概率: P ( A ∣ B ) = P ( A ⋂ B ) P ( B ) P(A|B)=\frac{P(A\bigcap B)}{P(B)} P(A∣B)=P(B)P(A⋂B), P ( B ∣ A ) = P ( A ⋂ B ) P ( A ) P(B|A)=\frac{P(A\bigcap B)}{P(A)} P(B∣A)=P(A)P(A⋂B)
- 独立事件交概率: P ( A B ) = P ( A ⋂ B ) = P ( A ) ∗ P ( B ) P(AB)=P(A\bigcap B)=P(A)*P(B) P(AB)=P(A⋂B)=P(A)∗P(B)
- 贝叶斯公式:
P ( A ∣ B ) = P ( A ⋂ B ) P ( B ) = P ( A ) ∗ P ( B ∣ A ) P ( B ) = P ( A ) ∗ P ( B ∣ A ) ∑ i = 1 n P ( A i ) ∗ P ( B ∣ A i ) P(A|B)=\frac{P(A\bigcap B)}{P(B)}=\frac{P(A)*P(B|A)}{P(B)}=\frac{P(A)*P(B|A)}{\sum^{n}_{i=1}P(A_i)*P(B|A_i)} P(A∣B)=P(B)P(A⋂B)=P(B)P(A)∗P(B∣A)=∑i=1nP(Ai)∗P(B∣Ai)P(A)∗P(B∣A)
2. 分类依据
对应给定的样本X的特征向量
x
1
,
x
2
,
.
.
.
,
x
m
x_1,x_2,...,x_m
x1,x2,...,xm,我们假定特征之间是独立的;则该样本
X
X
X的类别
y
y
y的概率可以由贝叶斯公式得到:
P
(
y
∣
(
x
1
,
x
2
,
.
.
.
,
x
m
)
)
=
P
(
y
)
∗
P
(
(
x
1
,
x
2
,
.
.
.
,
x
m
∣
y
)
P
(
x
1
,
x
2
,
.
.
.
,
x
m
)
=
P
(
y
)
∗
∏
i
=
1
n
P
(
x
i
)
P
(
x
1
,
x
2
,
.
.
.
,
x
m
)
P(y|(x_1,x_2,...,x_m))=\frac{P(y)*P((x_1,x_2,...,x_m|y)}{P(x_1,x_2,...,x_m)}=\frac{P(y)*\prod_{i=1}^nP(x_i)}{P(x_1,x_2,...,x_m)}
P(y∣(x1,x2,...,xm))=P(x1,x2,...,xm)P(y)∗P((x1,x2,...,xm∣y)=P(x1,x2,...,xm)P(y)∗∏i=1nP(xi)
在给定样本的情况下,P(x_1,x_2,…,x_m)是常数,所以得到:
\quad \quad
P
(
y
∣
(
x
1
,
x
2
,
.
.
.
,
x
m
)
=
C
∗
P
(
y
)
∗
∏
i
=
1
n
P
(
x
i
)
P(y|(x_1,x_2,...,x_m)=C*P(y)*\prod_{i=1}^nP(x_i)
P(y∣(x1,x2,...,xm)=C∗P(y)∗∏i=1nP(xi)
于是问题转化为:
y
−
=
a
r
g
m
i
n
{
P
(
y
)
∗
∏
i
=
1
n
P
(
x
i
)
}
\overset{-}{y}=argmin\{P(y)*\prod_{i=1}^nP(x_i)\}
y−=argmin{P(y)∗∏i=1nP(xi)}
3.计算步骤
- 设 x = { a 1 , a 2 , . . . , a m } x=\{a_1,a_2,...,a_m\} x={a1,a2,...,am}为待分类项,其中 a a a为 x x x的一个特征属性
- 类别集合为 C = y 1 , y 2 , . . . , y n C={y_1,y_2,...,y_n} C=y1,y2,...,yn
- 分别计算 P ( y 1 ∣ x ) , P ( y 2 ∣ x ) , . . . . , P ( y n ∣ x ) P(y_1|x),P(y_2|x),....,P(y_n|x) P(y1∣x),P(y2∣x),....,P(yn∣x)的值(贝叶斯公式)
- 如果 P ( y k ∣ x ) = m a x { P ( y 1 ∣ x ) , P ( y 2 ∣ x ) , . . . . , P ( y n ∣ x ) } P(y_k|x)=max\{P(y_1|x),P(y_2|x),....,P(y_n|x)\} P(yk∣x)=max{P(y1∣x),P(y2∣x),....,P(yn∣x)},那么认为 x x x为 y k y_k yk类型
4.MATLAB Example
用fisher数据做算法实例可参考MATLAB官方函数算例
https://ww2.mathworks.cn/help/stats/fitcnb.html