朴素贝叶斯方法


贝叶斯公式

贝叶斯公式:

\[P(A|B)=\frac{P(B|A)P(A)}{P(B)} \]

  • \(B\)出现的前提下\(A\)出现的概率,等于\(A\)\(B\)都出现的概率除以\(B\)出现的概率。

假设事件\(A\)本身包含多种可能性,集\(A=\{A_1,A_2,\cdots,A_n\}\),那么对于集合中任意的\(A_i\),贝叶斯定理表示为:

\[P(A_i|B)=\frac{P(B|A_i)P(A_i)}{\sum_{j}P(B|A_j)P(A_j)} \]

  1. 某 AI 公司招聘工程师,来了8名应聘者,这8个人里,有5个人是985院校毕业的,另外3人不是。
  2. 面试官拿出一道算法题准备考察他们。根据以前的面试经验,面试官知道:985毕业生做对这道题的概率是80%,非985毕业生做对率只有30%。
  3. 现在,面试管从8个人里随手指了一个人——小甲,让 TA 出来做题。结果小甲做对了,那么请问,小甲是985院校毕业的概率是多大?

\[\frac{0.8*5/8}{0.8*5/8+0.3*3/8} \]


朴素贝叶斯法假设条件概率分布是条件独立的。即:

\[P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)}, \cdots, X^{(n)}=x^{(n)}|Y=c_k)\\ = \prod_{j=1}^{n}P(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)} \]

朴素贝叶斯分类器可表示为:

\[y=f(x)=arg\ \underset{c_k}{max}\ P(Y=c_k)\prod_{j}^{ }P(X^{(j)}=x^{(j)}|Y=c_k) \]

后验概率最大化,等价于期望风险最小化。

上式,基于训练集\(D\)来估计类先验概率\(P(Y=c_k)\),并为每个属性估计条件概率\(P(X^{(j)}=x^{(j)}|Y=c_k)\)

\(D_k\)表示训练集\(D\)中第\(k\)类样本组成的集合,若有充分的独立同分布样本,则可估计出类先验概率为:

\[P(Y=c_k)=\frac{|D_k|}{|D|} \]

\(D_k^{(j)}\)表示\(D_k\)中的第\(j\)个属性上取值为\(x^{(j)}\)的样本组成的集合,则条件概率为:

\[P(X^{(j)}=x^{(j)}|Y=c_k)=\frac{|D_k^{(j)}|}{|D_k|} \]


极大似然估计

\[P(Y=c_k)=\frac{\sum_{i=1}^{N} I(y_i=c_k)}{N}, k=1,2,\cdots,K \]

\[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)} \]

\(x_i^{(j)}\):是第\(i\)个样本的第\(j\)个特征。
\(a_{jl}\):第\(j\)个特征可能取的第\(l\)个值。
缺点:用极大似然估计可能会出现所要估计的概率值为0的情况,而影响到后验概率的计算,使分类产生误差。


贝叶斯估计

\[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} \]

其中,\(\lambda \geqslant 0\),常取\(\lambda = 1\),此时称为拉普拉斯平滑。\(S_j\)可取第\(j\)个属性可能的取值数。

\[P(Y=c_k)=\frac{\sum_{i=1}^{N} I(y_i=c_k)+\lambda}{N+K \lambda} \]

其中,\(K\)可取训练集\(D\)中可能的类别数。

拉普拉斯平滑避免了因训练集样本不充分而导致概率估值为零的问题,并且在训练集变大时,平滑过程所引入的先验的影响也会逐渐变得可忽略,使得估值渐趋向于实际概率值。


朴素贝叶斯算法

实际中,往往影响一件事的因素有多个。假设,影响\(B\)的因素有\(n\)个,分别是\(b_1,b_2,\cdots, b_n\),则\(P(A|B\))可写为:

\[P(C|b_1,b_2,\cdots,b_n)=\frac{P(C)P(b_1,b_2,\cdots,b_n|C)}{P(b_1,b_2,\cdots,b_n)} \]

根据链式法则,可得:

\[P(b_1,b_2,\cdots,b_n|C)=P(b_1|C)P(b_2|C,b_1)\cdots P(b_n|C,b_1,b_2,\cdots,b_{n-1}) \]

如果从\(b_1\)\(b_n\)这些特征之间,在概率分布上是条件独立的,即每个特征\(b_i\)与其他特征都不相关。则有:

\[P(C|b_1,b_2,\cdots,b_n)=\frac{1}{Z}P(C)\prod_{i=1}^{n}P(b_i|C) \]

其中,\(Z=P(b_1,b_2,\cdots,b_n)\)\(C\)是最终的类别(class)。

上式即为朴素贝叶斯分类器的模型函数。


  • 朴素贝叶斯分类器,它能够区分出\(k\)个类\((c_1,c_2,\cdots,c_k)\),用来分类的特征有\(n\)个:\((F_1,F_2,\cdots,F_n)\)
  • 现在有个样本\(s\),用NB分类器对它做预测,则需要先提取出这个样本的所有特征\(F_1\)\(F_n\),将其代入到下式中进行\(k\)次运算:

\[P(C=c_j)\prod_{i=1}^{n}P(F_i=f_i|C=c_j) \]

  • 然后比较这\(k\)次的结果,选出使得运算结果达到最大值的那个\(c_j\)作为预测值。

先验概率和条件概率通过在训练样本中间做统计,即可直接获得。


频率 VS 概率

如果简单地将频率当成了概率,实际上默认了“未被观测到”地就是出现概率未0的。这样做显然不合理。

解决思路1:拉普拉斯平滑。

posted @ 2018-10-12 17:59  pestle  阅读(990)  评论(0编辑  收藏  举报