《统计学习方法》笔记 —— 朴素贝叶斯法
本文最后更新于 2018-11-22【2110 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!
本文是在学习李航老师的《统计学习方法》时做的学习笔记系列的第四篇:朴素贝叶斯法
朴素贝叶斯法是基于贝叶斯定理与条件独立假设的分类方法。对给定的训练数据集,首先基于
特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x ,利用
贝叶斯定理求出后验概率最大的输出 y 。此方法实现简单,学习与预测的效率都很高。
学习与分类
基本方法
- 训练集:$$ T=\{(x_1,y_1),...,(x_N,y_N)\} $$,由 $$x$$ 和 $$y$$ 的联合分布概率 $$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^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}|Y=c_k)$$
- 条件独立性假设(牺牲分类准确性):
$$ \begin{aligned}
P(X=x|Y=c_k)&=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}|Y=c_k)
\& =\prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)
\end{aligned} $$ - 贝叶斯定理:
$$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) = \frac{ P(Y=c_k) \prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum\limits_k P(Y=c_k) \prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)} $$
贝叶斯分类器:
$$ y = f(x) =arg \max\limits_{c_k}\frac{ P(Y=c_k) \prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum\limits_k P(Y=c_k) \prod\limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)} $$
后验概率最大化
朴素贝叶斯法将实例分到后验概率最大的类中,等价于期望风险最小化,其中,损失函数为 0-1 损失。
参数估计
极大似然估计
先验概率 $$P(Y=c_k)$$ 的极大似然估计是:
$$ P(Y=c_k) = \frac{\sum\limits_{i=1}^NI(y_i=c_k)}{N} $$
条件概率的极大似然估计是:
$$ P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}
{\sum\limits_{i=1}^NI(y_i=c_k)} $$
朴素贝叶斯算法
输入:
训练数据集:$$ T= \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} $$,其中:
- $$x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})^T $$
- $$ x_i^{(j)}$$ 是第 $$i$$ 个样本的第 $$j$$ 个特征:$$ x_i^{(j)} \in \{a_{j1}, a_{j2},...,a_{jS_i}\} $$
- $$a_{jl}$$ 是第 $$j$$ 个特征可能取的的第 $$l$$ 个值
- $$y_i \in \{c_1,c_2,...,c_k\}$$
- 实例 $$x$$
输出:$$x$$ 的分类
- 计算先验概率 $$P(Y=c_k)$$ 及条件概率 $$P(X^{(j)}=a_{jl}|Y=c_k)$$
- 对给定的实例 $$x$$ ,计算 $$P(Y=c_k)\prod\limits_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)$$
- 确定 $$x$$ 的类别
贝叶斯估计
用极大似然估计可能会出现所要估计的概率值为0的情况,会影响后验概率的结果,产生偏差,解决
办法是采用贝叶斯估计。
先验概率 $$P(Y=c_k)$$ 的贝叶斯估计是:
$$ P(Y=c_k) = \frac{\sum\limits_{i=1}^N{I(y_i=c_k)+\lambda}}{N+K\lambda} $$
条件概率的贝叶斯估计是:
$$ P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}
{\sum\limits_{i=1}^NI(y_i=c_k)+S_j\lambda} $$
其中$$\lambda \ge 0$$,等价于在随机变量各个取值的频数上赋予一个正数$$\lambda \gt 0$$。
当$$\lambda = 0$$ 时,即极大似然估计;常取$$\lambda = 1$$,称为拉普拉斯平滑。
参考
- 李航,统计学习方法,清华大学出版社
本文作者:Quanyin Tang
本文链接:《统计学习方法》笔记 —— 朴素贝叶斯法 - https://www.imtqy.com/statistical-learning-method-4.html
版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。