首页 > 代码库 > 朴素贝叶斯

朴素贝叶斯

一、随机变量

可以取不同的值,不同的值有不同的概率。

看到随机变量取任何值,都要想到背后有个概率,如果是连续变量,在每一点的概率是0,连续型随机变量通常只考虑概率密度。

机器学习就是通过一堆随机变量预测另一个随机变量,先假设随机变量之间的概率分布,然后从数据中估计分布的参数。

任何概率模型的假设都是简化,不能完全刻画数据,并且每个模型都有其适用范围,比如朴素贝叶斯对于文本分类效果好。

二、贝叶斯定理

贝叶斯定理给出了从一种条件概率P(B|A)怎么推到另一种条件概率P(A|B):

 技术分享

这个东西有什么用呢,P(A|B)可能是个不好算的量,而P(B|A)好算,所以可以通过好算的变量推出不好算的变量。

三、贝叶斯定理在机器学习中的应用

在机器学习中,A:未知参数/类别   B: 已知数据(层次贝叶斯中也可能是参数),如果是已知数据的话,P(B)就是个常数,不是很重要。

P(A)根据常理指定不同参数/类别的先验概率,这个数不准一般不是很要紧,一般P(B|A)会比较大。  P(B|A)模型假设的分布,指定参数A,数据B就能根据假设分布求出P(B|A)。

四、联合分布

联合分布的表格表示法,用表格把各种情况的联合概率都穷举出来,可做统计推断技术分享,把P(C高)的格子里的概率都加起来,然后用P(K强腿,C高)除以那个前面那个概率和。

 技术分享

但这种方法需要做很大的表格,参数很多,并且需要完整的表格才可以;另外表示不了连续变量。如何改善呢?

并不是所有变量都是相关的,可以通过常识,分析变量间的关系,利用变量间独立/相关的关系,把分布分解为多个因子,由此而来著名的贝叶斯网络:可以看出这个网络之间变量的关系都是有向的,有向边:随机变量间的相关性(实质上是条件概率分布)。边的方向怎么决定了,一般是找到最自由的变量(不怎么受其他因素影响),然后找到这些变量影响了哪些因素。

每个节点和它的父节点组成因子,下图中有三个因子。联合分布分解成各因子的乘积。这个时候就可以通过知道各个因子的概率,从而知道整体所有的概率,大大简化了上面大表格的情况了。

技术分享

技术分享

下图中显示了,我们需要知道的各个因子的概率情况。我们可以数一数下图中有多少个参数呢,总共格子有24个,但是由于没有行的和的概率都是1,所以实际的参数只有15个,远远小于之前的全表格47个。

 技术分享

由此引出了贝叶斯网络的应用:

  1. 可以用过智商测试的值推测智商,也就是由子节点推测父节点。
  2. 观测变量间独立性

F只受K和Z影响

Z未知: F和C相关(通过Z “传递”相关性)

Z已知: F和C独立(C中所有能影响F的信息都已包含在Z中)

当Z已知时,可以利用此估计技术分享

技术分享

技术分享

复杂的贝叶斯网络是LDA主题模型。超参(参数的参数)

技术分享

五、朴素贝叶斯模型

垃圾邮件分类。垃圾邮件和正常邮件的用词不同但是不可能手工指定。解决方案:纯数据驱动的方法,给两个邮件训练集,分别是垃圾邮件和正常邮件,计算垃圾邮件和正常邮件里各自的词/语句的分布,新邮件s, 估计p(s|垃圾)和p(s|正常),贝叶斯公式可算出 ??(垃圾|新邮件):

1.先分词: 邮件 s={我司,可,办理,正规,发票, 保真,增值税,发票,点数, 优惠}

2.我们需要算出的是技术分享, 在词x1x2 X3 等同时出现时,新邮件属于C类的概率最大化。其中分母技术分享最终归一化为常数。

 技术分享

如果假设均匀先验技术分享 那么只需要技术分享

如果这组词在”垃圾”类下概率可分解就好了=朴素贝叶斯假设(朴素贝叶斯的假设太过粗糙,比如“发票”和“增值税”经常一块出现,但还好该方法在文本挖掘中准确性较高,给定类别C情况下,每个特征独立。此时只需要算出每个词在某类中出现的概率,然后相乘,就可以得到一组词出现在垃圾邮件的概率。

技术分享技术分享

但乘法概率太小会浮点数下溢,所以转到log空间。

 技术分享

但以上计算存在一个问题是,一旦存在缺失值问题,会把其他所有信息都抹杀了。为了防止此问题出现,我们在计算词频时,要给每一个词频加上一个很小的“伪计数”技术分享

技术分享

 重复特征问题,如果重复特征 “连乘”处理,可能就会导致某一特征被放大好几次,比如下例子中“垃圾”这个词出现两次。重复特征连乘叫多项式模型

技术分享

另一种模型,对于重复特征只考虑一次,每个特征只考虑出现,还是没出现,这种是伯努利模型,来自伯努利 (Bernoulli) 分布,一个随机变量要么为0要么为1。

技术分享

可以两种都试下,看哪个效果好。有篇论文发现,伯努利模型在词汇表小的时候性能更好,多项模型在词汇表大的时候性能更好。

 以上过程概括起来如下:

技术分享

逻辑回归与朴素贝叶斯比较:

朴素贝叶斯模型是生成式模型(相比于辨别式模型更加强大,可以做无监督,一般需要的数据量很大)中最简单的例子,而逻辑回归是辨别式模型(不假设观察是什么分布,只关心观察怎么预测类别)中最简单的例子。如果特征不独立,朴素贝叶斯会有欠拟合的情况出现。

 技术分享

用频率估计可能出现 为0的情况,所以要进行调整。

实际是比较购买和不购买的后验概率。

朴素贝叶斯