ML基本知识(九)朴素贝叶斯

  • 基本方法

    对于数据集 T = { ( x i , y i ) } i = 1 N T= \{(x_i,y_i)\}^{N}_{i=1} ,由独立同分布的 P ( X , Y ) P(X,Y) 产生,朴素贝叶斯通过训练集学习联合概率分布 P ( X , Y ) P(X,Y) ,具体的,学习以下的先验概率分布和条件概率分布得到,值得注意的是 x 1 x_1 x ( 1 ) x^{(1)} 是不一样的, x 1 x_1 值得是第一个样本的数据, x ( 1 ) x^{(1)} 指的是特征集中的第一个特征,

    P ( Y = c k ) k = 1 , 2 , . . . , K P(Y=c_k) \quad k=1,2,...,K
    P ( X = x / Y = c k ) = P ( X ( 1 ) = x ( 1 ) , X ( 2 ) = x ( 2 ) , . . . , X ( n ) = x ( n ) / Y = c k ) k = 1 , 2 , . . . , K P(X=x/Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}/Y=c_k) \quad k=1,2,...,K

    于是得到联合分布概率 P ( X , Y ) P(X,Y) ,

    而朴素贝叶斯惊醒了一个对条件概率分布的条件独立性假设,如下,

    P ( X ( i ) = x ( i ) / Y ) = P ( X ( j ) = x ( j ) / Y , X ( i ) = x ( i ) ) P(X^{(i)}=x^{(i)}/Y)=P(X^{(j)}=x^{(j)}/Y, X^{(i)}=x^{(i)})
    即特征 X ( i ) X^{(i)} 对于特征 X ( j ) X^{(j)} 关于 Y Y 是相互独立的,但是特征之间有可能不独立,

    P ( X = x / Y = c k ) = P ( X ( 1 ) = x ( 1 ) , X ( 2 ) = x ( 2 ) , . . . , X ( n ) = x ( n ) / Y = c k ) k = 1 , 2 , . . . , K P(X=x/Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}/Y=c_k) \quad k=1,2,...,K
    = j = 1 n P ( X ( j ) = x ( j ) / Y = c k ) k = 1 , 2 , . . . , K ( 1 ) =\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)\quad k=1,2,...,K \quad(1)
    而对于如何求解 P ( X ( j ) = x ( j ) / Y = c k ) P(X^{(j)}=x^{(j)}/Y=c_k) ,下文会讲述,

    这时我们已经把每一项 P ( X ( j ) = x ( j ) / Y = c k ) P(X^{(j)}=x^{(j)}/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 _k P(X=x/Y=c_k)P(Y=c_k)}
    把(1)式带入上述公式得

    P ( Y = c k / X = x ) = P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) / Y = c k ) k P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) / Y = c k ) P(Y=c_k/X=x)=\frac{P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)}{\sum _k P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)}
    而当一个未知的 x u x_{u} 送入到模型中,得到的结果如下,

    y = f ( x u ) = a r g m a x c k P ( Y = c k ) j = 1 n P ( X ( j ) = x u ( j ) / Y = c k ) k P ( Y = c k ) j = 1 n P ( X ( j ) = x u ( j ) / Y = c k ) y=f(x_u)=argmax_{c_k}\frac{P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x_u^{(j)}/Y=c_k)}{\sum _k P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x_u^{(j)}/Y=c_k)}
    而对于所有的式子来说,上式的分母都是相同的,因而上式可简化为如下,

    y = f ( x u ) = a r g m a x c k P ( Y = c k ) j = 1 n P ( X ( j ) = x u ( j ) / Y = c k ) y=f(x_u)=argmax_{c_k}P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x_u^{(j)}/Y=c_k)

  • 后验概率最大含义

    朴素贝叶斯法将实例分到后验概率最大的类中,其实等价于期望风险最小化,从这一点可以看出朴素贝叶斯法其实是站在伪上帝的视角来考虑问题的,即现在我们就认为训练集中包含所有的可能数据,因而求出的风险就是期望风险,而不是经验风险,

    这里统计学习方法的第49页有详细推导过程,这里只想提一点就是朴素贝叶斯用到的是0-1损失函数

    L ( y , f ( x ) ) = { 1 , Y f ( X ) 0 , Y = f ( X ) L(y,f(x))=\left\{\begin{matrix} 1,\quad Y\neq f(X)\\ 0,\quad Y=f(X) \end{matrix}\right.

    而且注意条件数学期望的理解,

  • 算法说明

    输入:训练数据 T = { ( x i , y i ) } i = 1 N T= \{(x_i,y_i)\}^{N}_{i=1} , 其中 x i = ( x i ( 1 ) , x i ( 2 ) , . . . , x i ( n ) ) T x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})^T ,其中 x i ( j ) { a j 1 , a j 2 , . . . , a j S j } x_i^{(j)}\in \left \{ a_{j1},a_{j2},...,a_{jS_j} \right \} , j = 1 , 2 , . . . , n j=1,2,...,n , l = 1 , 2 , . . . , S j l=1,2,...,S_j , y i { c 1 , c 2 , . . . , c k } y_i\in \left \{ c_1,c_2,...,c_k \right \} , 实例 x x ,

    输出:实例 x x 的分类结果,

    1. 计算先验概率及条件概率

    P ( Y = c k ) = i = 1 N 1 ( y i = c k ) N , k = 1 , 2... , K P(Y=c_k)=\frac{\sum_{i=1}^{N}1(y_i=c_k)}{N},\quad k=1,2...,K
    P ( X ( j ) / Y = c k ) = i = 1 N 1 ( x i ( j ) = a j l , y i = c k ) i = 1 N 1 ( y i = c k ) P(X^{(j)}/Y=c_k)=\frac{\sum_{i=1}^{N}1(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}1(y_i=c_k)}
    j = 1 , 2 , . . . , n l = 1 , 2 , . . . , S j k = 1 , 2... , K j=1,2,...,n \quad l=1,2,...,S_j \quad k=1,2...,K

    1. 对于给定的 x = ( x ( 1 ) , x ( 2 ) , . . . , x ( n ) ) T x=(x^{(1)},x^{(2)},...,x^{(n)})^T ,计算
      P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) / Y = c k ) k = 1 , 2 , . . . , K P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k) \quad k=1,2,...,K
    2. 确定 x x 的分类
      y = f ( x ) = a r g m a x c k P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) / Y = c k ) y=f(x)=argmax_{c_k}P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)
  • 贝叶斯估计

    极大似然估计可能产生概率为0的情况,因而引入了贝叶斯估计,用如下式子矫正,

    P λ ( X ( j ) / Y = c k ) = i = 1 N 1 ( x i ( j ) = a j l , y i = c k ) + λ i = 1 N 1 ( y i = c k ) + S j λ P_\lambda(X^{(j)}/Y=c_k)=\frac{\sum_{i=1}^{N}1(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^{N}1(y_i=c_k)+S_j\lambda}
    等价于给随机变量的各个取值的频数上添加一个整数 λ \lambda , 当 λ = 0 \lambda=0 时为极大似然估计,当其为1时,叫做拉普拉斯平滑,而先验概率的贝叶斯估计为
    P λ ( Y = c k ) = i = 1 N 1 ( y i = c k ) + λ N + K λ , k = 1 , 2... , K P_\lambda(Y=c_k)=\frac{\sum_{i=1}^{N}1(y_i=c_k)+\lambda}{N+K\lambda},\quad k=1,2...,K

发布了36 篇原创文章 · 获赞 42 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37688445/article/details/79275487