朴素贝叶斯(Naive Bayes)是基于贝叶斯定理与特征条件假设的分类方法。
属于监督学习的生产模型。
对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
朴素贝叶斯实现简单,学习与预测的效率都很高,是一种常用的方法
特征条件独立假设
这一部分开始朴素贝叶斯的理论推导,从中你会深刻地理解什么是特征条件独立假设。
给定训练数据集(X,Y)其中每个样本X都包括n维特征,即
x
=
(
x
1
,
x
2
,
⋯
,
x
n
)
x=\left(x_{1}, x_{2}, \cdots, x_{n}\right)
x=(x1,x2,⋯,xn),类标记集合合含有K种类别,即
x
=
(
y
1
,
y
2
,
⋯
,
x
k
)
x=\left(y_{1}, y_{2}, \cdots, x_{k}\right)
x=(y1,y2,⋯,xk)
如果现在来了一个新样本x我们要怎么判断它的类别?从概率的角度来看,这个问题就是给定x,它属于哪个类别的概率更大。那么问题就转化为求解
P
(
y
1
∣
x
)
,
P
(
y
2
∣
x
)
,
P
(
y
k
∣
x
)
P\left(y_{1} | x\right), P\left(y_{2} | x\right), P\left(y_{k} | x\right)
P(y1∣x),P(y2∣x),P(yk∣x)中最大的那个,即求后验概率最大的输出:
arg
max
y
k
P
(
y
k
∣
x
)
\arg \max _{y_{k}} P\left(y_{k} | x\right)
argmaxykP(yk∣x)那
P
(
y
k
∣
x
)
P\left(y_{k} | x\right)
P(yk∣x)怎么求解?答案就是贝叶斯定理:
P
(
y
k
∣
x
)
=
P
(
x
∣
y
k
)
⋅
P
(
y
k
)
P
(
x
)
P\left(y_{k} | x\right)=\frac{P\left(x | y_{k}\right) \cdot P\left(y_{k}\right)}{P(x)}
P(yk∣x)=P(x)P(x∣yk)⋅P(yk)
根据全概率公式,可以进一步分解上式中的分母:
P
(
y
k
∣
x
)
=
P
(
x
∣
y
k
)
⋅
P
(
y
k
)
∑
i
=
1
n
P
(
x
∣
y
k
)
P
(
y
k
)
P\left(y_{k} | x\right)=\frac{P\left(x | y_{k}\right) \cdot P\left(y_{k}\right)}{\sum_{i=1}^{n} P\left(x | y_{k}\right) P\left(y_{k}\right)}
P(yk∣x)=∑i=1nP(x∣yk)P(yk)P(x∣yk)⋅P(yk)
条件概率
P
(
x
∣
y
k
)
=
P
(
x
1
,
x
2
,
⋯
,
x
n
∣
y
k
)
P\left(x | y_{k}\right)=P\left(x_{1}, x_{2}, \cdots, x_{n} | y_{k}\right)
P(x∣yk)=P(x1,x2,⋯,xn∣yk)
它的参数规模是指数数量级别的,假设第
i
i
i维特征
x
i
x_{i}
xi有
S
i
S_{i}
Si个,类别取值个数为k
k个,那么参数个数为
k
∏
j
=
1
n
S
j
k \prod_{j=1}^{n} S_{j}
k∏j=1nSj。这显然是不可行的。针对这个问题,朴素贝叶斯算法对条件概率分布做了独立性的假设,通俗地讲就是说假设各个维度的特征
x
=
(
x
1
,
x
2
,
⋯
,
x
n
)
x=\left(x_{1}, x_{2}, \cdots, x_{n}\right)
x=(x1,x2,⋯,xn)互相独立,由于这是一个较强的假设,朴素贝叶斯算法也因此得名。在这个假设的前提上,条件概率可以转化为:
P
(
x
∣
y
i
)
=
P
(
x
1
,
x
2
,
⋯
,
x
n
∣
y
i
)
=
∏
i
=
1
n
P
(
x
i
∣
y
i
)
P\left(x | y_{i}\right)=P\left(x_{1}, x_{2}, \cdots, x_{n} | y_{i}\right)=\prod_{i=1}^{n} P\left(x_{i} | y_{i}\right)
P(x∣yi)=P(x1,x2,⋯,xn∣yi)=i=1∏nP(xi∣yi)
这样参数规模就降到了
∏
i
=
1
n
S
i
k
\prod_{i=1}^{n} S_{i}k
∏i=1nSik以上就是针对条件概率所作出的特征条件独立性假设,至此,先验概率
P
(
y
k
)
P(y_{k})
P(yk)和条件概率
P
(
x
∣
y
k
)
P(x|y_{k})
P(x∣yk)的求解问题就都解决了
推导可得:
P
(
y
k
∣
x
)
=
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
∑
k
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
P\left(y_{k} | x\right)=\frac{P\left(y_{k}\right) \prod_{i=1}^{n} P\left(x_{i} | y_{k}\right)}{\sum_{k} P\left(y_{k}\right) \prod_{i=1}^{n} P\left(x_{i} | y_{k}\right)}
P(yk∣x)=∑kP(yk)∏i=1nP(xi∣yk)P(yk)∏i=1nP(xi∣yk)
于是朴素贝叶斯分类器可表示为:
f
(
x
)
=
arg
max
y
k
P
(
y
k
∣
x
)
=
arg
max
y
k
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
∑
k
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
f(x)=\arg \max _{y_{k}} P\left(y_{k} | x\right)=\arg \max _{y_{k}} \frac{P\left(y_{k}\right) \prod_{i=1}^{n} P\left(x_{i} | y_{k}\right)}{\sum_{k} P\left(y_{k}\right) \prod_{i=1}^{n} P\left(x_{i} | y_{k}\right)}
f(x)=argykmaxP(yk∣x)=argykmax∑kP(yk)∏i=1nP(xi∣yk)P(yk)∏i=1nP(xi∣yk)
因为对于所有的
y
k
y_{k}
yk,上式中的分母的值都是一样的.朴素贝叶斯最终表示为:
f
(
x
)
=
arg
max
y
k
P
(
y
k
∣
x
)
=
arg
max
y
k
{
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
f(x)=\arg \max _{y_{k}} P\left(y_{k} | x\right)=\arg \max _{y_{k}} \{P\left(y_{k}\right) \prod_{i=1}^{n}P(x_{i}|y_{k})
f(x)=argykmaxP(yk∣x)=argykmax{P(yk)i=1∏nP(xi∣yk)
极大似然估计
在朴素贝叶斯法中,学习意味着估计
P
(
Y
=
c
k
)
P(Y=c_{k})
P(Y=ck)和
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(X^{(j)}=x^{(j)}|Y=c_{k})
P(X(j)=x(j)∣Y=ck)可以用极大似然估计法估计相应的概率。先验概率
P
(
Y
=
c
k
)
P(Y=c_{k})
P(Y=ck)的极大似然估计是
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
)
N
P(Y=c_{k})=\frac{ \sum_{i=1}^{N}I(y_{i}=c_{k}))}{N}
P(Y=ck)=N∑i=1NI(yi=ck))
归结贝叶斯
-
朴素贝叶斯
P ( y ∣ x 1 , … , x n ) = P ( y ) P ( x 1 , … x n ∣ y ) P ( x 1 , … , x n ) P(y \mid x_1, \dots, x_n) = \frac{P(y) P(x_1, \dots x_n \mid y)} {P(x_1, \dots, x_n)} P(y∣x1,…,xn)=P(x1,…,xn)P(y)P(x1,…xn∣y) -
高斯贝叶斯
P ( x i ∣ y ) = 1 2 π σ y 2 exp ( − ( x i − μ y ) 2 2 σ y 2 ) P(x_i \mid y) = \frac{1}{\sqrt{2\pi\sigma^2_y}} \exp\left(-\frac{(x_i - \mu_y)^2}{2\sigma^2_y}\right) P(xi∣y)=2πσy21exp(−2σy2(xi−μy)2) -
多项分布朴素贝叶斯
θ ^ y i = N y i + α N y + α n \hat{\theta}_{yi} = \frac{ N_{yi} + \alpha}{N_y + \alpha n} θ^yi=Ny+αnNyi+α -
补充朴素贝叶斯
-
伯努利朴素贝叶斯
-
P ( x i ∣ y ) = P ( i ∣ y ) x i + ( 1 − P ( i ∣ y ) ) ( 1 − x i ) P(x_i \mid y) = P(i \mid y) x_i + (1 - P(i \mid y)) (1 - x_i) P(xi∣y)=P(i∣y)xi+(1−P(i∣y))(1−xi)