Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4565455
  • 博文数量: 1214
  • 博客积分: 13195
  • 博客等级: 上将
  • 技术积分: 9105
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-19 14:41
个人简介

C++,python,热爱算法和机器学习

文章分类

全部博文(1214)

文章存档

2021年(13)

2020年(49)

2019年(14)

2018年(27)

2017年(69)

2016年(100)

2015年(106)

2014年(240)

2013年(5)

2012年(193)

2011年(155)

2010年(93)

2009年(62)

2008年(51)

2007年(37)

分类: 项目管理

2015-01-22 22:25:30

原文地址:

斯坦福大学机器学习第六课"逻辑回归“学习笔记,本次课程主要包括7部分:

1) Classification(分类)

2) Hypothesis Representation

3) Decision boundary(决策边界)

4) Cost function(代价函数,成本函数)

5) Simplified cost function and gradient descent(简化版代价函数及梯度下降算法)

6) Advanced optimization(其他优化算法)

7) Multi-class classification: One-vs-all(多类分类问题)

以下是每一部分的详细解读。

 

1) Classification(分类)

分类问题举例:

  1. 邮件:垃圾邮件/非垃圾邮件?
  2. 在线交易:是否欺诈(是/否)?
  3. 肿瘤:恶性/良性?

以上问题可以称之为二分类问题,可以用如下形式定义:

二分类问题-我爱公开课-52opencourse.com

其中0称之为负例,1称之为正例。

对于多分类问题,可以如下定义因变量y:

y∈{0,1,2,3,...,n}


如果分类器用的是回归模型,并且已经训练好了一个模型,可以设置一个阈值:

  • 如果hθ(x)≥0.5,则预测y=1,既y属于正例;
  • 如果hθ(x)<0.5,则预测y=0,既y属于负例;

如果是线性回归模型,对于肿瘤这个二分类问题,图形表示如下:

线性回归二分类问题-我爱公开课-52opencourse.com

但是对于二分类问题来说,线性回归模型的Hypothesis输出值hθ(x)可以大于1也可以小于0。

这个时候我们引出逻辑回归,逻辑回归的Hypothesis输出介于0与1之间,既:

0≤hθ(x)≤1


注: 以下引自李航博士《》1.8节关于分类问题的一点描述:

分类是监督学习的一个核心问题,在监督学习中,当输出变量Y取有限个离散值时,预测问题便成为分类问题。这时,输入变量X可以是离散的,也可以是连续的。监督学习从数据中学习一个分类模型或分类决策函数,称为分类器(classifier)。分类器对新的输入进行输出的预测(prediction),称为分类(classification).

2) Hypothesis Representation

逻辑回归模型:

上一节谈到,我们需要将Hypothesis的输出界定在0和1之间,既:

0≤hθ(x)≤1


但是线性回归无法做到,这里我们引入一个函数g, 令逻辑回归的Hypothesis表示为:

hθ(x)=g(θTx)
       


这里g称为Sigmoid function或者Logistic function, 具体表达式为:

g(z)=11+e?z
            


Sigmoid 函数在有个很漂亮的“S"形,如下图所示(引自维基百科):

Sigmoid function-我爱公开课-52opencourse.com

综合上述两式,我们得到逻辑回归模型的数学表达式:

hθ(x)=11+e?θTx
     


其中θ是参数。


Hypothesis输出的直观解释:

hθ(x) = 对于给定的输入x,y=1时估计的概率

例如,对于肿瘤(恶性/良性),如果输入变量(特征)是肿瘤的大小:

肿瘤分类例子-我爱公开课-52opencourse.com

这里Hypothesis表示的是”病人的肿瘤有70%的可能是恶性的“。

较正式的说法可以如下表示:

给定输入x,参数化的θ(参数空间), y=1时的概率。

数学上可以如下表示:

hθ(x)=P(y=1|x;θ)


对于因变量y=0或1这样的二分类问题:

P(y=0|x;θ)+P(y=1|x;θ)=1


P(y=0|x;θ)=1?P(y=1|x;θ)


 

3) Decision boundary(决策边界)

如上节所述,逻辑回归模型可以如下表示:

逻辑回归模型表达式-我爱公开课-52opencourse.com

假设给定的阈值是0.5,当hθ(x)≥0.5时, y = 1;

hθ(x)<0.5时,y = 0;

再次回顾sigmoid function的图形,也就是g(z)的图形:

sigomoid function g(x) -我爱公开课-52opencourse.com

g(z)≥0.5时, z≥0;

对于hθ(x)=g(θTx)≥0.5, 则θTx≥0, 此时意味着预估y=1;

反之,当预测y = 0时,θTx<0;

我们可以认为θTx = 0是一个决策边界,当它大于0或小于0时,逻辑回归模型分别预测不同的分类结果。例如,

hθ(x)=g(θ0+θ1x1+θ2x2)


θ0,θ1,θ2分别取-3, 1, 1,

则当?3+x1+x2≥0时, y = 1; 则x1+x2 =3是一个决策边界,图形表示如下:

决策边界-我爱公开课-52opencourse.com

上述只是一个线性的决策边界,当hθ(x)更复杂的时候,我们可以得到非线性的决策边界,例如:

非线性的决策边界1-我爱公开课-52opencourse.com

这里当x21+x22≥1时,y=1,决策边界是一个圆形,如下图所示:

非线性决策边界2-我爱公开课-52opencourse.com

更复杂的例子,请参考官方PPT,这里就不再举例了。

 

4) Cost function(代价函数,成本函数)

逻辑回归概览:

逻辑回归是一种有监督的学习方法,因此有训练集:

训练集-我爱公开课-52opencourse.com

对于这m个训练样本来说,每个样本都包含n+1个特征:

训练样本-我爱公开课-52opencourse.com

其中x∈Rn+1, x0=1,y∈{0,1}.

Hypothesis可表示为:

hθ(x)=11+e?θTx  

与线性回归相似,我们的问题是如何选择合适的参数θ?

 

Cost Function:

线性回归的Cost  Function定义为:

J(θ)=1m∑i=1m12(hθ(x(i))?y(i))2


这里可以把12(hθ(x(i))?y(i))2简写为Cost(hθ(x(i),y),更简化的表达式为:

Cost(hθ(x),y)=12(hθ(x)?y)2


如果和线性回归相似,这里取 hθ(x)=11+e?θTx,会存在一个问题,也就是逻辑回归的Cost Function是“非凸”的,如下图所示:

非凸函数-我爱公开课-52opencourse.com

我们知道,线性回归的Cost Function是凸函数,具有碗状的形状,而凸函数具有良好的性质:对于凸函数来说局部最小值点即为全局最小值点,因此只要能求得这类函数的一个最小值点,该点一定为全局最小值点。

凸函数-我爱公开课-52opencouse.com

因此,上述的Cost Function对于逻辑回归是不可行的,我们需要其他形式的Cost Function来保证逻辑回归的成本函数是凸函数。

这里补充一段李航博士《》里关于Cost Function或者损失函数(loss function)的说明,大家就可以理解Cost Function不限于一种方式,而是有多种方式可选,以下摘自书中的1.3.2小节:

监督学习问题是在假设空间F中选取模型f作为决策函数,对于给定的输入X,由f(X)给出相应的输出Y,这个输出的预测值f(X)与真实值Y可能一致也可能不一致,用一个损失函数(loss function)或代价函数(cost function)来度量预测错误的程度。损失函数是f(X)和Y的非负实值函数,记作L(Y, f(X)).

统计学习中常用的损失函数有以下几种:

(1) 0-1损失函数(0-1 loss function):

L(Y,f(X))={1,0,Y≠f(X)Y=f(X)


(2) 平方损失函数(quadratic loss function)

L(Y,f(X))=(Y?f(X))2


(3) 绝对损失函数(absolute loss function)

L(Y,f(X))=|Y?f(X)|


(4) 对数损失函数(logarithmic loss function) 或对数似然损失函数(log-likelihood loss function)

L(Y,P(Y|X))=?logP(Y|X)


损失函数越小,模型就越好。

逻辑回归的Cost Function:

基于上节的描述和补充,这里我们选择对数似然损失函数作为逻辑回归的Cost Function:

逻辑回归之对数似然损失函数-我爱公开课-52opencourse.com

直观的来解释这个Cost Function,首先看当y=1的情况:

对数似然损失函数解释1-我爱公开课-52opencouse.com

直观来看, 如果y = 1, hθ(x)=1,则Cost = 0,也就是预测的值和真实的值完全相等的时候Cost =0;

但是,当hθ(x)→0时, Cost→∞

直观来看,由于预测的结果南辕北辙:

如果hθ(x)=0, 也就是预测P(y=1|x;θ)=0,也就是y=1的概率是0,但是实际上y = 1

因此对于这个学习算法给予一个很大的Cost的惩罚。

同理对于y=0的情况也适用:

对数似然损失函数解释2-我爱公开课-52opencourse.com

 

5) Simplified cost function and gradient descent(简化版代价函数及梯度下降算法)

逻辑回归的Cost Function可以表示为:

逻辑回归代价函数-我爱公开课-52opencourse.com

由于y 只能等于0或1,所以可以将逻辑回归中的Cost function的两个公式合并,具体推导如下:

逻辑回归代价函数推导-我爱公开课-52opencourse.com

故逻辑回归的Cost function可简化为:

逻辑回归代价函数简化公式-我爱公开课-52opencourse.com

对于这个公式,这里稍微补充一点,注意中括号中的公式正是对逻辑回归进行最大似然估计中的最大似然函数,对于最大似然函数求最大值,从而得到参数(\theta\)的估计值。反过来,这里为了求一个合适的参数,需要最小化Cost function,也就是:

minθJ(θ)


而对于新的变量x来说,就是根据hθ(x)的公式输出结果:

逻辑回归预估-我爱公开课-52opencourse.com

与线性回归相似,这里我们采用梯度下降算法来学习参数θ,对于J(θ):

逻辑回归梯度下降算法之Cost function-我爱公开课-52opencouse.com

目标是最小化J(θ),则梯度下降算法的如下:

逻辑回归梯度下降算法-我爱公开课-52opencourse.com

J(θ)求导后,梯度下降算法如下:

梯度下降算法-我爱公开课-52opencourse.com

注意,这个算法和线性回归里的梯度下降算法几乎是一致的,除了hθ(x)的表示不同。

 

6) Advanced optimization(其他优化算法)

优化算法:

给定参数θ,我们可以写成代码来计算:

逻辑回归优化算法-我爱公开课-52opencourse.com

优化算法除了梯度下降算法外,还包括:

  • Conjugate gradient method(共轭梯度法)
  • Quasi-Newton method(拟牛顿法)
  • BFGS method
  • L-BFGS(Limited-memory BFGS)

后二者由拟牛顿法引申出来,与梯度下降算法相比,这些算法的优点是:

第一,不需要手动的选择步长;

第二,通常比梯度下降算法快;

但是缺点是更复杂-更复杂也是缺点吗?其实也算不上,关于这些优化算法,推荐有兴趣的同学看看52nlp上这个系列的文章:,作者是我的师兄,更深入的了解可以参考这篇文章中推荐的两本书:

用于解无约束优化算法的Quasi-Newton Method中的LBFGS算法到这里总算初步介绍完了,不过这里笔者要承认的是这篇文档省略了许多内容,包括算法收敛性的证明以及收敛速度证明等许多内容。因此读者若希望对这一块有一个更深入的认识可以参考以下两本书:
1) Numerical Methods for Unconstrained Optimization and Nonlinear Equations(J.E. Dennis Jr. Robert B. Schnabel)
2) Numerical Optimization(Jorge Nocedal Stephen J. Wright)

7) Multi-class classification: One-vs-all(多类分类问题)

多类分类问题举例:

电子邮件分类/标注: 工作邮件,朋友邮件,家庭邮件,爱好邮件

医疗图表(medical diagrams): 没有生病,着凉,流感

天气:晴天,多云,雨,雪

二类分类问题如下图所示:

二类分类问题-我爱公开课-52opencourse.com

多类分类问题如下所示:

多类分类问题-我爱公开课-52opencourse.com

One-vs-all(one-vs-rest):

对于多类分类问题,可以将其看做成二类分类问题:保留其中的一类,剩下的作为另一类。例如,对于下面这个例子:

多分类问题-one-vs-all-我爱公开课-52opencourse.com

可以分别计算其中一类相对于其他类的概率:

one-vs-rest-多分类问题-我爱公开课-52opencourse.com

总结-One-vs-all方法框架:

对于每一个类 i 训练一个逻辑回归模型的分类器h(i)θ(x),并且预测 y = i时的概率;

对于一个新的输入变量x, 分别对每一个类进行预测,取概率最大的那个类作为分类结果:

多分类问题预测-我爱公开课-52opencourse.com

 

参考资料:

第六课“逻辑回归”的课件资料下载链接,视频可以在Coursera机器学习课程上观看或下载:
   

李航博士《》


阅读(888) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~