机器学习原理及公式推导(四)朴素贝叶斯法

       朴素贝叶斯(naive Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法。

1、朴素贝叶斯法的学习与分类

       已知训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) ,   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} 由联合概率分布 P ( X , Y ) P(X,Y) 独立同分布产生,朴素贝叶斯法通过训练数据集 T T 学习联合概率分布 P ( X , Y ) P(X,Y) ,根据贝叶斯定理,可以通过学习先验概率分布 P ( Y ) P(Y) 及条件概率分布 P ( X Y ) P(X|Y) ,得到联合概率分布 P ( X , Y ) P(X,Y)
       先验概率分布 P ( Y ) P(Y) 较好求,公式为
P ( Y = c k ) , k = 1 , 2 ,   , K P(Y=c_k),\quad k=1,2,\cdots,K        对于条件概率分布 P ( X Y ) P(X|Y) ,原本的公式为
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)},\cdots,X^{(n)}=x^{(n)}|Y=c_k),\quad k=1,2,\cdots,K        但其估计实际是不可行的,因为这里的 x x 实际是 n n 维输入数据,若设其中各维 x ( j ) x^{(j)} 的可取值有 S j S_j 个, j = 1 , 2 ,   , n j=1,2,\cdots,n ,设 Y Y 可取值有 K K 个,那么 P ( X = x Y = c k ) P(X=x|Y=c_k) 的参数有 K j = 1 n S j K\prod_{j=1}^nS_j 个,这实在太多了。换个角度讲,如果 X Y X|Y 有太多种情况,则每种情况对应的样本就会过少,甚至很可能会出现在 Y = c k Y=c_k 的条件约束下,在样本中找不到满足 X = x X=x 的情况。
       因此朴素贝叶斯法对条件概率分布作了条件独立性假设,则条件概率分布公式可转化为
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 ( Y = c k X = x ) = P ( X = x Y = c k ) P ( Y = c k ) P ( X = x ) P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{P(X=x)}        由于
P ( X = x ) = k P ( X = x , Y = c k ) = k P ( X = x Y = c k ) P ( Y = c k ) P(X=x)=\sum_kP(X=x,Y=c_k)=\sum_kP(X=x|Y=c_k)P(Y=c_k)        因此后验概率分布可以转化为
P ( Y = c k X = x ) = P ( X = x Y = c k ) P ( Y = c k ) k P ( X = x Y = c k ) P ( Y = c k ) P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)}        代入条件独立性假设,可得
P ( Y = c k X = x ) = 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 ) P(Y=c_k|X=x)=\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)}        对给定的 x x ,计算出每个 c k c_k 的后验概率分布 P ( Y = c k X = x ) P(Y=c_k|X=x) ,取最大的一个作为分类结果,于是朴素贝叶斯分类器可表示为
y = f ( x ) = a r g 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_jP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)}        注意到分母对所有的 c k c_k 都是相同的,所以
y = a r g max c k P ( Y = c k ) j P ( X ( j ) = x ( j ) Y = c k ) y=arg\max_{c_k}P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)        上述取后验概率最大化规则,等价于期望风险最小化,具体证明如下:
       期望风险函数为
R e x p ( f ) = E [ L ( Y , f ( X ) ) ] R_{exp}(f)=E[L(Y,f(X))]        由于期望是对联合分布 P ( X , Y ) P(X,Y) 取的,因此取条件期望
R e x p ( f ) = E X k = 1 K [ L ( c k , f ( X ) ) ] P ( c k X ) R_{exp}(f)=E_X\sum_{k=1}^K[L(c_k,f(X))]P(c_k|X)        期望风险最小化即为
f ( x ) = a r g min y Y k = 1 K L ( c k , y ) P ( c k X = x ) f(x)=arg\min_{y\in Y}\sum_{k=1}^KL(c_k,y)P(c_k|X=x)        假设损失函数 L ( c k , y ) L(c_k,y) 选择0-1损失函数,上式可变为
f ( x ) = a r g min y Y k = 1 K P ( y ̸ = c k X = x ) = a r g max y Y P ( y = c k X = x ) f(x)=arg\min_{y\in Y}\sum_{k=1}^KP(y\not= c_k|X=x)=arg\max_{y\in Y}P(y=c_k|X=x)        这就得到了后验概率最大化准则。

2、朴素贝叶斯法的参数估计

       接下来考虑如何具体的确定地计算先验概率分布 P ( Y ) P(Y) 与条件概率分布 P ( X Y ) P(X|Y)
       首先可以采用极大似然估计,则先验概率的极大似然估计是
P ( Y = c k ) = i = 1 N I ( y i = c k ) N , k = 1 , 2 ,   , K P(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N},\quad k=1,2,\cdots,K        条件概率分布的极大似然估计是
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 ) P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=c_k)} j = 1 , 2 ,   , n ; l = 1 , 2 ,   , S j ; k = 1 , 2 ,   , K j=1,2,\cdots,n;\quad l=1,2,\cdots,S_j;\quad k=1,2,\cdots,K        式中, x i ( j ) x_i^{(j)} 是第 i i 个样本的第 j j 个特征, a j l a_{jl} 是第 j j 个特征可能取得第 l l 个值。
       最后将先验概率与条件概率代入朴素贝叶斯分类器公式中,找到使后验概率最大的 c k c_k 即可。
       但根据上述条件概率分布的极大似然估计函数,若样本中没有 x ( j ) = a j l x^{(j)}=a_{jl} y = c k y=c_k 的实例,即 i = 1 N I ( x i ( j ) = a j l , y i = c k ) = 0 \sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)=0 ,那么将其代入朴素贝叶斯分类器公式中,可能会出现所要估计的概率值为0的情况。直观上理解便是,如果某测试样本的第 j j 个特征 x ( j ) = a j l x^{(j)}=a_{jl} ,但在训练集中没有 x i ( j ) = a j l x^{(j)}_i=a_{jl} y i = c k y_i=c_k 的样本,那么此测试样本属于 c k c_k 类的概率为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_\lambda(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^NI(y_i=c_k)+S_j\lambda}        式中 λ 0 \lambda\ge0 S j S_j 为第 j j 个特征 x ( j ) x^{(j)} 的可取数。当 λ = 0 \lambda=0 时,就是极大似然估计;常取 λ = 1 \lambda=1 ,这时称为拉普拉斯平滑(Laplace smoothing)。
       拉普拉斯平滑保证了条件概率大于0,且每个特征的条件概率之和仍然等于1,即
P λ ( X ( j ) = a j l Y = c k ) > 0 P_\lambda(X^{(j)}=a_{jl}|Y=c_k)>0 l = 1 S j P ( X ( j ) = a j l Y = c k ) = 1 \sum_{l=1}^{S_j}P(X^{(j)}=a_{jl}|Y=c_k)=1        同样,先验概率的贝叶斯估计是
P λ ( Y = c k ) = i = 1 N I ( y i = c k ) + λ N + K λ P_\lambda(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda}        式中 K K y y 的可取数。

猜你喜欢

转载自blog.csdn.net/u013899126/article/details/89512870