一、随机变量
可以取不同的值,不同的值有不同的概率。
看到随机变量取任何值,都要想到背后有个概率,如果是连续变量,在每一点的概率是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个。
由此引出了贝叶斯网络的应用:
- 可以用过智商测试的值推测智商,也就是由子节点推测父节点。
- 观测变量间独立性
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的情况,所以要进行调整。
实际是比较购买和不购买的后验概率。