Naïve Bayes
本节我们从最简单的朴素贝叶斯开始,一步步深入了解基于贝叶斯理论的分类器。
Bayesian Decision Theory
贝叶斯决策论是哦概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率已知的情况下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记 ——西瓜书
假设我们有一个数据集
D
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
…
(
x
n
,
y
n
)
}
D \ \ \{(x_1, y_1), (x_2,y_2) \dots (x_n, y_n)\}
D {(x1,y1),(x2,y2)…(xn,yn)},
y
i
y_i
yi表示
x
i
x_i
xi所属的类别。我们定义
λ
i
j
\lambda_{ij}
λij表示将属于第
i
i
i个类别的样本
x
x
x预测为第
j
j
j个类别的损失,那么我们可以基于后验概率
p
(
y
i
∣
x
)
p(y_i|x)
p(yi∣x)来获得损失的期望值,即
R
(
y
i
∣
x
)
=
∑
i
=
1
n
λ
i
j
P
(
y
j
∣
x
)
R(y_i|x)=\sum_{i=1}^n{\lambda_{ij}P(y_j|x)}
R(yi∣x)=i=1∑nλijP(yj∣x)
我们的任务是寻找一个判定准则
h
:
X
−
>
Y
h: \ X->Y
h: X−>Y(可以理解为模型),以最小化总体风险
R
(
h
)
=
E
x
[
R
(
h
(
x
)
∣
x
)
]
R(h) = E_{x}[R(h(x)|x)]
R(h)=Ex[R(h(x)∣x)]
显然,如果能最小化每一条样本的风险
R
(
h
(
x
)
∣
x
)
R(h(x)|x)
R(h(x)∣x),那么总体的风险肯定也就被最小化了。因此,贝叶斯判定准则(Bayesian decision rule)为:为最小化总体风险,只需要在每个样本上选择那个能使得条件风险
R
(
h
(
x
)
∣
x
)
R(h(x)|x)
R(h(x)∣x)最小的
h
h
h,即
h
∗
(
x
)
=
a
r
g
m
i
n
c
∈
y
R
(
h
(
x
)
∣
x
)
h^*(x) = argmin_{c\in{y}}R(h(x)|x)
h∗(x)=argminc∈yR(h(x)∣x)
特别的,如果我们的目标是最小化分类错误率,那么
λ
i
j
\lambda_{ij}
λij可以被定义为
λ
i
j
=
{
0
,
i
=
j
1
,
i
!
=
j
\lambda_{ij} = \begin{cases} 0, \ \ \ i=j \\ 1, \ \ \ i!=j \end{cases}
λij={0, i=j1, i!=j
那么此时的
R
(
y
∣
x
)
=
1
−
P
(
y
∣
x
)
R(y|x) = 1 - P(y|x)
R(y∣x)=1−P(y∣x),因此最小化风险也就等价于最大化后验概率
P
(
y
∣
x
)
P(y|x)
P(y∣x),这也就是为什么朴素贝叶斯分类器采用了这样的原理。
对于最大化后验概率 P ( y ∣ x ) P(y|x) P(y∣x),衍生出了两类方法,一种是直接对 p ( y ∣ x ) p(y|x) p(y∣x)进行建模来预测类别标签,这样的得到的是判别式模型;另一种是根据条件概率公式: p ( y ∣ x ) = p ( x , y ) / p ( x ) p(y|x) = p(x, y)/p(x) p(y∣x)=p(x,y)/p(x),这里的 p ( x ) p(x) p(x)是一个先验概率,因此对联合概率 p ( x , y ) p(x,y) p(x,y)建模,这样得到的就是生成式模型。
Naïve Bayes Classifier
接下来我们讲解一下朴素贝叶斯分类器。朴素贝叶斯分类器就是基于上面所介绍的原理,对联合概率进行建模,因此朴素贝叶斯分类器是一个生成式模型。当然,准确来说,朴素贝叶斯首先是运用了贝叶斯定理,即
P
(
y
∣
x
)
=
P
(
y
)
P
(
x
∣
y
)
P
(
x
)
P(y|x) = \frac{P(y)P(x|y)}{P(x)}
P(y∣x)=P(x)P(y)P(x∣y)
这其中,
p
(
x
)
p(x)
p(x)是一个归一化项,可以先不管;
p
(
y
)
p(y)
p(y)是一个先验概率,即类别
y
y
y出现的概率;
p
(
x
∣
y
)
p(x|y)
p(x∣y)是模型中的似然(由果推因),表示在已知类别为
y
y
y的条件下,样本
x
x
x出现的概率。首先,我们来看这个先验概率
p
(
y
)
p(y)
p(y),这个是好求的,计算公式为
P
(
y
)
=
∣
D
y
∣
∣
D
∣
D
y
表
示
类
别
标
记
为
y
的
样
本
集
合
,
D
表
示
全
集
P(y) = \frac{|D_y|}{|D|} \ \ \ \ \ \ D_y表示类别标记为y的样本集合,D表示全集
P(y)=∣D∣∣Dy∣ Dy表示类别标记为y的样本集合,D表示全集
但是难点在于计算似然
p
(
x
∣
y
)
p(x|y)
p(x∣y),因为这其实是一个关于
x
i
x_i
xi所有特征的一个联合概率分布,即
p
(
x
∣
y
)
=
p
(
x
(
1
)
,
x
(
2
)
,
…
,
x
(
m
)
∣
y
)
x
(
j
)
表
示
样
本
的
第
j
个
特
征
p(x|y)=p(x^{(1)},x^{(2)},\dots,x^{(m)}|y) \ \ \ \ x^{(j)}表示样本的第j个特征
p(x∣y)=p(x(1),x(2),…,x(m)∣y) x(j)表示样本的第j个特征
Attribute Conditional Independent Assumption
为了方便对似然进行建模,朴素贝叶斯进行了一个大胆的假设:样本
x
x
x的所有特征相互独立。基于这条假设,我们就可以写出似然的表达式:
P
(
x
∣
y
)
=
∏
j
=
1
m
P
(
x
(
j
)
∣
y
)
P(x|y) = \prod_{j=1}^mP(x^{(j)}|y)
P(x∣y)=j=1∏mP(x(j)∣y)
因此,我们最终的预测结果就是:
y
∗
=
a
r
g
m
a
x
P
(
y
)
∏
j
=
1
m
P
(
x
(
j
)
∣
y
)
y^* = argmax \ \ \ P(y)\prod_{j=1}^mP(x^{(j)}|y)
y∗=argmax P(y)j=1∏mP(x(j)∣y)
朴素贝叶斯其实是完全基于统计的模型,给定数据集,我们唯一要做的就是统计出
p
(
y
)
p(y)
p(y)和
p
(
x
(
j
)
∣
y
)
p(x^{(j)}|y)
p(x(j)∣y),这两个量其实就可以看作我们模型的参数,得到了模型参数以后,在做预测时,直接计算即可。
Smoothing
在实际预测过程中,我们可能会遇到未被观测到的组合,即数据集中特征
j
j
j没有在类别
y
y
y中出现过,会导致zero term,这在我们的
N
−
g
r
a
m
N-gram
N−gram模型中是非常常见的,因此我们采取的解决方法也是一致的,即Smoothing。
P
(
x
(
i
)
∣
y
)
=
∣
D
y
,
x
(
i
)
∣
+
1
∣
D
∣
+
V
D
y
,
x
i
表
示
D
y
中
第
i
个
特
征
取
值
为
x
(
i
)
的
样
本
集
合
,
V
表
示
特
征
i
可
能
的
取
值
总
数
P(x^{(i)}|y)=\frac{|D_{y,x^{(i)}}| + 1}{|D| + V} \ \ \ \ D_{y,x_i}表示D_{y}中第i个特征取值为x^{(i)}的样本集合,V表示特征i可能的取值总数
P(x(i)∣y)=∣D∣+V∣Dy,x(i)∣+1 Dy,xi表示Dy中第i个特征取值为x(i)的样本集合,V表示特征i可能的取值总数
Continuous Data
上面所介绍的都是基于离散数据的训练和预测,那么对于连续数据该如何处理呢?答案是将原来的概率值变为一个概率密度函数,通常我们会假设
P
(
x
i
∣
y
)
∼
N
(
μ
y
,
i
,
σ
y
,
i
2
)
P(x_i|y) \ \sim \ N(\mu_{y,i}, \sigma^2_{y,i})
P(xi∣y) ∼ N(μy,i,σy,i2),其中
μ
y
,
i
\mu_{y,i}
μy,i和
σ
y
,
i
2
\sigma^2_{y,i}
σy,i2分别表示类别
y
y
y中第
i
i
i个特征的均值和方差。因此,
P
(
x
i
∣
y
)
=
1
2
π
σ
y
,
i
e
x
p
(
−
(
x
i
−
μ
y
,
i
)
2
2
σ
y
,
i
2
)
P(x_i|y) = \frac{1}{\sqrt{2\pi \sigma_{y,i}}}exp(-\frac{(x_i-\mu_{y,i})^2}{2\sigma^2_{y,i}})
P(xi∣y)=2πσy,i1exp(−2σy,i2(xi−μy,i)2)