朴素贝叶斯(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)),具体就是学习先验概率分布:
和条件概率分布(根据条件独立性的假设,没有这个假设的话不好化简):
然后在进行分类时,对给定的输入(x),计算后验概率:
采用后验概率最大化准则(对应0-1损失函数的期望风险最小化准则),从所有的(P(Y=c_k | X=x))中选一个最大的,上面那个公式里的分母总是不变的,所以可以化简为:
朴素贝叶斯法的参数估计
极大似然估计
先验概率(P(Y=c_k))的极大似然估计是((I(cdot))是指示函数):
设第(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)的分类
- 计算先验概率及条件概率
$$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$$
- 对于给定的实例(x),计算后验概率:
$$P(Y=c_k) prod_{j=1}^n P(X^{(j)} = x^{(j)} | Y=c_k)$$
- 确定实例(x)的类,即选择最大的那个后验概率:
$$y = arg max_{c_k} P(Y=c_k) prod_{j=1}^n P(X^{(j)} = x^{(j)} | Y=c_k)$$
贝叶斯估计
用极大似然估计可能会出现所要估计的概率值为0的情况,这会影响到后验概率的计算结果,使分类产生偏差,解决这一问题的方法是采用贝叶斯估计,条件概率的贝叶斯估计是:
就是在原来的基础上加上个(lambda),当(lambda=0)时就是极大似然估计。常取(lambda = 1),这时称为拉普拉斯平滑(Laplace smoothing)。
同样,先验概率的贝叶斯估计是:
(注:本文为读书笔记与总结,侧重算法原理,来源为[《统计学习方法》](http://book.douban.com/subject/10590856/)一书第四章)
作者:[rubbninja](http://www.cnblogs.com/rubbninja/) 出处:[http://www.cnblogs.com/rubbninja/](http://www.cnblogs.com/rubbninja/) 关于作者:目前主要研究领域为机器学习与无线定位技术,欢迎讨论与指正!