前言
贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。
而朴素贝叶斯分类是基于贝叶斯定理与特征条件独立假设的分类方法,是贝叶斯分类中最简单,也是常见的一种分类方法。对于给定的训练集,首先基于特征独立假设学习输入\输出的联合概率分布,然后基于此模型,对给定的输入$x$,利用贝叶斯定理求出后验概率最大的输出$y$,朴素贝叶斯实际上是学习到生成数据的机制,属于生成模型
特点:实现简单、学习与预测效率都很高
朴素贝叶斯
模型生成
给定训练集$T=\lbrace(x_1,y_1),(x_2,y_2),…,(x_N,y_N)$,输入空间是$n$维向量的集合,输出空间$\lbrace c_1,c_2,…,c_K\rbrace$,训练集是由$P(X,Y)$独立同分布产生。
那么先验分布表示为:$$P(Y=c_k),k=1,2,…,K$$
条件概率分布表示为:$$P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},…,X^{(n)}=x^{(n)}|Y=c_k),k=1,2,…,K$$
由于朴素贝叶斯假定特征是独立的,所以,条件概率分布表示为:$$P(X=x|Y=c_k)=\prod \limits_{j=1}^{n} P(X^{(j)}=x^{(j)}|Y=c_k),k=1,2,…,K$$
模型预测
朴素贝叶斯分类时,对给定的输入x,通过学习模型计算后验概率$P(Y=c_k|X=x)$,将后验概率最大的类作为$x$的输出。
后验概率表示为:
$$P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_k P(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_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_k P(Y=c_k)\prod \limits_{j=1}^{n} P(X^{(j)}=x^{(j)}|Y=c_k)}$$
而分母中对所有的$c_k$都是相同的,所以简化为:
$$y=f(x)=arg \max \limits_{c_k}P(Y=c_k)\prod \limits_{j=1}^{n} P(X^{(j)}=x^{(j)}|Y=c_k)$$
后验最大化=期望风险最小化
朴素贝叶斯后验概率最大化等价于期望风险最小化。
首先选择0-1损失函数:$$
L(Y,f(X)) =
\begin{cases}
1, & \text{$Y \neq f(X)$} \\
0, & \text{$Y = f(X)$}
\end{cases} $$
$f(X)$是决策函数,所以期望函数表示为:
$$R_{exp}(f)=E[L(Y,f(X))]=E_X \sum \limits_{k=1}^K[L(c_k,f(X))]P(c_k|X)$$
为了使期望风险最小化,需对$X=x$逐个极小化,由此得到
$$
\begin {align}
f(x)
&=arg \min \limits_{y \in \gamma} \sum \limits_{k=1}^{K}L(c_k,y)P(c_k|X=x) \\
&=arg \min \limits_{y \in \gamma} \sum \limits_{k=1}^{K}P(y \neq c_k|X=x) \\
&=arg \min (1-P(y=c_k|X=x)) \\
&=arg \max P(y=c_k|X=x)
\end {align}
$$
这样期望风险最小化准则就得到了后验概率最大化准则
$$f(x)=arg \max \limits_{c_k} P(c_k|X=x)$$
参数估计
在朴素贝叶斯法中,学习意味着估计$P(Y=c_k)$和$P(X^{(j)}=x^{(j)}|Y=c_k)$,所以可以利用极大似然估计法去估计相应的概率。
先验概率$P(Y=c_k)$的极大似然估计是:$$P(Y=c_k)=\frac{\sum \limits_{i=1}^NI(y_i=c_k)}{N},k=1,2,…,K$$
设第$j$个特征$x^(j)$可能的取值集合为$\lbrace a_{j1},a_{j2},…,a_{jS_j}\rbrace$,条件概率$P(X^{(j)}=a_{jl}|Y=c_k)$的极大似然估计是
$$P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum \limits_{i=1}^{N}I(X^{(j)}=a_{jl},y_i=c_k)}{\sum \limits_{i=1}^{N}I(y_i=c_k)} \\
j=1,2,…,n;l=1,2,…,S_j;k=1,2,…,K$$
上式,$x_i^{(j)}$是第$i$个样本的第$j$个特征,$a_{jl}$是第$j$个特征可能取的第$l$个值,$I$是指数函数。
朴素贝叶斯算法
输入:训练数据$T=\lbrace(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 \lbrace a_{j1},a_{j2},…,a_{jS_j}\rbrace$;$a_{jl}$是第$j$个特征可能取的第$l$个值,$j=1,2,…,n;l=1,2,…,S_j;k=1,2,…,K$;实例$x$
输出:实例$x$的分类
- 计算先验概率和条件概率
$$P(Y=c_k)=\frac{\sum \limits_{i=1}^NI(y_i=c_k)}{N},k=1,2,…,K$$
$$P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum \limits_{i=1}^{N}I(X^{(j)}=a_{jl},y_i=c_k)}{\sum \limits_{i=1}^{N}I(y_i=c_k)} \\
j=1,2,…,n;l=1,2,…,S_j;k=1,2,…,K$$ - 对给定的实例$x=(x^{(1)},x^{(2)},…,x^{(n)})^T$,计算
$$P(Y=c_k)\prod \limits_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k),k=1,2,…,K$$ - 确定实例$x$的类
$$y=f(x)=arg \max \limits_{c_k}P(Y=c_k)\prod \limits_{j=1}^{n} P(X^{(j)}=x^{(j)}|Y=c_k)$$
贝叶斯估计
由于用极大似然估计可能会出现所估计概率为0,这会影响到后验概率的计算,使分类产生偏差,解决这一问题使用贝叶斯估计。
条件概率的贝叶斯估计是:
$$P_{\lambda}(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum \limits_{i=1}^{N}I(X^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum \limits_{i=1}^{N}I(y_i=c_k)+S_j\lambda} $$
上式中,$\lambda \geq 0$,当$\lambda=0$就是极大似然估计,$\lambda=1$称为拉普拉斯平滑
同样的,先验概率的贝叶斯估计为:
$$P_{\lambda}(Y=c_k)=\frac{\sum \limits_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda},k=1,2,…,K$$
总结
- 朴素贝叶斯是典型的生成学习方法,生成方法由训练数据学习联合分布$P(X,Y)$,然后求得后验概率分布$P(Y|X)$。
具体来说,利用训练集学习$P(X|Y),P(Y)$的估计,然后得到联合概率分布$P(X,Y)=P(Y)P(X|Y)$,然后利用学习到的联合概率模型和贝叶斯定理进行分类预测$$P(Y|X)=\frac{P(X,Y)}{P(X)}=\frac{P(Y)P(X|Y)}{\sum \limits_Y P(Y)P(X|Y)}$$ - 概率估计方法可以使用极大似然估计或者贝叶斯估计
- 分类预测输出的类为后验概率最大的类,后验概率最大等价于0-1损失函数的期望风险最小化