(一)生成学习算法

在线性回归和Logistic回归这种类型的学习算法中我们探讨的模型都是p(y|x;θ),即给定x的情况探讨y的条件概率分布。如二分类问题,不管是感知器算法还是逻辑回归算法,都是在解空间中寻找一条直线从而把两种类别的样例分开,对于新的样例,只要判断在直线的哪一侧即可;这种直接对问题求解的方法可以称为判别学习方法。
 
而生成学习算法则是对两个类别分别进行建模,用新的样例去匹配两个模板,匹配度较高的作为新样例的类别,比如分辨大象(y=1)和狗(y=0),首先,观察大象,然后建立一个大象长什么样子的模型,之后,观察狗,同样建立一个狗长什么样子的模型,最后,为了判断一个新来的动物是狗还是大象,我们将这个动物与大象模型进行匹配,再与狗模型进行匹配,看看这个新的动物更像狗还是更像大象,从而判断这个动物到底是什么。
 
形式化的说,判别学习方法是直接对p(y|x)进行建模或者直接学习输入空间到输出空间的映射关系,其中,x是某类样例的特征,y是某类样例的分类标记。而生成学习算法是对p(x|y)(条件概率)和p(y)(先验概率)进行建模,然后按照贝叶斯法则求出后验概率p(y|x):


使得后验概率最大的类别y即是新样例的预测值:


(二)高斯判别分析
 
高斯判别分析(GDA)就是一种生成学习算法,在GDA中,假设p(x|y)属于多变量正态分布。多变量正态分布是正态分布在多维变量下的扩展,它的参数是一个均值向量(mean
vector)μ和协方差矩阵(convariance matrix),其中n是多维变量的向量长度,是对称正定矩阵。多变量正态分布的概率密度函数为:

其中,|Σ|是行列式的值。

对于服从多变量正态分布的随机变量x,均值由下面的公式得到:


协方差矩阵由协方差函数Cov得到: 其中,cov的计算过程为:


介绍完多变量正态分布,就正式进入GDA模型的介绍。GDA模型针对的是输入特征为连续值时的分类问题。这个模型的基本假设是目标值y服从伯努利分布,条件概率p(x|y)服从正态分布。于是,他们的概率密度为:
 

于是,数据集的极大似然函数的对数如下所示:


对极大似然函数对数最大化,就得到了GDA模型的各参数的极大似然估计,即得到了如何使用GDA算法的方法。各参数的极大似然估计如下:



一个二维的GDA模型例子如下图所示:

注意到两个二维高斯分布分别对两类数据进行拟合;他们使用相同的协方差矩阵;但却有不同的均值;在直线所示的部分,p(y=1|x)=p(y=0|x)=0.5。
 
GDA模型与logistic模型的联系
 
在公式2中,我们使用p(x|y)p(y)作为p(y|x)的拟合。归一化后,可以得到:


实际上,它可以被表示成逻辑分布的形式:

 

其中,θ是参数φ,μ0,μ1,Σ某种形式的函数。GDA的后验分布可以表示成逻辑分布形式的合理性,在此没有证明,有兴趣的可以自己证明。下面只给出一个例子用于说明GDA模型与logistic模型的联系。

例:假设有一个一维训练集,包含一些正样本和负样本,如下图x轴的叉和圈,设叉为0,圈为1,用GDA对两类样本分别拟合高斯概率密度函数p(x|y=0)和p(x|y=1),如下图的两个钟形曲线。沿x轴遍历样本,在x轴上方画出相应的p(y=1|x)。如选x轴靠左的点,那么它属于1的概率几乎为0,p(y=1|x)=0,两条钟形曲线交点处,属于0或1的概率相同,p(y=1|x)=0.5,x轴靠右的点,输出1的概率几乎为1,p(y=1|x)=1。最终发现,得到的曲线和sigmoid函数曲线很相似。
 
 
简单来讲,就是当使用GDA模型时,p(x|y)属于高斯分布,计算p(y}x)时,几乎能得到和logistic回归中使用的sigmiod函数一样的函数,但实际上还是存在本质区别。
 
实际上,可以证明,不仅仅当先验概率分布服从多变量正态分布时可以推导出逻辑回归模型,当先验概率分布属于指数分布族中的任何一个分布(比如泊松分布)时都可以推导出逻辑回归模型;而反之则不成立,逻辑回归模型的先验概率分布不一定必须得是指数分布族中的成员;因而也说明了逻辑回归模型在建模上的鲁棒性。
 
由此,我们得到了推导逻辑回归模型的两种方法。第一种是前面的视频中讲到的通过指数分布族来推导;第二种则是刚才提到的通过生成学习假设先验概率分布的方式进行推导。
 
那么如何选择GDA与逻辑回归模型呢?由上面的分析可以知道,GDA与逻辑回归是泛化与特化的关系,GDA比逻辑回归有更多的前置假设。当数据服从或大致服从正态分布时,使用GDA会达到更好的效果,因为GDA利用了更多的信息构建模型。但是当数据不服从正态分布时,那么逻辑回归更有效,因为它做出更少的假设,构建的模型更加强壮,更加具有鲁棒性。生成学习还有另外的一个好处,就是可以使用比判别学习模型更少的数据构建出强壮的模型。
 
(三)朴素贝叶斯
 
GDA针对的是特征向量x为连续值时的问题。而朴素贝叶斯(Navie
Bayes,NB)则针对的是特征向量x为离散值时的问题。
 
NB算法的标准应用,也是最常见的应用是文本分类问题,例如邮件是否为垃圾邮件的分类。
同其它分类算法一样,NB算法也需要有相应的标准好的数据集。对于文本分类问题来说,使用向量空间模型(vector
space
model,VSM)来表示文本。何为VSM?首先,我们需要有一个词典,词典的来源可以是现有的词典,也可以是从数据中统计出来的词典,对于每个文本,我们用长度等于词典大小的向量表示,如果文本包含某个词,该词在词典中的索引为index,则表示文本的向量的index出设为1,否则为0。
 
如果按直接对p(x|y)进行建模,那么会遇到参数过多的问题,我们假设词典里拥有50000个词,即向量长度为50000,向量中每个分量的取值为{0,1},那么可能有250000个可能的结果,对其建模则需要250000-1个参数。因而,NB模型做了另外的假设,成为朴素贝叶斯假设,由朴素贝叶斯假设推导出的分类器称为朴素贝叶斯分类器。
 
朴素贝叶斯假设即是在给定分类y后,假设特征向量中的各个分量是相互独立的。如下式所示:


朴素贝叶斯假设在文本分类问题上的解释是文本中出现某词语时不会影响其它词语在文本中的概率。

以VSM与NB假设为基础,我们就得到了NB方法的参数:

于是,我们就得到了NB方法的极大似然估计的对数函数:
 

其中,n为词典的大小。最大化该函数,我们得到参数的极大似然估计:

对于新样本,按照如下公式计算其概率值:

以上就是最基本的NB方法。注意到特征向量的每个分量都智能取值{0,1},我们可以将其扩展为{0,1,2,...k},而概率分布由伯努利分布变为多项式分布。对于一些连续的变量,我们可以将其离散化使其可以使用NB方法解决,离散化的方法为将连续变量按值分段。
 
(四)拉普拉斯平滑
 
拉普拉斯平滑(Laplace
Smoothing)又被称为加1平滑,是比较常用的平滑方法。平滑方法的存在是为了解决零概率问题。
 
所谓的零概率问题,就是在计算新实例的概率时,如果某个分量在训练集中从没出现过,会导致整个实例的概率计算结果为0。针对文本分类问题就是当一个词语在训练集中没有出现过,那么该词语的概率为0,使用连乘计算文本出现的概率时,整个文本出现的概率也为0。这显然是不合理的,因为不能因为一个事件没有观测到就判断该事件的概率为0。
 
对于一个随机变量z,它的取值范围是{1,2,3...,k},对于m次试验的观测结果{z(1),z(2),...z(m))},极大似然估计按照下式计算:
 

使用Laplace平滑后,计算公式变为:


即在分母上加上取值范围的大小,在分子加1。
 
回到NB算法,我们可以修正各分量的计算公式:

Stanford大学机器学习公开课(五):生成学习算法、高斯判别、朴素贝叶斯的更多相关文章

  1. Stanford大学机器学习公开课(六):朴素贝叶斯多项式模型、神经网络、SVM初步

    (一)朴素贝叶斯多项式事件模型 在上篇笔记中,那个最基本的NB模型被称为多元伯努利事件模型(Multivariate Bernoulli Event Model,以下简称 NB-MBEM).该模型有多 ...

  2. Stanford大学机器学习公开课(二):监督学习应用与梯度下降

    本课内容: 1.线性回归 2.梯度下降 3.正规方程组   监督学习:告诉算法每个样本的正确答案,学习后的算法对新的输入也能输入正确的答案   1.线性回归 问题引入:假设有一房屋销售的数据如下: 引 ...

  3. Stanford大学机器学习公开课(四):牛顿法、指数分布族、广义线性模型

    (一)牛顿法解最大似然估计 牛顿方法(Newton's Method)与梯度下降(Gradient Descent)方法的功能一样,都是对解空间进行搜索的方法.其基本思想如下: 对于一个函数f(x), ...

  4. Stanford大学机器学习公开课(三):局部加权回归、最小二乘的概率解释、逻辑回归、感知器算法

    (一)局部加权回归 通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting).如下图的左图.而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为 ...

  5. LR 算法总结--斯坦福大学机器学习公开课学习笔记

    在有监督学习里面有几个逻辑上的重要组成部件[3],初略地分可以分为:模型,参数 和 目标函数.(此部分转自 XGBoost 与 Boosted Tree) 一.模型和参数   模型指给定输入xi如何去 ...

  6. AI学习---分类算法[K-近邻 + 朴素贝叶斯 + 决策树 + 随机森林 ]

    分类算法:对目标值进行分类的算法    1.sklearn转换器(特征工程)和预估器(机器学习)    2.KNN算法(根据邻居确定类别 + 欧氏距离 + k的确定),时间复杂度高,适合小数据    ...

  7. 机器学习算法实践:朴素贝叶斯 (Naive Bayes)(转载)

    前言 上一篇<机器学习算法实践:决策树 (Decision Tree)>总结了决策树的实现,本文中我将一步步实现一个朴素贝叶斯分类器,并采用SMS垃圾短信语料库中的数据进行模型训练,对垃圾 ...

  8. CS229 Lesson 5 生成学习算法

    课程视频地址:http://open.163.com/special/opencourse/machinelearning.html 课程主页:http://cs229.stanford.edu/ 更 ...

  9. Python机器学习笔记:朴素贝叶斯算法

    朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.对于大多数的分类算法,在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.比如决策树,KNN,逻辑回归,支持向 ...

随机推荐

  1. Put-Me-Down项目Postmortem

    设想和目标 PMD是一款帮助低头族控制使用手机时间的APP,设想按照需求规格说明书内容实现功能,能将数据备份到服务器. 计划 初始计划我们是想将程序方面分为安卓和后台,主要是程序方面的工作.我们对项目 ...

  2. String类的常用方法

    package stringUse; public class StringUse { public static void main(String[] args) { //获取 //indexOf, ...

  3. Codeforce#331 (Div. 2) A. Wilbur and Swimming Pool(谨以此题来纪念我的愚蠢)

    C time limit per test 1 second memory limit per test 256 megabytes input standard input output stand ...

  4. squid 学习笔记

    Squid学习笔记 1.安装前的配置 编译安装之前需要校正的参数主要包括File Descriptor和Mbuf Clusters. 1.File Descriptor 查看文件描述符的限制数目: u ...

  5. ubuntu显示桌面的快捷键,以及修改方法

    在ubuntu下面,快速显示桌面,你可以这样做. 1,ctrl+alt+d (默认的) 2,alt+tab 可以切换到桌面 但是我想把它修改成和windows一样的,我该怎么做呢? 其实很简单. 系统 ...

  6. 如何调试R程序(转载)

    R语言的调试重要性不言而喻,这段时间准备改进一个R的包,但由于接触R时间不长,中间的很多东西不懂,需要重新打包调试,以对里面的很多程序有深入了解,下面从几个方面分享一下我的收获. 1.准备工作 a)R ...

  7. 《深入PHP与jQuery开发》读书笔记——Chapter3

    <深入PHP与jQuery开发>第三章学习笔记 1.PHP的魔术方法(在对象中发生某些例行事件时会自动调用这些方法) PHP提供了魔术方法__construct()(构造函数),在新对象被 ...

  8. 关于angularjs中的ng-class 变量问题

    时常会用到ng-class.非常的方便,基本的用法就是 当title等于通金所的时候,就增加error-tip这个class,但是,我们有时候这个值不能写死,明白我的意思吗,明白吗,好吧,反正就要是个 ...

  9. Spark-1.0.0 standalone分布式安装教程

    Spark目前支持多种分布式部署方式:一.Standalone Deploy Mode:二Amazon EC2.:三.Apache Mesos:四.Hadoop YARN.第一种方式是单独部署,不需要 ...

  10. ReactiveCocoa 和 MVVM 入门 (转)

    翻译自ReactiveCocoa and MVVM, an Introduction. 文中引用的 Gist 可能无法显示.为了和谐社会, 请科学上网. MVC 任何一个正经开发过一阵子软件的人都熟悉 ...