ch04: 朴素贝叶斯法
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法
- 对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;
- 然后基于此模型,对给定的输入 x ,利用贝叶斯定理求出后验概率最大的输出 y .
0. 贝叶斯定理
贝叶斯思维
贝叶斯定理:逆概率思维
贝叶斯分类
1. 朴素贝叶斯法的学习与分类
基本方法
-
贝叶斯定理中的条件概率分布
P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . , X ( n ) = x ( n ) ∣ Y = c k ) , k = 1 , 2 , . . . K P(X=x|Y=c_k)=\\P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k),k=1,2,...K P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck),k=1,2,...K有指数级数量的参数,其估计实际是不可行的
-
因此朴素贝叶斯对条件概率分布作了条件独立性的假设:
P ( X = x ∣ Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X=x|Y=c_k)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k) P(X=x∣Y=ck)=j=1∏nP(X(j)=x(j)∣Y=ck)条件独立假设等于是说用于分类的特征在类确定的条件下都是条件独立的.这一假设使朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率.
-
朴素贝叶斯法分类时,对给定的输入 x,通过学习到的模型计算后验概率分布 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ck∣X=x) ,将后验概率最大的类作为 x 的类输出:
y = f ( x ) = a r g m a x 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\;\underset {c_k}{max}\;\frac{P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)} y=f(x)=argckmax∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck)因为分母表示的是输入 x 发生的概率,是不变的,因此分类器可以简化为:
y = f ( x ) = a r g m a x c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y=f(x)=arg\;\underset {c_k}{max}\;{P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)} y=f(x)=argckmaxP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
后验概率最大化的含义
- 朴素贝叶斯法将实例分到后验概率最大的类中.这等价于期望风险最小化.
2. 朴素贝叶斯法的参数估计
极大似然估计
在朴素贝叶斯法中,学习意味着估计 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 , k = 1 , 2 , . . . , K P(Y=c_k)=\frac{\sum^N_{i=1}I(y_i=c_k)}{N},k=1,2,...,K P(Y=ck)=N∑i=1NI(yi=ck),k=1,2,...,K -
设第 j 个特征可能取值的集合为 { a j 1 , a j 2 , … , a j S j } \{a_{j1},a_{j2},…,a_{jS_j}\} {aj1,aj2,…,ajSj} ,
对于条件概率 P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)}=x^{(j)}|Y=c_k) P(X(j)=x(j)∣Y=ck) ,极大似然估计是
P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S j ; k = 1 , 2 , . . . , K P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum^N_{i=1}I(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum^N_{i=1}I(y_i=c_k)}\\j=1,2,...,n;l=1,2,...,S_j;k=1,2,...,K P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck)j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K
学习与分类算法
下面给出朴素贝叶斯法的学习与分类算法
- 朴素贝叶斯算法
- 输入:训练数据集 T;实例 x
- 输出:实例 x 的分类
- 步骤(具体公式前文已展示):
(1)计算先验概率及条件概率
(2)对于给定的实例 x,计算后验概率
(3)后验概率最大化,确定实例 x 的类
贝叶斯估计
用极大似然估计可能会出现所要估计的概率值为 0 的情况.这时会影响到后验概率的计算结果,使分类产生偏差.解决这一问题的方法是采用贝叶斯估计.
-
条件概率的贝叶斯估计是
P λ ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ P_λ(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum^N_{i=1}I(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum^N_{i=1}I(y_i=c_k)+S_j\lambda} Pλ(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=ajl,yi=ck)+λ式中 λ ≥ 0 .等价于在随机变量各个取值的频数上赋予一个正数.当 λ=0 时就是极大似然估计.常取 λ=1,这时称为拉普拉斯平滑(Laplace smoothing).
-
同样, 先验概率的贝叶斯估计是
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ P(Y=c_k)=\frac{\sum^N_{i=1}I(y_i=c_k)+λ}{N+Kλ} P(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ