斯坦福CS229机器学习笔记-Lecture5 - 生成学习算法+高斯判别GDA+朴素贝叶斯+拉普拉斯平滑

作者:teeyohuang

邮箱:teeyohuang@163.com

本文系原创,供交流学习使用,转载请注明出处,谢谢

声明:此系列博文根据斯坦福CS229课程,吴恩达主讲 所写,为本人自学笔记,写成博客分享出来

          博文中部分图片和公式都来源于CS229官方notes。

          CS229的视频和讲义均为互联网公开资源

                                                     Lecture5

主要内容:

· Generative learning algorithm(生成学习算法)

· Gaussian Discriminant Analysis(高斯判别分析)

· Digression about Gaussian(高斯分布的拓展)

· Generative / Discriminativelearning algorithm(对比生成学习算法和判别学习算法)

· Naïve Bayes(朴素贝叶斯)

· Laplace smoothing(拉普拉斯平滑)

1、  Generative learning algorithm

用之前提过的判别良性和恶性肿瘤的例子做个讲解,我们单独对训练集中的良性肿瘤样本建立一个模型,又再单独对恶性肿瘤样本建立一个模型,这样我们得到两个模型,当我们需要判别一个新的病例的时候,分别与这两个模型进行匹配,看它更符合哪个模型,这样的一个过程就是 生成学习算法。下面给出一些形式化的定义:

 

Discriminant learning algorithm(判别学习算法):


Generative learning algorithms(生成学习算法):


分母可以用全概率公式进行计算:


下面介绍一个生成学习算法的例子:高斯判别分析。


2、  GaussianDiscriminant Analysis


①先回顾一下(multivariate normal distribution)多维正态分布的一些特点

 

给出几个例子:


再给出几个例子以探讨协方差矩阵的影响:


②GaussianDiscriminant Analysis model 高斯判别模型

当我们处理一个分类问题时,输入变量X如果是连续值随机变量,那么我们就可以考虑使用GDA模型。对 p(x|y)使用多维正态分布建模:




求取上述似然函数的最大值,我们就得到相应的参数的估计值:

总得来说,算法做的事情如下所示

图里的小圆圈和小叉是训练集的数据,大的环状是俯瞰二维高斯分布的轮廓图(此例中输入变量X只考虑了两个特征,即小圆圈和小叉叉是由两个坐标值确定的,所以对应的就是二维高斯分布)。

注意到两个二维高斯轮廓的形状和方向都是一样的,因为我们的协方差矩阵取得是一个,只是位置不一样,因为均值向量取了两个。

中间的那条直线,把所有训练集划分成了两个部分,一个部分我们就认为是y=0,另一个部分认为是y=1.

 

回想一下本文前面讲的生成学习算法的概念,你就会明白,这里的两个高斯分布,就是对训练集的数据特征进行建模,即对训练集的数据获得p(x|y=0)和p(x|y=1)。然后对于新的输入x,看这个输入x落在哪个高斯分布的范围内,那么我们就认为它更倾向于哪一类。

③讨论:GDA和Logisticregression

事实上,GDA算法和Logistic regression 有点联系,


这里的θ是其他几个参数的一种适当的表达,那么这个形式其实就是Logistic  regression,用来对p(y=1|x) 进行建模。

吴老师直接给出结论:

但是呢,当作出一些较弱的假设的时候,Logistic regression 的结果更加具有鲁棒性,在建模时对于负样例的干扰不敏感

总结起来:GDA具有更强的建模假设,并且当建模假设是正确的或至少是近似正确的时候,GDA能够更有效地处理数据(需要更少的数据量以得到好的模型)。Logisticregression使假设变得更弱,并且对与建模假设的偏差具有更强的鲁棒性。

 

具体来说,当数据是非高斯分布时,在大数据集的限制下,Logistic regression几乎总是比GDA做得更好。由于这个原因,在实践中,Logistic regression比GDA更常用。

 

3、  Naïve Bayes(朴素贝叶斯)

在上面的GDA中,输入变量X是连续的,现在我们讨论的朴素贝叶斯算法,X是取离散值。

吴老师以垃圾邮件分类的例子来阐述Naïve Bayes,其实考虑的就是文本分类的问题。现在令X这个特征向量包含n个元素,n是一个字典中单词的数量,每个元素只能取1或者0,分别代表该邮件中存在或者不存在这个单词,如下例:


编码成特征向量的词集称为词汇表(vocabulary),所以X的维度就是词汇表的size。如果我们要使用Generative learning algorithm,那么就是要对p(x|y)进行建模。考虑到X的每个元素有0或者1两种取法,如果词汇表中有50000个单词,那么若对其采用多项分布进行建模,就会用到2^50000-1个参数(我们在讲softmax时讲到过),很明显参数数目太多。那么我们就

不考虑用多项分布进行建模。


注意这个假设并不是说Xi之间是相互独立的,而是给定y的条件下相互独立的。所以我们得到如下公式:




 

       我们这里要求X是离散值,但是有时候我们对于连续值的X采用GDA进行建模的时候,如果结果并不理想,那么我们可以对连续值进行手动离散化,比如隔几段取个区间,就像分段函数一样把连续值映射成离散值,然后再来采用Naïve Bayes 进行建模,也是可以的。

 

4、  Laplacesmoothing(拉普拉斯平滑)

考虑这样一个例子,如果出现一个关键单词,在你之前的所有垃圾或正常邮件中都不曾出现过,比如吴老师举例为NIPS,设这个单词是字典中的第35000个,那么计算公式为


这两个参数都为0的原因是,这个单词从未出现在训练集中。也就是它的出现次数为0,进而它的后验概率为:


为了避免出现0/0的情况出现,就需要进行一下拉普拉斯平滑处理

在分子上加1,在分母上加k,k表示y可以取的情况的数目。此例中y可取值为0和1,则k=2、

那么关于生成学习算法的讨论到此为止,


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值