首页 > 代码库 > 朴素贝叶斯
朴素贝叶斯
1. 基本方法
设$X, Y$分别是定义在输入空间和输出空间上的随机变量。$P(X,Y)$是$X$和$Y$的联合概率分布。训练数据集
\begin{equation}
T = \{(x_1, y_1), (x_2, y_2),...,(x_n, y_n) \}
\end{equation}
由$P(X,Y)$独立同?分布产生。
朴素贝叶斯是一种生成学习方法。与生成学习方法相对的是鉴别学习方法。两种学习方法的主要差别是:鉴别学习方法直接求解后验概率分布$P(Y|X)$。生成学习方法是先求解联合概率分布$P(X,Y)$,再求解后验概率分布$P(Y|X)$。
朴素贝叶斯要想学习联合概率分布$P(X,Y)$,需要先学习先验概率分布
\begin{equation}
P(Y=c_k), k=1,2,...,K
\end{equation}
和条件概率分布
\begin{equation}
P(X=x|Y=c_k) = P(X^{(1)}=x^{(1)},...,X^{(m)}=x^{(m)} | Y=c_k), k=1,2,...,K
\end{equation}
其中,$x^{(i)}$是指样本$x$的第$i$个特征。$m$是特征的数量,即每个样本有$m$个特征。
联合概率分布就等于先验概率乘以条件概率,即
\begin{equation}
P(X=x, Y=c_k) = P(X=x|Y=c_k) \times P(Y=c_k)
\end{equation}
但是由于条件概率很难求解($P(X^{(1)}=x^{(1)},...,X^{(m)}=x^{(m)} | Y=c_k)$参数太多,难以计算),所以对条件概率进行了独立性的假设。即
\begin{equation}
\begin{aligned}
P(X=x|Y=c_k) & = P(X^{(1)}=x^{(1)},...,X^{(m)}=x^{(m)} | Y=c_k) \\
& = \prod_{j=1}^m P(X^{(j)}=x^{(j)} | Y=c_k)
\end{aligned}
\end{equation}
条件独立假设的含义是,在类别确定的情况下,不同特征之间是相互独立的。
朴素贝叶斯的分类准则是,对于输入$x$,计算后验概率分布$P(Y=c_k | X=x)$,将后验概率最大的类作为$x$的类别输出。后验概率可以通过贝叶斯定理计算:
\begin{equation}
P(Y=c_k | X=x) = \frac{P(X=x | Y=c_k) P(Y=c_k)}{P(X=x)}
\label{bayes}
\end{equation}
其中
\begin{equation}
P(X=x | Y=c_k) P(Y=c_k) = P(Y=c_k) \prod_{j=1}^m P(X^{(j)}=x^{(j)} | Y=c_k)
\label{condition}
\end{equation}
\begin{equation}
\begin{aligned}
P(X=x) & = \sum_{k=1}^K P(X=x, Y=c_k) \\
& = \sum_{k=1}^K P(Y=c_k) P(X=x | Y=c_k) \\
& = \sum_{k=1}^K P(Y=c_k) \prod_{j=1}^m P(X^{(j)}=x^{(j)} | Y=c_k)
\end{aligned}
\label{prior}
\end{equation}
将公式(\ref{condition}),(\ref{prior})代入公式(\ref{bayes}),可得后验概率
\begin{equation}
P(Y=c_k | X=x) = \frac{P(Y=c_k) \prod_{j=1}^m P(X^{(j)}=x^{(j)} | Y=c_k)}{\sum_{k=1}^K P(Y=c_k) \prod_{j=1}^m P(X^{(j)}=x^{(j)} | Y=c_k)}
\label{posterior}
\end{equation}
可以发现,公式(\ref{posterior})中的分母与k的取值无关。贝叶斯的分类准则是将样本分类到后验概率最大的类别中,即
\begin{equation}
\begin{aligned}
f(x) & = \underset{c_k}{\arg\max} \;\;\; P(Y=c_k | X=x) \\
& = \underset{c_k}{\arg\max} \;\;\; P(Y=c_k) \prod_{j=1}^m P(X^{(j)}=x^{(j)} | Y=c_k)
\end{aligned}
\end{equation}
2. 参数估计方法
2.1 极大似然估计
朴素贝叶斯方法,需要估计先验分布$P(Y=c_k)$与条件分布$P(X^{(j)}=x^{(j)}|Y=c_k)$。可以用极大似然估计方法进行概率的估计。先验概率的极大似然估计是
\begin{equation}
P(Y=c_k) = \frac{\sum_{i=1}^n I(y_i=c_k)}{n}, k=1,2,...,K
\end{equation}
其中,$I(*)$是指示函数,即$I(true)=1$, $I(false)=0$。
设第$j$个特征$x^{(j)}$的可能取值集合是$\{a_{j1},a_{j2},...,a_{jS_j}\}$,则条件概率$P(X^{(j)}=x^{(j)}|Y=c_k)$的极大似然估计是
\begin{equation}
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)}
\end{equation}
2.2 贝叶斯估计
在极大似然估计方法中,概率估计会出现等于0的情况。即在训练样本从未出现过的数据,条件概率估计会等于0。这样明显是不利于学习与预测的。这时可以采用贝叶斯估计,条件概率的贝叶斯估计是
\begin{equation}
P(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}
\end{equation}
式中$\lambda \ge 0$,当$\lambda=0$时,即退化为极大似然估计。常取$\lambda=1$,这时也称为拉普拉斯平滑(Laplace smoothing)。
同样,先验分布的贝叶斯估计是
\begin{equation}
P(Y=c_k) = \frac{\sum_{i=1}^n I(y_i=c_k) + \lambda}{n+K\lambda}
\end{equation}