课程主页

课程视频和PPT

上一节课,我们介绍了Linear Regression线性回归,以及用平方错误来寻找最佳的权重向量w,获得最好的线性预测。本节课将介绍Logistic Regression逻辑回归问题。

目录

1. Logistic Regression Problem

2. Logistic Regression Error

3. Gradient of Logistic Regression Error

4. Gradient Descent

5. 总结


1. Logistic Regression Problem

一个心脏病预测的问题:根据患者的年龄、血压、体重等信息,来预测患者是否会有心脏病。很明显这是一个二分类问题,其输出y只有{-1,1}两种情况。

二元分类,一般情况下,理想的目标函数f(x)>0.5,则判断为正类1;若f(x)<0.5,则判断为负类-1。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

但是,如果我们想知道的不是患者有没有心脏病,而是到底患者有多大的几率是心脏病。这表示,我们更关心的是目标函数的值(分布在0,1之间),表示是正类的概率(正类表示是心脏病)。这跟我们原来讨论的二分类问题不太一样,我们把这个问题称为软性二分类问题(’soft’ binary classification)。这个值越接近1,表示正类的可能性越大;越接近0,表示负类的可能性越大。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

对于软性二分类问题,理想的数据是分布在[0,1]之间的具体值,但是实际中的数据只可能是0或者1,我们可以把实际中的数据看成是理想数据加上了噪声的影响。 

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

如果目标函数是机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression的话,我们如何找到一个好的Hypothesis跟这个目标函数很接近呢?

首先,根据我们之前的做法,对所有的特征值进行加权处理。计算的结果s,我们称之为’risk score’:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

 但是特征加权和机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression,如何将s值限定在[0,1]之间呢?一个方法是使用sigmoid Function,记为机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression.那么我们的目标就是找到一个hypothesis:机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression.

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

Sigmoid Function函数记为机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression,满足机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression.这个函数是平滑的、单调的S型函数。则对于逻辑回归问题,hypothesis就是这样的形式:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

那我们的目标就是求出这个预测函数h(x),使它接近目标函数f(x)。 

2. Logistic Regression Error

现在我们将Logistic Regression与之前讲的Linear Classification、Linear Regression做个比较:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

这三个线性模型都会用到线性scoring function 机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression.linear classification的误差使用的是0/1 err;linear regression的误差使用的是squared err。那么logistic regression的误差该如何定义呢?

先介绍一下“似然性”的概念。目标函数机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression,如果我们找到了hypothesis很接近target function。也就是说,在所有的Hypothesis集合中找到一个hypothesis与target function最接近,能产生同样的数据集D,包含输出label y,则称这个hypothesis是最大似然likelihood。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

hypothesis:机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression满足一个性质:机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression.那么,似然性h:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

因为机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression对所有的h来说,都是一样的,所以我们可以忽略它。那么我们可以得到logistic h正比于所有的机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression乘积。我们的目标就是让乘积值最大化。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

 如果将w代入的话:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

为了把连乘问题简化计算,我们可以引入ln操作,让连乘转化为连加:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

 接着,我们将maximize问题转化为minimize问题,添加一个负号就行,并引入平均数操作机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

将logistic function的表达式带入,那么minimize问题就会转化为如下形式:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

 至此,我们得到了logistic regression的err function,称之为cross-entropy error交叉熵误差:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

(注意,这里的交叉熵误差可能和Andrew NG课程中的形式不太一样,这里的2分类标签为+1(正类),-1(负类);之前的2分类标签+1(正类),0(负类)) 

3. Gradient of Logistic Regression Error

我们已经推导了机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression的表达式,那接下来的问题就是如何找到合适的向量w,让机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression最小。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

 

Logistic Regression的机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression是连续、可微、二次可微的凸曲线(开口向上),根据之前Linear Regression的思路,我们只要计算机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression对w的梯度,使其为0,求出w,即为最优解。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression计算梯度,学过微积分的都应该很容易计算出来:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

最终得到的梯度表达式为:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

为了计算机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression最小值,我们就要找到让机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression等于0的位置(求解此时的w)。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

上式可以看成机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression的线性加权。要求机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression的线性加权为0,那么一种情况是线性可分,如果所有的权重机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression为0,那就能保证机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression为0.机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression是sigmoid函数,根据其特性,只要让机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression,即机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression.机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression,表示对于所有的点,机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression都是同号,这表示数据集D必须是全部线性可分的才能成立。

然而,保证所有的权重机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression为0是不太现实的,总有不等于0的时候,那么另一种常见的情况是非线性可分,只能通过使加权和为零来求解w(非线性等式)。这种情况没有closed-form解,与Linear Regression不同,只能用迭代方法求解。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

之前所说的Linear Regression有closed-form解,可以说是“一步登天”的;但是之前学习的PLA算法是一步一步修正迭代进行的,每次对错误点进行修正,不断更新w值。PLA的迭代优化过程表示如下:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

 

w每次更新包含两个内容:一个是每次更新的方向机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression,用v表示,另一个是每次更新的步长机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression。参数机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression和终止条件决定了我们的迭代优化算法。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

4. Gradient Descent

根据上一小节PLA的思想,每次迭代优化都让w进行更新:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

我们把机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression曲线看做是一个山谷的话,要求机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression最小,即可比作下山的过程。整个下山过程由两个因素影响:一个是下山的单位方向v;另外一个是下山的步长η。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

利用微分思想和线性近似,假设每次下山我们只前进一小步,即η很小,那么根据泰勒Taylor一阶展开,可以得到: 

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

 实际优化问题的目标函数往往比较复杂。为了使问题简化,通常将目标函数在某点附近展开为泰勒(Taylor)多项式来逼近原函数:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

 迭代的目的是让机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression越来越小,即让机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression. η是标量,因为如果两个向量方向相反的话,那么他们的内积最小(为负),也就是说如果方向v与梯度机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression反向的话,那么就能保证每次迭代机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression成立。则,我们令下降方向v为:

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

v是单位向量,v每次都是沿着梯度的反方向走,这种方法称为梯度下降(gradient descent)算法。那么每次迭代公式就可以写成: 

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

下面讨论一下η的大小对迭代优化的影响:η如果太小的话,那么下降的速度就会很慢;η如果太大的话,那么之前利用Taylor展开的方法就不准了,造成下降很不稳定,甚至会上升。因此,η应该选择合适的值,一种方法是在梯度较小的时候(接近最优值),选择小的η,梯度较大的时候,选择大的η,即η正比于 机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression.这样保证了能够快速、稳定地得到最小值机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression.(使得机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression最小的权重向量w)。

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

对学习速率η做个固定,梯度下降算法的迭代公式可以写成:  

机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression

总结一下基于梯度下降的Logistic Regression算法步骤如下:

  • 初始化机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression
  • 计算梯度机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression
  • 迭代更新机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression
  • 满足机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression或者达到指定的迭代次数,迭代结束 

 

5. 总结

我们今天介绍了Logistic Regression。首先,从逻辑回归的问题出发,将机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression作为目标函数,将机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression作为hypothesis。接着,我们定义了logistic regression的err function,称之为cross-entropy error交叉熵误差.然后,我们计算logistic regression error的梯度,最后,通过梯度下降算法,通过不断迭代优化,找到使得机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression最小的那个最优的权重向量机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression,此时机器学习 | 台大林轩田机器学习基石课程笔记10 --- Logistic Regression.

 

相关文章: