朴素贝叶斯
今天的人工智能课上了朴素贝叶斯分类
全概率公式
例子:假设现在有3个桶,每一个桶里面都放着不同数量的红球和白球,求拿到一个红球的概率
解答:这个例子其实很容易计算,首先,我们拿到每一个桶的概率是Ai=1/3,然后在每一个桶中拿到红球的概率是Pi,则最后我们从桶中取出和红球的概率就是∑i=1nAiPi
其实这个就是全概率公式
公式定义
如果事件组B1,B2,..满足
- B1,B2...两两互斥,即Bi∩Bj=∅,i=j,i,j=1,2,...且P(Bi)>0,i=1,2,...
- B1∪B2∪...=Ω,则称事件组B1,B2,...是样本空间Ω的一个划分
设B1,B2...是样本空间Ω的一个划分,A为任意事件,则
P(A)=∑i=1∞P(Bi)P(A∣Bi)
全概率公式的意义:当直接计算P(A)比较困难,而P(Bi),P(A∣Bi)的计算较为简单时,可以利用全概率公式计算P(A)。思想就是,将事件分解成几个小事件,通过求小事件的概率,然后相加从而求得事件A的概率
在上面的题目中,我们通过已知条件求结果,求出来的就是先验概率,也就是已知球的一个情况,然后求出拿到和红球的概率
改变题目
如果将原问题改成,我们当前拿到了一个红球,求拿到的红球是来自于哪一个桶的?这个问题就变成了求后验概率
也就是说后验概率是一直结果,求条件的一个问题
想想我们机器学习当中的分类问题是不是也是一个道理?已知训练集,给出一张图片,求它是来自于哪一个类别的?
所以,这就引入了我们今天要讲的贝叶斯分类。(可用于图片分类)
贝叶斯公式
公式定义
首先给出贝叶斯公式
P(Bi∣A)=∑j=1nP(Bj)P(A∣Bj)P(Bi)P(A∣Bi)
注意:
P(Bi) 是一个先验概率,一般是根据经验所得。比如我的邮箱收到一份邮件,在没有进行浏览的条件下,我根据以往经验猜这个邮件是垃圾邮件的概率是20%,即先验概率
P(A∣Bi)是一个似然度,注意,这里不是概率,而是一个似然度,也就是根据统计频次得到的。
∑j=1nP(Bj)P(A∣Bj)是全概率公式。
P(Bi∣A)是一个后验概率
即贝叶斯公式提供了一个根据先验概率p(Bi)、p(A)和观察概率 p(A∣Bi),然后计算后验概率p(Bi∣A)的方法
机器学习中的贝叶斯公式
在机器学习中,我们将这个公式稍微换一下:
P(h∣D)=P(D)P(D∣h)P(h)
基本术语
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=h∈Hargmaxp(h∣D)
=h∈HargmaxP(D)P(D∣h)P(h)
=h∈HargmaxP(D∣h)P(h)
因为这里求得使argmax,即 使后面式子达到最大时,h的取值大小,因此我们只需要比较概率的大小即可,因为大家有一个共同的分母,即不依赖假设h的一个常量,因此不需要求这个,只需要求分子部分然后比较大小即可。
通过这个式子我们可以举一个小例子,来计算一下这个概率
极大似然假设(Maximum Likelihood, ML)
当H中的假设具有相同的先验概率时,给定h,使P(D|h)最大的假设hML
hMAP=h∈Hargmaxp(h∣D)
=h∈HargmaxP(D)P(D∣h)P(h)
=h∈HargmaxP(D∣h)P(h)
=h∈HargmaxP(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(晴天|温度低)∝ P(温度低|晴天)* P(晴天) = 0.15 * 0.99 = 0.1485
P(非晴天|温度低) ∝ P(温度低|费晴天) * P(非晴天) = 0.93 * 0.01 = 0.0093
因此,最后的答案是晴天
其实可以通过这道题, 我们发现
- 贝叶斯推理的结果很大程度上是依赖于先验概率的
- 并没有完全地被接受或者拒绝假设,只是在观察到较多的数据后假设的可能性增大或减小了
看到这里,应该会计算概率了吧
朴素贝叶斯分类器
在前面,我们看到的例子都是基于一个属性, 即我们的先验概率只有一个P(B)
如果我们遇到了这样的问题:
给定训练集合D={(xi,yi)},其中每一个实例x=<a1,...,an>由属性值的合曲描述,vi∈V。给定一个分类函数f(x)。对新给定的实例xnew=<a1,...,an>,得到最优可能的目标值vMAP
vMAP=vjargmaxP(vj∣a1,...,an)
这个时候们使用贝叶斯公式:
vMAP=vjargmaxP(a1,...,an)P(a1,...,an∣vj)P(vj)
=vjargmaxP(a1,...,an∣vj)P(vj)
基于训练数据估计P(v),p(x∣v),估计P(v)很容易(计算每个目标值vj出现在训练数据中的频率),但是估计P(a1,...,an∣vj)或遇到数据稀疏的问题,除非有一个很大的训练数据集,否则无法得到可靠的估计。还有就是由于属性之间可能存在相关性,因此这个概率也会非常的不好算。
因此,朴素贝叶斯就做了一个非常粗暴的假设:独立性假设。在给定目标值是,属性值之间相互条件独立,即:
P(a1,...,an∣vj)=i∏P(ai∣vj)
因此,最终的朴素贝叶斯分类器就变成了下面这个模样:
vNB=vj∈VargmaxP(vj)i∏P(ai∣vj)
举例
接下来看一个跟机器学习看起来比较相关的例子吧:
已知数据:
/1575265104567.png)
给新实例分类:
<Outlook = sunny, Temperate = cool, Humidity = high, Wind = strong>,是否适合打网球呢?
首先根据上表,计算出所需要的概率值
P(Yes)=149,P(sunny∣Yes)=92,P(cool∣Yes)=93,P(high∣Yes)=93,P(strong∣Yes)=93
P(No)=145,P(sunny∣No)=53,P(cool∣No)=51,P(high∣Yes)=54,P(strong∣No)=53
P(Yes∣<...>)=P(Yes)P(sunny∣Yes)P(cool∣Yes)P(high∣Yes)P(strong∣Yes)=149×92×93×93×93=0.0053
P(No∣<...>)=P(No)P(sunny∣No)P(cool∣No)P(high∣No)P(strong∣No)=145×53×51×54×53=0.0203
因此,结果是不适合打网球
m-估计
但是,我们可能在做连乘的时候会遇到这样一个问题,就是当前的概率为0,这个其实很有可能发生,比如在分析文本的时候,有一个单词没有出现在我们的单词字典当中,那么这个单词的概率就为0,这样会导致整个概率值就变成0,其实这个很不合理。因此我们需要进行概率平滑:
我们通过在全部事件上观察某事件出现的比例来估计概率,当样本很小时,采用平滑技术,m-估计:
n+mnc+mp
- p是将要确定的概率的先验估计(在缺少其他信息时,选择p的一种类型的方法是均匀概率,比如某个属性有k个可能值,那么p=k1)
- m是一个称为等效样本大小的容量(m被称为等效样本的大小的原因是将n个实际的观察样本扩大,加上m个按p分布的虚拟样本)
文本分类
/1575266113587.png)
这里我们发现最后的贝叶斯公式在进行m-估计之后,分母变成了n+∣Vocabulary∣,而分子变成了nk+1
/1575266179801.png)