朴素贝叶斯
一、前置知识回顾
首先呢,我们需要先知道的概率论知识有:
-
条件概率
$$
P(A|B)=\frac{P(AB)}{P(B)}
$$ -
全概率公式
$$
P(B)=P(B|A)P(A)+P(B|A’)P(A’)
$$
全概率表示的是,达到某个目的的多种方式各自概率的和。 -
贝叶斯公式
$$
P(A|B)=P(A)\frac{P(B|A)}{P(B)}
$$-
P(A)是A的"先验概率"(Prior probability),即A不受B影响时的概率。
-
P(B)是B的先验概率
-
P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,对A事件概率的重新评估。
-
P(B|A)是条件概率,也叫似然概率。
-
P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。
-
所以,条件概率可以理解成:
$$
后验概率 = 先验概率\times调整因子
$$
-
二、朴素贝叶斯法
朴素贝叶斯法 = 贝叶斯定理 + 特征条件独立。
朴素贝叶斯分类对条件概率分布做了条件独立性的假设。简单粗暴地设定样本之间是相互独立的,也就是说,样本的出现顺序与上下文关系并不影响计算结果。
$$
P(A,B|Y)=P(A|Y)\cdot P(B|Y)
$$
设输入空间$\mathcal X\subseteq R^n$为n维向量的集合,输出空间为类别标签集合$\mathcal Y={c_1,c_2,\cdots,c_n}$;
设输入的特征向量为$x\in\mathcal X$,输出类别标签$y\in\mathcal Y$,X是满足$\mathcal X$定义的随机向量。Y也是,是输出空间$\mathcal Y$定义上的随机变量。P(X,Y)是X和Y的联合分布,则我们训练用的数据集可以这么描述(由P(X,Y)独立同分布产生):
$$
T=\left\{ (x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n) \right\}
$$
朴素贝叶斯算法主要学习先验概率和条件概率分布:
-
先验概率分布为$P(Y=c_k),k=1,2,\cdots,K$,强调一下这里的k是指第k个类别
-
条件概率分布为$P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},\cdots,X^{(n)}=x^{(n)}|Y=c_k)$
其中,条件概率分布$P(X=x|Y=c_k)$可是有着指数级别数量的参数,用来估计是很不现实的。
假设$x^{(j)}$可取值有$S_j$个(j=1,2,3,…,n),Y可取值有K个,那么参数个数为$K\prod_{j=1}^kS_j$
朴素贝叶斯法对条件概率分布做了条件独立性假设,这是一个很强的假设,描述成数学语言就是:
$$
P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},\cdots,X^{(n)}=x^{(n)}|Y=c_k)\\=
\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_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)}
$$
上面这个式子代入$\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)$就会得到:
$$
P(Y=c_k|X=x)\\=
\frac{P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k}P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}
$$
这是朴素贝叶斯分类的基本公式,所以分类器可以写为:
$$
y=f(x)\\=
\arg\max_{c_k}
\frac{P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k}P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}
$$
计算后验概率的式子中,分母对所有$c_k$类别都是相同的,所以省略去:
$$
y=f(x)=\arg\max_{c_k}P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)
$$
1、后验概率最大化的含义
朴素贝叶斯法将收到的样本分到后验概率最大的类中,假设损失用的0-1损失:
$$
L(Y,f(x))=
\left\{
\begin{matrix}
1,Y\ne f(x) \\
0,Y = f(x)
\end{matrix}\right.
$$
式子里的f(x)是分类决策函数。
这个时候,我们可以对损失函数求个期望,得到期望风险函数:
$$
R_{\exp}(f)=E[L(Y,f(X))]
$$
我们要损失最小化的话,这个期望风险也就要最小化:
$$
\min(E[L(Y,f(X))])
$$
由于本篇中贝叶斯方法采用的是条件概率的形式,因此这里的期望也应该是条件期望。
这里大Y是有K个类,所以有K个取值。
期望是对P(X,Y)取的,目的是想知道X
归属于$c_k$类别的概率是多少:
$$
R_{\exp}(f)=E_X\sum_{i=1}^K[L(c_k,f(X))]P(c_k|X)
$$
现在,我们损失最小化问题就转为 使这个条件期望$R_{\exp}(f)$最小化问题了
而要想条件期望最小化,只需要对$X=x$的每一个点求最小值即可。
现在我们对任意一个小x的点,取它对应的决策函数$f(X)$,这个$f(x)$对应着某一个类。怎么选这个类呢?就是使期望风险达到最小的时候对应的那个类。这里写成$\arg\min$形式:
$$
f(x)=\arg\min_{y\in\mathcal Y}\sum_{k=1}^{K}L(c_k,y)P(c_k|X=x)
$$
因为只有分类错的时候有值,所以写成:
$$
f(x)=\arg\min_{y\in\mathcal Y}\sum_{k=1}^{K}L(c_k,y)P(c_k|X=x)\\=
\arg\min_{y\in\mathcal Y}\sum_{k=1}^KP(y\ne c_k|X=x)\\=
\arg\min_{y\in\mathcal Y}(1-P(y=c_k|X=x))\\=
\arg\max_{y\in\mathcal Y}P(y=c_k|X=x)
$$
这样一来,根据期望风险最小化准则就得到了后验概率最大化准则,我们把上面的推断总结成下面的式子:
$$
f(x)=\arg\max_{c_k}P(c_k|X=x)
$$
也就是朴素贝叶斯所采用的原理
三、朴素贝叶斯的参数估计
因为朴素贝叶斯分类法最终使用的方法是:
$$
y=\arg\max_{c_k}P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)
$$
在朴素贝叶斯中,学习意味着要估计$P(Y=c_k)$和$P(X^{(j)}=x^{(j)}|Y=c_k)$。是总体中n+1个参数。
要想估计这些参数,可以使用样本(也就是机器学习中的训练集)来进行参数估计。估计这些参数的过程就是模型训练。
可以使用极大似然估计法估计相应的概率。先验概率$P(Y=c_k)$的极大似然估计是:
$$
P(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N}\\
k=1,2,\cdots,K
$$
设第j个特征$x^{(j)}$可能取值的集合为${a_{j1},a_{j2},\cdots,a_{jS_j}}$,则条件概率$P(X^{(j)}=a_{jl}|Y=c_k)$的极大似然估计为:
$$
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)}\\
k=1,2,\cdots,K\
j=1,2,\cdots,n\
l=1,2,\cdots,S_j
$$
式子中:
$c_k$是第k个类别,$c_k\in{c_1,c_2,\cdots,c_K}$
$x_i^{(j)}$是第
i
个样本的第j
个特征;$a_{jl}$是第
j
个特征可能取的第l
个值;
I
是指示函数,$y_i=c_k$时,值为1
N
是样本数量
所以上式中,分母就是所属类别中,所属实例点的个数
分子就是第j个特征等于$a_{jl}$的时候,并且也属于$c_k$这个类的时候,共有多少个实例点
这俩个数一比,就是我们要求出来的条件概率
这个条件概率我们需要计算多少个?例子中有大K
个类别,算上不同特征中各有多少个选择,如第一个特征有S1个选择,第二个特征有S2个。。。可以写成如下形式,这就是要计算的条件概率的个数:
$$
K\times S_1\times S_2\times \cdots\times S_n
$$
但这里其实应该是加法,因为朴素贝叶斯有了条件独立假设,没有的话就是乘法。也可以看出条件独立假设的优化有多大:
$$
K(S_1+S_2+\cdots+S_n)
$$
四、学习与分类算法
对于一个分类问题来说,我们希望输入数据集$T=\left\{ (x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n) \right\}$和实例$x=(x^{(1)}),x^{(2)}),\cdots,x^{(n)})$,输出实例x所属的类别y。
-
1、计算先验概率和条件概率
$$
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)}\\
k=1,2,\cdots,K\\
j=1,2,\cdots,n\\
l=1,2,\cdots,S_j
$$ -
2、对于给定的实例$x=(x^{(1)}),x^{(2)}),\cdots,x^{(n)})^T$,计算
$$
P(Y=c_k)\prod_{i=1}^{n}
$$ -
3、确定实例x的类别
$$
y=\arg\max_{c_k}P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)
$$
举个栗子🌰,这里用的是《机器学习方法》里的栗子:
现在要计算的是点$x=(2,S)^T$的所属类别
根据上表我们可以得到:
$$
P(Y=1)=\frac{9}{15}
P(Y=-1)=\frac{6}{15}
$$
$X^{(1)}$ | $X^{(1)}$ | $X^{(1)}$ | $X^{(2)}$ | $X^{(2)}$ | $X^{(2)}$ | |
---|---|---|---|---|---|---|
1 | 2 | 3 | S | M | L | |
Y=1 | 2/9 | 3/9 | 4/9 | 1/9 | 4/9 | 4/9 |
Y=-1 | 3/6 | 2/6 | 1/6 | 3/6 | 2/6 | 1/6 |
对于给定的$x=(2,S)^T$
$$
P(Y=1)P(X^{(1)}=2|Y=1)P(X^{(2)}=S|Y=1)\\=
\frac{9}{15}\times\frac{3}{9}\times\frac{1}{9}=\frac{1}{45}\\
P(Y=-1)P(X^{(1)}=2|Y=-1)P(X^{(2)}=S|Y=-1)\\=
\frac{6}{15}\times\frac{2}{6}\times\frac{3}{6}=\frac{1}{15}
$$
因为$P(Y=-1)P(X^{(1)}=2|Y=-1)P(X^{(2)}=S|Y=-1)$估计的值最大,所以y=-1
五、贝叶斯估计
用极大似然估计的时候,有时候会因为某类统计的样本为0等原因,导致的概率值为0的情况。这会影响后验概率的计算结果,影响分类的结果
解决这一问题的办法是使用贝叶斯估计:
先验概率的贝叶斯估计:
$$
P_\lambda(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda}
$$
这里分母加上$K\lambda$是为了所求的概率和为1:
$$
\sum_{k=1}^{K}P_\lambda(Y=c_k)=1
$$
条件概率的贝叶斯估计:
$$
P_\lambda(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}
\\\lambda\ge0
$$
这里分母加上$s_k\lambda$也是为了所求概率和为1:
$$
\sum_{l=1}^{S_i}P_\lambda(X^{(j)}=a_{jl}|Y=c_k)=1
$$
这里的$\lambda=0$的时候为极大似然估计,$\lambda=1$的时候称为拉普拉斯平滑(Laplacian Smoothing)
举个栗子🌰,还是刚刚的数据:
$X^{(1)}$ | $X^{(1)}$ | $X^{(1)}$ | $X^{(2)}$ | $X^{(2)}$ | $X^{(2)}$ | |
---|---|---|---|---|---|---|
1 | 2 | 3 | S | M | L | |
Y=1 | 3/12 | 4/12 | 5/12 | 2/12 | 5/12 | 5/12 |
Y=-1 | 4/9 | 3/9 | 2/9 | 4/9 | 3/9 | 2/9 |
对于给定的$x=(2,S)^T$
$$
P(Y=1)P(X^{(1)}=2|Y=1)P(X^{(2)}=S|Y=1)\\=
\frac{10}{17}\times\frac{4}{12}\times\frac{2}{12}=\frac{5}{153}=0.0327\\
P(Y=-1)P(X^{(1)}=2|Y=-1)P(X^{(2)}=S|Y=-1)\\=
\frac{7}{17}\times\frac{3}{9}\times\frac{4}{9}=\frac{28}{459}=0.0610
$$
因为$P(Y=-1)P(X^{(1)}=2|Y=-1)P(X^{(2)}=S|Y=-1)$估计的值最大,所以y=-1