0%

朴素贝叶斯

朴素贝叶斯

今天的人工智能课上了朴素贝叶斯分类

全概率公式

例子:假设现在有3个桶,每一个桶里面都放着不同数量的红球和白球,求拿到一个红球的概率

解答:这个例子其实很容易计算,首先,我们拿到每一个桶的概率是Ai=1/3A_i = 1/3,然后在每一个桶中拿到红球的概率是PiP_i,则最后我们从桶中取出和红球的概率就是i=1nAiPi\sum_{i = 1}^n A_i P_i

其实这个就是全概率公式

公式定义

如果事件组B1,B2,..B_1, B_2, ..满足

  • B1,B2...B_1, B_2...两两互斥,即BiBj,ij,i,j=1,2,...B_i \cap B_j \neq \emptyset, i \neq j, i, j = 1, 2, ...P(Bi)>0,i=1,2,...P(B_i) > 0, i = 1, 2, ...
  • B1B2...=ΩB_1 \cup B_2 \cup ... = \Omega,则称事件组B1,B2,...B_1, B_2, ...是样本空间Ω\Omega的一个划分

B1,B2...B_1, B_2...是样本空间Ω\Omega的一个划分,A为任意事件,则

P(A)=i=1P(Bi)P(ABi)P(A) = \sum_{i =1}^{\infty}P(B_i)P(A|B_i)

全概率公式的意义:当直接计算P(A)P(A)比较困难,而P(Bi),P(ABi)P(B_i), P(A|B_i)的计算较为简单时,可以利用全概率公式计算P(A)P(A)。思想就是,将事件分解成几个小事件,通过求小事件的概率,然后相加从而求得事件A的概率

在上面的题目中,我们通过已知条件求结果,求出来的就是先验概率,也就是已知球的一个情况,然后求出拿到和红球的概率

改变题目

如果将原问题改成,我们当前拿到了一个红球,求拿到的红球是来自于哪一个桶的?这个问题就变成了求后验概率

也就是说后验概率是一直结果,求条件的一个问题

想想我们机器学习当中的分类问题是不是也是一个道理?已知训练集,给出一张图片,求它是来自于哪一个类别的?

所以,这就引入了我们今天要讲的贝叶斯分类。(可用于图片分类)

贝叶斯公式

公式定义

首先给出贝叶斯公式

P(BiA)=P(Bi)P(ABi)j=1nP(Bj)P(ABj)P(B_i|A) = \frac{P(B_i)P(A|B_i)}{\sum_{j = 1}^{n} P(B_j)P(A|B_j)}

注意:

P(Bi)P(B_i) 是一个先验概率,一般是根据经验所得。比如我的邮箱收到一份邮件,在没有进行浏览的条件下,我根据以往经验猜这个邮件是垃圾邮件的概率是20%,即先验概率

P(ABi)P(A|B_i)是一个似然度,注意,这里不是概率,而是一个似然度,也就是根据统计频次得到的。

j=1nP(Bj)P(ABj)\sum_{j = 1}^{n} P(B_j)P(A|B_j)是全概率公式。

P(BiA)P(B_i|A)是一个后验概率

即贝叶斯公式提供了一个根据先验概率p(Bi)p(B_i)p(A)p(A)和观察概率 p(ABi)p(A|B_i),然后计算后验概率p(BiA)p(B_i|A)的方法

机器学习中的贝叶斯公式

在机器学习中,我们将这个公式稍微换一下:

P(hD)=P(Dh)P(h)P(D)P(h|D) = \frac{P(D|h) P(h)}{P(D)}

基本术语

D:训练数据

H:假设空间

h:假设

P(h):假设h的先验概率(Prior Probability):即没有训练数据前假设h拥有的初始概率

P(D):训练数据的先验概率,即在没有确定某一假设成立时的概率

P(D|h):似然度,在假设h成立的情况下,观察到的D的概率(Or 频次)

P(h|D):后验概率,在给定训练系D是h成立的概率

特点

后验概率正比与P(h)和P(D|h),反比与P(D)

极大后验假设(maximum a posterior, MAP)

给定数据D和H中假设的先验概率,具有最大后验概率的假设h

hMAP=argmaxhHp(hD)h_{MAP} = \underset{h \in H} {argmax} p(h|D)

=argmaxhHP(Dh)P(h)P(D)= \underset{h \in H} {argmax} \frac{P(D|h)P(h)}{P(D)}

=argmaxhHP(Dh)P(h)= \underset{h \in H} {argmax} P(D|h)P(h)

因为这里求得使argmax,即 使后面式子达到最大时,h的取值大小,因此我们只需要比较概率的大小即可,因为大家有一个共同的分母,即不依赖假设h的一个常量,因此不需要求这个,只需要求分子部分然后比较大小即可。

通过这个式子我们可以举一个小例子,来计算一下这个概率

极大似然假设(Maximum Likelihood, ML)

当H中的假设具有相同的先验概率时,给定h,使P(D|h)最大的假设hMLh_{ML}

hMAP=argmaxhHp(hD)h_{MAP} = \underset{h \in H} {argmax} p(h|D)

=argmaxhHP(Dh)P(h)P(D)= \underset{h \in H} {argmax} \frac{P(D|h)P(h)}{P(D)}

=argmaxhHP(Dh)P(h)= \underset{h \in H} {argmax} P(D|h)P(h)

=argmaxhHP(Dh)= \underset{h \in H} {argmax} P(D|h)

因为P(h)大小也都变成一样的了,因此实际上也不需要计算了,不过这个假设有一点太理想化了,因此在实际当中并不常用。

举例

一个天气估计问题

两个假设H:h1={晴天} h2={非晴天},可观察到的数据:温度高+和温度低-

先验知识p(h): 北京晴天的概率0.99,即p(h1) = 0.99, 非晴天0.01,即p(h2) = 0.01

观察到的概率p(D|h): P(温度高|晴天) = 0.85, P(温度低|非晴天) = 0.93

问题:现在观察到温度低,判断是否为非晴天?

解答:极大后验计算

P(晴天|温度低)\propto P(温度低|晴天)* P(晴天) = 0.15 * 0.99 = 0.1485

P(非晴天|温度低) \propto P(温度低|费晴天) * P(非晴天) = 0.93 * 0.01 = 0.0093

因此,最后的答案是晴天

其实可以通过这道题, 我们发现

  • 贝叶斯推理的结果很大程度上是依赖于先验概率的
  • 并没有完全地被接受或者拒绝假设,只是在观察到较多的数据后假设的可能性增大或减小了

看到这里,应该会计算概率了吧

朴素贝叶斯分类器

在前面,我们看到的例子都是基于一个属性, 即我们的先验概率只有一个P(B)P(B)

如果我们遇到了这样的问题:

给定训练集合D={(xi,yi)}D=\{(x_i, y_i)\},其中每一个实例x=<a1,...,an>x = <a_1, ..., a_n>由属性值的合曲描述,viVv_i \in V。给定一个分类函数f(x)f(x)。对新给定的实例xnew=<a1,...,an>x_{new} = <a_1, ..., a_n>,得到最优可能的目标值vMAPv_{MAP}

vMAP=argmaxvjP(vja1,...,an)v_{MAP} = \underset {v_j} {argmax} P(v_j|a_1, ..., a_n)

这个时候们使用贝叶斯公式:

vMAP=argmaxvjP(a1,...,anvj)P(vj)P(a1,...,an)v_{MAP} = \underset {v_j} {argmax} \frac{P(a_1, ..., a_n|v_j)P(v_j)}{P(a_1, ..., a_n)}

=argmaxvjP(a1,...,anvj)P(vj)= \underset {v_j} {argmax} P(a_1, ..., a_n|v_j)P(v_j)

基于训练数据估计P(v),p(xv)P(v), p(x|v),估计P(v)P(v)很容易(计算每个目标值vjv_j出现在训练数据中的频率),但是估计P(a1,...,anvj)P(a_1, ..., a_n|v_j)或遇到数据稀疏的问题,除非有一个很大的训练数据集,否则无法得到可靠的估计。还有就是由于属性之间可能存在相关性,因此这个概率也会非常的不好算。

因此,朴素贝叶斯就做了一个非常粗暴的假设:独立性假设。在给定目标值是,属性值之间相互条件独立,即:

P(a1,...,anvj)=iP(aivj)P(a_1, ..., a_n|v_j) = \underset {i} {\prod} P(a_i|v_j)

因此,最终的朴素贝叶斯分类器就变成了下面这个模样:

vNB=argmaxvjVP(vj)iP(aivj)v_{NB} = \underset {v_j \in V}{argmax} P(v_j) \underset{i} {\prod} P(a_i|v_j)

举例

接下来看一个跟机器学习看起来比较相关的例子吧:

已知数据:

1575265104567

给新实例分类:

<Outlook = sunny, Temperate = cool, Humidity = high, Wind = strong>,是否适合打网球呢?

首先根据上表,计算出所需要的概率值

P(Yes)=914,P(sunnyYes)=29,P(coolYes)=39,P(highYes)=39,P(strongYes)=39P(Yes) = \frac{9}{14}, P(sunny|Yes) = \frac{2}{9}, P(cool|Yes) = \frac{3}{9}, P(high|Yes) = \frac{3}{9}, P(strong|Yes) = \frac{3}{9}

P(No)=514,P(sunnyNo)=35,P(coolNo)=15,P(highYes)=45,P(strongNo)=35P(No) = \frac{5}{14}, P(sunny|No) = \frac{3}{5}, P(cool|No) = \frac{1}{5}, P(high|Yes) = \frac{4}{5}, P(strong|No) = \frac{3}{5}

P(Yes<...>)=P(Yes)P(sunnyYes)P(coolYes)P(highYes)P(strongYes)=914×29×39×39×39=0.0053P(Yes|<...>) = P(Yes) P(sunny|Yes)P(cool|Yes)P(high|Yes)P(strong|Yes) = \\\frac{9}{14} \times \frac{2}{9} \times \frac{3}{9} \times \frac{3}{9} \times \frac{3}{9} = 0.0053

P(No<...>)=P(No)P(sunnyNo)P(coolNo)P(highNo)P(strongNo)=514×35×15×45×35=0.0203P(No|<...>) = P(No) P(sunny|No)P(cool|No)P(high|No)P(strong|No) = \\\frac{5}{14} \times \frac{3}{5} \times \frac{1}{5} \times \frac{4}{5} \times \frac{3}{5} = 0.0203

因此,结果是不适合打网球

m-估计

但是,我们可能在做连乘的时候会遇到这样一个问题,就是当前的概率为0,这个其实很有可能发生,比如在分析文本的时候,有一个单词没有出现在我们的单词字典当中,那么这个单词的概率就为0,这样会导致整个概率值就变成0,其实这个很不合理。因此我们需要进行概率平滑:

我们通过在全部事件上观察某事件出现的比例来估计概率,当样本很小时,采用平滑技术,m-估计:

nc+mpn+m\frac{n_c+mp}{n+m}

  • p是将要确定的概率的先验估计(在缺少其他信息时,选择p的一种类型的方法是均匀概率,比如某个属性有k个可能值,那么p=1kp = \frac{1}{k}
  • m是一个称为等效样本大小的容量(m被称为等效样本的大小的原因是将n个实际的观察样本扩大,加上m个按p分布的虚拟样本)

文本分类

1575266113587

这里我们发现最后的贝叶斯公式在进行m-估计之后,分母变成了n+Vocabularyn+|Vocabulary|,而分子变成了nk+1n_k+1

1575266179801