统计学习方法3-朴素贝叶斯

写在前面

本系列整理自《统计学习方法》与《机器学习实战》内容。

本章介绍朴素贝叶斯算法及相关python代码实现。

朴素贝叶斯法

朴素贝叶斯对条件概率分布做出了条件独立性假设
$$
\begin{align}P(X=x|Y=c_k)
&=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},\dots,X^{(n)}=x^{(n)}|Y=c_k) \\
&=\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)
\end{align}
$$

算法描述

输入:训练数据集$T={(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)}$,其中$x_i=(x_i^{(1)},x_i^{(2)},\dots,x_i^{(n)})^T$,$x_i^{(j)}$表示第i个样本第j个特征,$x_i^{(j)}\in {a_{j1},a_{j2},\dots,a_{jS_j}}$

输出:实例x分类

(1)计算先验概率及条件概率
$$
\begin{align}
&P(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N}\\
&P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=c_k)}
\end{align}
$$
(2)对于给定的实例,计算
$$
P(Y=c_k)\prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)
$$
(3)确定实例x的类$c_k$使上式最大

贝叶斯估计

上述方法采用极大似然估计确定先验概率$P(Y=c_k)$与条件概率$P(X^{(j)}=a_{jl}|Y=c_k)$,可能会出现索要估计的概率值为0,即某个属性与某各类的组合未在样本数据中出现。

下述采用贝叶斯估计进行修正。

条件概率的贝叶斯估计为
$$
P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^NI(y_i=c_k)+S_j\lambda}
$$
其中,$S_j$是第j个特征的取值种类个数

先验概率的贝叶斯估计为
$$
P(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda}
$$
其中,$K$表示分类$c_k$的个数。

本文标题:统计学习方法3-朴素贝叶斯

文章作者:Lumo Wang

发布时间:2018年03月23日 - 21:03

最后更新:2018年11月07日 - 15:11

原始链接:https://luameows.github.io/2018/03/23/学习笔记-统计学习方法3-朴素贝叶斯/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

请我喝杯咖啡,我会继续熬夜的~