Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 3——逻辑回归、过拟合与正则化
此系列为 Coursera 网站机器学习课程个人学习笔记(仅供参考)
课程网址:https://www.coursera.org/learn/machine-learning
参考资料:http://blog.****.net/scut_arucee/article/details/49889405
一、Classification and Representation
1.1 分类问题(classification)
在第一讲中我们提到监督学习分为两类:回归问题和分类问题,之前描述的房价问题就属于回归问题,因为要预测的变量是连续的,接下来我们会介绍另一种——分类问题(classification)。分类问题中要预测的变量是离散的。
现在有一些肿瘤大小和相应性质(
如果在图中加上一点(如上图绿色叉点),仍符合上述分类器的判定,但是按线性回归,最后的分类器如图中绿色直线所示,说明线性回归不适于用以解决分类问题。我们可以选择逻辑回归(logistic regression)来解决分类问题。
1.2 逻辑回归的假设函数hθ(x) 的定义
对于两类分类问题,
逻辑回归中,
其中,
因为logistic function的图像在
-
下面我们就来解释一下
“probability that y=1,given x,parameterized by
θ ”
对于二类分类问题,
用数学表达式表示:
1.3 决策边界(Decision Boundary)
当得到一个新的x,我们如何通过上面的假设函数
根据
根据上面logistic函数的图像我们可以看出,当
下面我们举一个例子来更好地理解决策边界:
我们现在有如下图所示的数据集,假设函数模型为:
假设我们已经得到:
根据前面所讲的,我们可以得到:
我们在图中画出
我们可以直观地看出,当
值得注意的是,logistic 函数
上面的决策边界
如假设
此时的决策边界为一个圆心在原点,半径为1的圆,当
二、逻辑回归(Logistic Regression)
2.1 逻辑回归的代价函数
前面提到决策边界由假设函数和参数
我们仍然采用之前的符号定义:
线性回归中,代价函数表达式为:
-
下面我们讨论逻辑回归,定义单个样本的代价:
为了简化表达,可略去上标,即:
-
如果仍然像线性回归那样定义逻辑回归的代价函数
因此,在逻辑回归中,需要另寻一个代价函数,使其是凸函数(单弓形),如下图,这样就可以使用梯度下降法找到全局最小值。
我们选择如下的代价函数来表示单个样本的代价:
这个函数看起来很复杂。下面我们通过画出它的图像来解释选择它的原因。
1、当y=1,
Cost(hθ(x),y) 关于hθ(x) 的图像:
注意横坐标为
hθ(x) ,而hθ(x) 的取值范围为(0,−1) ,所以图像只取(0,−1) 段。
我们可以看出,当hθ(x)=1 ,则假设函数预测结果与事实一致,Cost=0 ;当hθ(x)=0 ,则预测结果与事实不符,Cost=∞ ,说明要通过一个很大的代价Cost→∞ 来惩罚学习算法。2、当y=1,
Cost(hθ(x),y) 关于hθ(x) 的图像:横坐标为
hθ(x) ,而hθ(x) 的取值范围为(0,−1) ,所以图像只取(0,−1) 段。
同理,若y=0 ,而hθ(x)=1 ,将通过一个很大的代价Cost→∞ 来惩罚学习算法。
以上说明在求解参数
简化代价函数
为了方便书写和接下来的梯度下降,我们将上面代价函数的两个式子压缩为一个:
由单个样本的代价函数,最终我们得到逻辑回归总的代价函数:
2.2 用梯度下降求解参数θ
与线性回归相同,我们的目标是找到使代价函数
回忆我们之前的梯度下降共公式:
将
注意这里也要同时更新所有的
我们回忆之前所讲的线性回归中梯度下降的更新公式,你会发现,线性回归和逻辑回归的梯度下降更新公式是一样的。(视频中并未说明为什么,但是推导出的结果确实如此,推导过程可见这里)
但我们需要注意,两个公式中
梯度下降更新公式用向量表示(代码实现时常用到):
我们之前所讲的梯度下降常见两个问题的解决方法以及特征缩放对于逻辑回归也是适用的,在此不再赘述。
2.3 高级优化
在编写代码时,我们需要写代码表示
逻辑回归找出最优的算法除了梯度下降外,还有其他一些高级优化算法例如共轭梯度,变尺度法(BFGS),限制变尺度法(L-BFGS)等,这些高级优化算法不需人为选择学习率
三、多分类问题:One vs all
这一部分我们主要讲一下如何用逻辑回归解决多类别分类问题。这里,我们采用一种“一对多”(one vs all)的分类算法。
举例,一个二类分类问题的数据集分布如下图左所示,一个多类分类问题的数据集分布如下图右所示(用不同的符号表示不同的类别):
在之前所讲的二类分类问题中,我们可以使用逻辑回归用直线将数据集一分为二为正类和负类。那么我们如何用一对多(one vs all)的分类思想解决多分类问题?
用上图右数据集举例说明。图中数据一共有三类,我们可以将其转化为三个二分类问题。在每一个两类分类问题中,把待识别的类别当作正类别,其余合为一类作为负类别。如下图:
每一个类别拥有一个假设函数,故这里一共有3个假设函数:
相当于给每个类别单独训练一个逻辑回归分类器,用
总结:
One vs all:
Train a logistic regression classifierh(i)θ(x) for each class to predict the probability that y=i .
To make a prediction on a newx , pick the class that maximizesh(i)θ(x) :maxi(h(i)θ(x))
四、过拟合(Overfitting)和正则化(Regularization)
前面我们已经讲了线性回归和逻辑回归,它们能够有效地解决许多问题,但当将它们应用于某些特定的机器学习应用时,我们会遇到过拟合问题(overfitting),会导致结果特别差。这一小节内容会为大家解释什么过拟合问题,并且介绍一种可以改善或减少过度拟合问题的技术——正则化技术( regularization),。
4.1 过拟合(overfitting)
在利用训练数据拟合假设函数时,可能会有如下图三种情况:
① 欠拟合(underfitting)
欠拟合(underfitting)也称为高偏差(high bias)。即,拟合出的假设函数在训练数据集上不能很好地拟合数据,
h(i)θ(x) 和y 的偏差比较大,如下图(左为线性回归欠拟合,右为逻辑回归欠拟合)② 适度拟合(just right)
即,拟合出的假设函数在训练数据集上能较好的反映输出和输入的关系,hθ(x)和y的偏差不大,如下图(左为线性回归适度拟合,右为逻辑回归适度拟合)
③ 过拟合(overfitting)
过拟合(overfitting)也称为高方差(high variance)。即,由于特征变量太多,导致学习到的假设函数太过适合于训练数据集,甚至
J(θ)≈0 ,导致无法泛化(generalize)到新的数据样本,如下图(左为线性回归过拟合,右为逻辑回归过拟合)。
泛化能力:指一个假设模型能够应用于新样本(没有出现在训练集)的能力。这(过拟合)对于训练数据集来说当然是好的,但我们的最终目的不是让假设函数完美适配训练数据,而是让它去预测新的问题。过拟合带来的问题是假设函数很精准地适配了训练数据,但是却无法泛化到新的例子,对新的输入无法很好地预测其输出。
当我们遇到过拟合(overfitting)问题时,我们应该如何解决呢?
前面通过绘制假设函数曲线我们可以选择合适的多项式阶次,但当特征变量变得很多时,画图本身就变得很难。这里给出两种规避过拟合的方法:
★ 减少特征变量的数量
我们可以人工选择保留或舍弃哪些变量,也可以通过模型选择算法(model selection algorithm)自动选择采用哪种特征变量。
★正则化(regularization)
即,保留所有特征变量,但要减小θj 的数量级或值。
4.2 正则化(Regularization)
在前面过拟合的图示中假设函数
-
则在
当有很多特征时,我们并不知道哪些项是关联度较小的项,无法像上面挑出
-
注意
正则化的两个目标:
① 更好的拟合训练数据,使假设函数很好的适应训练集
② 保持θ 参数值较小,避免过拟合正则化参数
λ 的影响:①
λ 如果太小,则相当于正则化项没起到作用,无法控制过拟合;
②λ 如果太大,则除了θ0 ,其余的参数都会约等于0 ,相当于去掉了那些项,使hθ(x)=θ0 ,毫无疑问这会得不偿失地导致欠拟合。
(在之后的课程中我们会讲一些自动选择λ 参数的算法。)
4.3 正则化在线性回归中的应用
对于线性回归的求解,我们之前推导了两种学习算法:一种基于梯度下降;一种基于正规方程。
带有正则化的梯度下降
为了惩罚除了
除
其中
带有正则化的正规方程
我们将输入输出用矩阵和向量表示出来:
原正规方程给出的求解
如果加入正则化,则公式变为:
其中,
利用正则化,即使是在较小的数据集里有很多特征,也可以更好地进行线性回归。
4.4 正则化在逻辑回归中的应用
回忆我们之前讲的逻辑回归的代价函数:
我们可以通过在后面添加如下一项来进行正则化:
带有正则化的梯度下降:
注意,虽然这里,逻辑回归的正则化后梯度下降公式与线性回归相同,但由于假设函数不同,两者并不是一样的。
附:课后测试题答案
1、答案:C
2、答案:B