zoukankan      html  css  js  c++  java
  • 学习笔记——朴素贝叶斯法

    朴素贝叶斯(naive Bayes)法属于生成模型:还原出联合概率分布(P(X,Y)),它反映了输入与输出之间的概率关系,也就是生成数据的机制,然后基于这套机制进行分类。朴素贝叶斯法基于贝叶斯定理与特征条件独立假设的分类方法。

    基本原理


    输入空间(mathcal{X} subseteq R^n)
    输出空间(mathcal{Y} = { c_1, c_2, ..., c_K })
    训练数据集(T = { (x_1,y_1), (x_2,y_2), ..., (x_N,y_N) })是由(P(X,Y))独立同分布产生 的。

    学习联合概率分布(P(X,Y)),具体就是学习先验概率分布:

    [P(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) = prod_{j=1}^n P(X^{(j)} = x^{(j)} | Y=c_k) ]

    然后在进行分类时,对给定的输入(x),计算后验概率:

    [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)} ]

    采用后验概率最大化准则(对应0-1损失函数的期望风险最小化准则),从所有的(P(Y=c_k | X=x))中选一个最大的,上面那个公式里的分母总是不变的,所以可以化简为:

    [y = arg max_{c_k} P(X=x|Y=c_k)P(Y=c_k) = arg max_{c_k} P(Y=c_k) prod_{j=1}^n P(X^{(j)} = x^{(j)} | Y=c_k) ]

    朴素贝叶斯法的参数估计


    极大似然估计

    先验概率(P(Y=c_k))的极大似然估计是((I(cdot))是指示函数):

    [P(Y=c_k) = frac{1}{N} sum_{i=1}^N I(y_i=c_k), k=1,2,...,K ]

    设第(j)个特征(x^{(j)})可能取值的集合为({ a_{j1},a_{j2},...,a_{jS_j} })
    条件概率(P(X^{(j)} = a_{jl} | Y=c_k))的极大似然估计是:$$P(X^{(j)} = a_{jl} | Y=c_k) = frac{sum_{i=1}^N I(x_i^{(j)} = a_{jl}, y_i = c_k)}{sum_{i=1}^N I(y_i = c_k)}$$ $$j = 1,2,...,n; l=1,2,...,S_j; k=1,2,...,K$$

    朴素贝叶斯算法

    • 输入:训练数据集(T = { (x_1,y_1), (x_2,y_2), ..., (x_N,y_N) });实例(x)
    • 实例(x)的分类
    1. 计算先验概率及条件概率
    $$P(Y=c_k) = frac{1}{N} sum_{i=1}^N I(y_i=c_k), k=1,2,...,K$$$$P(X^{(j)} = a_{jl} | Y=c_k) = frac{sum_{i=1}^N I(x_i^{(j)} = a_{jl}, y_i = c_k)}{sum_{i=1}^N I(y_i = c_k)}$$ $$j = 1,2,...,n; l=1,2,...,S_j; k=1,2,...,K$$
    
    1. 对于给定的实例(x),计算后验概率:
    $$P(Y=c_k) prod_{j=1}^n P(X^{(j)} = x^{(j)} | Y=c_k)$$
    
    1. 确定实例(x)的类,即选择最大的那个后验概率:
    $$y = arg max_{c_k} P(Y=c_k) prod_{j=1}^n P(X^{(j)} = x^{(j)} | Y=c_k)$$
    

    贝叶斯估计

    用极大似然估计可能会出现所要估计的概率值为0的情况,这会影响到后验概率的计算结果,使分类产生偏差,解决这一问题的方法是采用贝叶斯估计,条件概率的贝叶斯估计是:

    [P_{lambda}(X^{(j)} = a_{jl} | Y=c_k) = frac{sum_{i=1}^N I(x_i^{(j)} = a_{jl}, y_i = c_k)+lambda}{sum_{i=1}^N I(y_i = c_k) + S_j lambda} ]

    就是在原来的基础上加上个(lambda),当(lambda=0)时就是极大似然估计。常取(lambda = 1),这时称为拉普拉斯平滑(Laplace smoothing)。
    同样,先验概率的贝叶斯估计是:

    [P_{lambda}(Y=c_k) = frac{sum_{i=1}^N I(y_i=c_k) + lambda}{N+Klambda} ]


    (注:本文为读书笔记与总结,侧重算法原理,来源为[《统计学习方法》](http://book.douban.com/subject/10590856/)一书第四章)
    作者:[rubbninja](http://www.cnblogs.com/rubbninja/) 出处:[http://www.cnblogs.com/rubbninja/](http://www.cnblogs.com/rubbninja/) 关于作者:目前主要研究领域为机器学习与无线定位技术,欢迎讨论与指正!
  • 相关阅读:
    sed命令
    awk命令
    let命令
    首先看一下友晶DE-SOC开发板的user manual
    嵌入式FIFO核的调用
    嵌入式ROM核的调用
    用嵌入式块RAM IP核配置一个双口RAM
    如何利用Visio设计一个系统的结构图
    uart通讯协议
    按键消抖试验及一个数码管电子时钟的设计
  • 原文地址:https://www.cnblogs.com/rubbninja/p/4905566.html
Copyright © 2011-2022 走看看