首页 [机器学习]朴素贝叶斯在机器学习中的使用
文章
取消

[机器学习]朴素贝叶斯在机器学习中的使用

朴素贝叶斯定理

事件A,事件B相互独立时:

\[P(AB) = P(A)P(B)\]

事件A,事件B相互不独立时,则需要计算条件概率P(A|B)。定义 P(A|B)为事件B已经发生的前提下,事件A发生的概率。叫做事件B发生下时间A的条件概率。其基本求解公式为:

\[P(AB) = P(B)P(A|B)\]

同理

\[P(AB) = P(A) P(B|A)\]

也是成立的,因此有朴素贝叶斯公式:

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

朴素贝叶斯在机器学习的任务中,每个实例$x$可由属性值的合取描述,而目标函数$f(x)$从某有限集合$V$中取值。学习器被提供一系列关于目标函数的训练样例,以及新实例(描述为属性值的元组)$x=<a_1,a_2…a_n>$,然后要求预测新实例的目标值(或分类)。贝叶斯方法的目标是在给定描述实例的属性值$x=<a_1,a_2…a_n>$下,的到最可能的目标值$Vmap$(MAP,为最大似然估计)。

\[V_{map} =\underset{v_j \epsilon V}{arg\ max} P(v_j|(a_1,a_2..a_n) \newline = \underset{v_j \epsilon V}{arg\ max} \frac{P(a_1,a_2..a_n | v_j)P(v_j)}{P(a_1,a_2..a_n)} \newline =\underset{v_j \epsilon V}{arg\ max}{P(a_1,a_2..a_n | v_j)P(v_j)}\]

其中$P(a_1, a_2.. a_n)$为常数因此可以消除,只需分子最大化即可。又因为属性集${a_1, a_2.. a_n}$中的属性分别独立,所以进一步可得到:

\[V_{map} =\underset{v_j \epsilon V}{arg\ max}{P(a_1,a_2..a_n | v_j)P(v_j)} \newline = \underset{v_j \epsilon V}{arg\ max} P(v_j) \coprod_{i=1}^{n} {P(a_i|v_j)}\]

贝叶斯实例:细胞状态分类

假设某切片细胞中正常w1和异常w2两类的先验概率分别为$p(w1) = 0.9, p(w2) = 0.1$。

现有一待识别的细胞状态x,其由类条件概率密度分布曲线查得 $$p(xw1) = 0.2, p(xw2) = 0.4\(, 尝试对此细胞`x`进行分类。实际求\)P(w1x)和P(w2x)\(的概率大小。先求\)P(x)$$有:
\[P(x)=\sum_{i=1}^{n} {P(x|w_i)P(w_i)} = P(x|w_1)P(w_1) + P(x|w_2)P(w_2)\]

求得 \(P(x) = 0.2*0.9 + 0.4*0.1 = 0.22\)

根据贝叶斯公式有:

$$P(w1x) = P(xw1)P(w1)/P(x) = 0.20.9/0.22 = 0.818$$
$$P(w2x) = 1-P(w1x) = 0.182$$

因此$P(w1|x)$的概率更大,可将x状态分类为$w1$(正常)。

贝叶斯实例:垃圾邮件分类

样本:1000封邮件,每个邮件被标记为垃圾邮件或者非垃圾邮件
分类目标:给定第1001封邮件,确定它是垃圾邮件还是非垃圾邮件
方法:朴素贝叶斯
类别c:垃圾邮件c1,非垃圾邮件c2
词汇表:统计1000封邮件中出现的所有单词,记单词数目为N,即形成词汇表。
向量化:将每个样本si向量化:初始化N维向量xi,若词wj在si中出现,则xij=1,否则为0,从而得到1000个N维向量。

运用贝叶斯定理有

\[P(c|x)= \frac {P(x|c)P(c)}{P(x)}\]

其中

\[P(x|c)= P(x_1,x_2..x_n|c) = \prod_{i=1}^{n}{P(x_i|c)}\]

\[P(x)= \prod_{i=1}^{n}{P(x_i)}\]

带入即可求算。

$P(xi|ci) $ 表示在cj的分类下,第i个单词xi出现的概率。
$P(xi) $ 表示所有样本中单词xi出现的概率。
$P(cj) $ 表示邮件cj出现的概率。

问题1:遇到生词:拉普拉斯平滑

朴素贝叶斯方法有个致命的缺点就是对数据稀疏问题过于敏感。遇到生词的情况下P(x|c)等于,P(c|x)也为0。

为了解决这个问题,可以等效地扩大样本的数量,使得未出现特征值赋予一个“小”的值而不是0。这就是拉普拉斯平滑做的事情,将 $$p(x1c1)= n1/n\(平滑后就是:\)p(x1c1)= (n1+1) /(n+N)$$。其中N为样本总数,这种加一的平滑也称加一平滑。

问题2:一个词在样本中出现多次,和一个词在样本中出现一次,形成的词向量相同

将“出现 | 不出现”的布尔值改为词频计数。

贝叶斯网络

把系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。水有点深。相关的有马尔科夫模型以后再仔细学习。

参考

本文由作者按照 CC BY 4.0 进行授权

利用opencv提取图片中矩形区域的一种方法

[机器学习]决策树中的信息增益度量