学习笔记——朴素贝叶斯法
朴素贝叶斯(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/) 关于作者:目前主要研究领域为机器学习与无线定位技术,欢迎讨论与指正!