【西瓜书】第7章 贝叶斯分类器

2019-06-12  本文已影响0人  一杭oneline

叶斯分布是运用概率学进行计算和分类的方法,与其说是一种算法,不如说是一种思想,先了解概念

条件概率

条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。

比如,在同一个样本空间Ω中的事件或者子集A与B,如果随机从Ω中选出的一个元素属于B,那么这个随机选择的元素还属于A的概率就定义为在B的前提下A的条件概率,所以:P(A|B) = |A∩B|/|B|,接着分子、分母都除以|Ω|得到:

联合概率

表示两个事件共同发生的概率。A与B的联合概率表示为P(A∩B)或者P(A,B)。

边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中,把最终结果中那些不需要的事件通过合并成它们的全概率,

而消去它们(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率),这称为边缘化(marginalization),比如A的边缘概率表示为P(A),

B的边缘概率表示为P(B)。

接着,考虑一个问题:P(A|B)是在B发生的情况下A发生的可能性。

1)首先,事件B发生之前,我们对事件A的发生有一个基本的概率判断,称为A的先验概率,用P(A)表示;

2)其次,事件B发生之后,我们对事件A的发生概率重新评估,称为A的后验概率,用P(A|B)表示;

3)类似的,事件A发生之前,我们对事件B的发生有一个基本的概率判断,称为B的先验概率,用P(B)表示;

4)同样,事件A发生之后,我们对事件B的发生概率重新评估,称为B的后验概率,用P(B|A)表示。

总结:

1. P(A): 先验概率 (边缘概率)即某事件发生的概率

2. P(B|A):后验概率 (条件概率)

3. P(AB): 联合概率 (AB同时发生的概率)

贝叶斯公式

西瓜书

以上作为书中理论的补充内容。

以下是书中重要内容摘抄:

【西瓜书】第7章 贝叶斯分类器 【西瓜书】第7章 贝叶斯分类器

关于(7.8)式的拓展说明:

朴素贝叶斯算法分类时,对给定输入x,通过学习到的模型计算后验概率分布,将后验概率最大的类作为输入x的类输出.后验概率根据贝叶斯定理计算:

朴素贝叶斯公式

上面的公式是后验概率分布中的一项,由于对于相同输入x下,不同类别的后验概率的分母都相同,而最终的类输出是后验概率分布中概率最大对应的类别,所以我们可以简化为只比较分子的大小就可以确定最终的结果,也就是说,最终类输出为:

.

如果我们对右边的乘积概率取log,连乘积就可以转换成为和,可得公式:

.

【西瓜书】第7章 贝叶斯分类器 【西瓜书】第7章 贝叶斯分类器 【西瓜书】第7章 贝叶斯分类器 吉布斯采样

为什么用贝叶斯,有什么用

奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。

然而,我们其实并不需要依赖于这个先验的奥卡姆剃刀,因为有人可能会争辩说:你怎么就能说越高阶的多项式越不常见呢?我偏偏觉得所有阶多项式都是等可能的。好吧,既然如此那我们不妨就扔掉 P(h) 项,看看 P(D | h) 能告诉我们什么。我们注意到越是高阶的多项式,它的轨迹弯曲程度越是大,到了八九阶简直就是直上直下,于是我们不仅要问:一个比如说八阶多项式在平面上随机生成的一堆 N 个点偏偏恰好近似构成一条直线的概率(即 P(D | h) )有多大?太小太小了。反之,如果背后的模型是一条直线,那么根据该模型生成一堆近似构成直线的点的概率就大得多了。这就是贝叶斯奥卡姆剃刀。

贝叶斯垃圾邮件过滤器

朴素贝叶斯应用

问题是什么?问题是,给定一封邮件,判定它是否属于垃圾邮件。按照先例,我们还是用 D 来表示这封邮件,注意 D 由 N 个单词组成。我们用 h+ 来表示垃圾邮件,h- 表示正常邮件。问题可以形式化地描述为求:

P(h+|D) = P(h+) * P(D|h+) / P(D)

P(h-|D) = P(h-) * P(D|h-) / P(D)

其中 P(h+) 和 P(h-) 这两个先验概率都是很容易求出来的,只需要计算一个邮件库里面垃圾邮件和正常邮件的比例就行了。然而 P(D|h+) 却不容易求,因为 D 里面含有 N 个单词 d1, d2, d3, .. ,所以P(D|h+) = P(d1,d2,..,dn|h+) 。我们又一次遇到了数据稀疏性,为什么这么说呢?P(d1,d2,..,dn|h+) 就是说在垃圾邮件当中出现跟我们目前这封邮件一模一样的一封邮件的概率是多大!开玩笑,每封邮件都是不同的,世界上有无穷多封邮件。瞧,这就是数据稀疏性,因为可以肯定地说,你收集的训练数据库不管里面含了多少封邮件,也不可能找出一封跟目前这封一模一样的。结果呢?我们又该如何来计算 P(d1,d2,..,dn|h+) 呢?

我们将 P(d1,d2,..,dn|h+)  扩展为: P(d1|h+) * P(d2|d1, h+) * P(d3|d2,d1, h+) * .. 。熟悉这个式子吗?这里我们会使用一个更激进的假设,我们假设 di 与 di-1 是完全条件无关的,于是式子就简化为 P(d1|h+) * P(d2|h+) * P(d3|h+) * .. 。这个就是所谓的条件独立假设,也正是朴素贝叶斯方法的朴素之处。而计算 P(d1|h+) * P(d2|h+) * P(d3|h+) * .. 就太简单了,只要统计 di 这个单词在垃圾邮件中出现的频率即可。

贝叶斯网络说明

贝叶斯网络是为了解决不定性和不完整性问题而提出的,在多个领域中获得了广泛应用。贝叶斯网络是基于概率推理的图形化网络,而贝叶斯公式则是这个概率网络的基础。贝叶斯网络中的每个点代表一个随机变量,都是具有实际含义、需要人为设计的,点和点之间的边代表不确定的因果关系,例如 节点E直接影响到节点H,即E→H,则用从E指向H的箭头建立结点E到结点H的有向弧(E,H),权值(即连接强度)用条件概率P(H|E)来表示。

实际上,如果事物之间的关系能够用一条链串起来,形成了贝叶斯网络的一个特例——马尔可夫链,换个角度看, 贝叶斯网络是马尔可夫链的非线性扩展。贝叶斯网络中当某点的一个证据出现后,整个网络中事件的概率都会变化。

简单地,由于多个变量间存在着可能的依赖性,贝叶斯网络说明了其中的联合条件概率分布,允许在变量的子集间定义条件独立性。使用贝叶斯网络的过程与使用贝叶斯方法的过程是类似的:

1.通过多个离散变量建立网络,是一个有向无环图

2.参数的设置或学习,即对DAG进行遍历,计算各节点的概率表

3.网络推理,对因果关系得到置信概率

4.推理结果

例如, 社交网络中不真实账户的检测问题。首先确定网络中的随机变量:

账户的真实性 A

头像的真实性 H

发帖即日志的密度 L

好友的密度 F

使用观测值示例化H,L,F,把随机值赋给A,得到

P(A|H,L,F) = P(H|A)P(L|A)P(F|A,H)

然后就可以在社交网络中尝试使用该推理结果了。

贝叶斯的几种形式

伯努利朴素贝叶斯,多项式朴素贝叶斯和高斯朴素贝叶斯

不同类型的朴素贝叶斯对参数的求法不同,而根源在于对P条件概率(X=x|Y=c_k)的假设分布不同,也就是说在给定类别的情况下,对X假设的分布不同:伯努利假设是伯努利分布(其实应该是多变量伯努利分布),多项式假设是多项式分布,而高斯也就是假设是高斯分布(其实是多变量高斯分布),分布类型不同导致出现不同类型的贝叶斯模型。

伯努利分布

伯努利分布,又叫做两点分布或0-1分布,是一个离散型概率分布.称随机变量X有伯努利分布,参数为p(0< p <1),它分别以概率p和1-p取1和0为值。

最简单的例子就是抛硬币,硬币结果为正或反.

多元伯努利分布

同时进行多个不同的伯努利实验,其中x是一个向量,也是一个向量,表示不同伯努利实验的参数.

伯努利多项式将文档的生成模型P(X=x|Y=c_k)假设服从为多元伯努利分布,由于我们之前做的特征独立性假设,是一个向量形式,而其中,也就是说x向量是onehot形式的向量(每个维度值是0或1),表示这个维度的特征是否出现.特征集有n个特征,特征集的维度决定了输入空间X的维度,而且特征集的维度可以对应到输入空间的各个维度上.

因为特征之间的独立性,所以多元伯努利变成各个伯努利分布的连乘积,需要注意的一点是因为是伯努利分布,0-1,特征出现有一个概率p,特征不出现也有一个概率1-p.最终模型的参数估计完成之后,对新样本进行预测时,如果某个特征不出现,需要乘上这个特征不出现的概率,不能只计算特征出现的概率!!!

对应的伯努利朴素贝叶斯模型为:

为了简化运算,我们可以将分母忽略,虽然对应的结果不是真正的概率,但是相同样本的各个后验概率之间的大小关系保持不变,同时如果两边同时做log运算,后验概率之间的大小关系同样保持不变.因此,

了解了多元伯努利分布之后,接下来的工作就是对参数进行估计,计算,

参数估计

参数估计的过程也是朴素贝叶斯分类器学习的过程.而参数估计可以使用极大似然估计.先验概率

的极大似然估计是, k=1,2,...,K

其中,I(x)是一个指示函数,如果x为真,I(x)结果为1,如果x为假,I(x)=0.用语言描述来说,

这个概率等于在N个样本的数据集中,类别为的样本所占的比例.条件概率的极大似然估计是:

用语言描述来说,条件概率等于在类别为

的样本集合(数据集的子集)中,第i个特征等于的概率,是0或1,而且服从伯努利分布,所以只需要计算一个,比如p,因为两个概率和为1(这是同一个变量).

这些参数估计完之后,朴素贝叶斯就完成了学习过程,接下来就可以使用它去进行预测了(应用才是最终的目的).

0概率处理

由于是伯努利分布,参数p在[0,1]之间,有可能存在,也就是存在0概率.

举例来说,在当前类别下的所有样本中特征i都出现了(=1),根据上面的条件概率极大似然估计,可以知道,那么对应的,,那么当新样本来的时候,加入存在一条记录x,它很巧地没有第i个特征(这不巧了吗?不是),由于0概率的存在,那么使用上面的贝叶斯公式,就会出现属于某个列别的概率为0,.但这种情况是应该避免的,那么如何避免呢?

我们在对条件概率进行极大似然估计时,针对分子和分母做一些小变动,

处理0概率后的极大似然估计

其中,Si表示第i个特征不同取值的个数,由于这里是one-hot,取值为2,

所以

乘以是保证个不同取值对应的条件概率之和为1,不偏袒任意一种情况,一视同仁.

Multinomial Naive Bayes 多项式朴素贝叶斯

多项式朴素贝叶斯,假设P(X=x|Y=c_k)是多项式分布.在了解多项式朴素贝叶斯之前,先介绍一下什么是多项式分布?

多项式分布

将伯努利分布的单变量扩展到d维向量,其中的概率是,得到离散分布:

       且  (单变量变成多维向量,不是变成多变量,这要重点关注)

其中x,都是d维向量形式。

在此的基础上扩展二项分布到多项式分布(Multinomial distribution),该分布描述的是在n次独立实验中有的概率,其密度函数可以表达为如下形式:

需要注意的是,应用在文本分类的多项式朴素贝叶斯模型之前,一般多项式条件概率如下:

我们的多项式朴素贝叶斯概率模型为:

(上式是 7.8 原公式的变形)

这里为了方便,首先我们假设文章长度和文章的类别之间没有相关性(事实上也并不成立,比如说相对较长的邮件,相比垃圾邮件而言,正常邮件的概率更大),也就是说P(|x|)的分布与文章所属类别无关.另一方面,由于最终所属类别是后验概率最大对应的类别,所以,我们可以将文章长度P(|x|)建模的概率,忽略掉,就像我们之前忽略伯努利分布中的分母一样.

再者,为了更加方便,我们通常对两边取log运算,将幂次运算转换成线性运算:

我们也可以将文章长度阶乘省略,然后变成:

这样就变成线性运算,就和线性回归一样,运算高效而简单.

将文档模型对应到多项式分布上得到多项式朴素贝叶斯,在我们对其做出假设分布之后,剩下的工作就是对假设分布下每个类别下的d个条件概率以及先验分布进行估计.此外,还需要说明的一点是:多项式朴素贝叶斯模型采用词袋模型,每个xi表示第i个特征出现的次数,也就是词频term-frequency,有时候也可以使用tf-idf作为值.(对文档类型进行鉴定,从文档中计算每个词出现的频率,而后通过此频率的向量,推断出是哪一类文档)

参数估计

参数估计的过程也是朴素贝叶斯分类器学习的过程.而参数估计可以使用极大似然估计.先验概率

的极大似然估计是, k=1,2,...,K

其中,I(x)是一个指示函数,如果x为真,I(x)结果为1,如果x为假,I(x)=0.用语言描述来说,

这个概率等于在N个样本的数据集中,类别为.的样本所占的比例

条件概率的极大似然估计是:

用语言描述来说,条件概率等于在类别为 ck 的样本集合(数据集的子集)中,第t个特征出现的概率等于ck类样本第t个特征出现的总次数(考虑词频,不再是0,1)占类样本的总词数(文章长度之和,文章单词特征是固定的,考虑了词频)的比例.

为了方便理解,将表示为第k类样本集合中第t个特征出现的总次数,表示为在所有样本中第k类样本的总词数(第k类样本长度之和,考虑频数),简写成:

需要注意的是,

意思是给定分类下,各个维度的概率之和为1,在文章分类中,就是给定文章分类的情况下,各个词出现的条件概率之和为1,和每个词出现多少词没有关系.

(多项式分布感觉比较难,在找资料看的时候也只是粗略有些明白……)

0概率处理

和伯努利朴素贝叶斯模型类似,有可能存在某一维度,数据集在这一维度上都是0,对应到文档分类上,就是这个词在所有文章中都没有出现过(词典选的不好,特征选择不好),这种情况就会出现0概率.所以我们需要对条件概率做一点小改动:

其中,d表示数据维度为d(有d个特征,每个特征都加,保证概率和为1,需要乘d).当

时,叫做Laplace Smoonthing拉普拉斯平滑,当然也可以小于1.

摘抄此文

上一篇下一篇

猜你喜欢

热点阅读