第四章 朴素贝叶斯法
-
简单理解:已有的大量样本告诉我们:“好吃的瓜”(类别)大部分(具体来说要用一个概率分布描述)是无籽的、甜的(特征),现在一个新样本过来,我们只能观察到它的特征是有/无籽的、甜/不甜的,要由此判断它是好吃还是不好吃的。一句话说,就是通过大量数据的统计规律得到由类别推特征的概率分布,然后通过贝叶斯公式对新样本由特征推类别。
-
设输入特征向量为 X X X ,类别为 Y Y Y ,所求概率分布为 P ( X = x ∣ Y = c k ) P(X = x \mid Y = c_k) P(X=x∣Y=ck),由于 X = x X = x X=x 意味着在所有特征分量上构成的某个组合,其数量为指数量级,想求出该分布是不可行的。朴素贝叶斯对该问题做的简化是假设所有特征分量间是条件独立的,这样只需求出在每个分量上 P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)} = x^{(j)} \mid Y = c_k) P(X(j)=x(j)∣Y=ck) 的分布,然后连乘即可求出某个特定组合的概率。
-
已知以上分布,再利用贝叶斯公式即可反转求出 P ( Y = c k ∣ X = x ) P(Y = c_k \mid X = x) P(Y=ck∣X=x) 的概率分布,即由特征推类别。取所有类别中概率最大的即为我们预测的类别。完整表达式:
y = f ( x ) = arg max c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) ∑ k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y = f(x) = \arg\max_{c_k}\frac{P(Y = c_k)\prod\limits_{j} P(X^{(j)} = x^{(j)} \mid Y = c_k)}{\sum\limits _{k} P(Y = c_k)\prod\limits_{j}P(X^{(j)} = x^{(j)} \mid Y = c_k)} y=f(x)=argckmaxk∑P(Y=ck)j∏P(X(j)=x(j)∣Y=ck)P(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
其中分母对于 c k c_k ck 是一个常量,我们只需要求概率最大值,故可以省略。 -
算法:
- 计算先验概率及条件概率(即:根据样本统计每个分类出现的概率和每个分类下各个特征的概率分布);
- 对于给定待预测实例
x
=
(
x
(
1
)
,
x
(
2
)
,
⋯
,
x
(
n
)
)
T
x = (x^{(1)}, x^{(2)}, \cdots, x^{(n)})^T
x=(x(1),x(2),⋯,x(n))T,计算各分类的概率分布:
P ( Y = c k ) ∏ j n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(Y = c_k) \prod\limits_{j}^{n} P(X^{(j)} = x^{(j)} \mid Y = c_k) P(Y=ck)j∏nP(X(j)=x(j)∣Y=ck)
3.求出概率最大的分类,即为实例 x x x 的预测分类。
-
一个问题:输入样本不充分可能导致某个条件概率 P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)} = x^{(j)} \mid Y = c_k) P(X(j)=x(j)∣Y=ck) 错误的取到0,导致整个连乘概率直接为0(即使 x x x 的其它分量概率可能很大),产生较大误差。解决思想也很简单:给每种情况概率的分子加一个常数 λ \lambda λ,对应的分母加k倍 λ \lambda λ(k为情况的个数),这样各情况概率之和仍为1,而且当样本足够大时,对结果的几乎没有影响。常取 λ = 1 \lambda=1 λ=1,这时称为拉普拉斯平滑 (Laplacian smoothing)。
P λ ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + k λ P_\lambda(Y=c_k) = \frac{\sum\limits_{i=1}^{N}I(y_i=c_k)+\lambda}{N+k\lambda} Pλ(Y=ck)=N+kλi=1∑NI(yi=ck)+λ