吴恩达《机器学习》学习笔记五——逻辑回归
- 一、 分类(classification)
- 1.定义
- 2.阈值
- 二、 逻辑(logistic)回归假设函数
- 1.假设的表达式
- 2.假设表达式的意义
- 3.决策界限
- 三、 代价函数
- 1.平方误差函数的问题
- 2.logistic回归的代价函数
- 四、梯度下降法求参数
- 五、多分类问题
- 1.介绍
- 2.“一对多”算法解决多分类问题
课程链接:https://www.bilibili.com/video/BV164411b7dx?from=search&seid=5329376196520099118
前四次笔记算是通过线性回归模型来对机器学习进行了一个入门,下面开始学习第二个模型:逻辑回归,虽带有回归字样,但这却是一个分类算法,从最简单的二分类问题开始。逻辑回归的应用场景更多,而且它是神经网络的一部分基础。
一、 分类(classification)
1.定义
下面是一些二分类的例子,即预测的结果只有两种情况,比如垃圾邮件和正常邮件,有肿瘤和没有肿瘤等。二分类的预测结果可以用0/1两个数来表示,一般没有固定的要求,通常0表示没有某样东西,1表示有某样东西。
当然,除了二分类还有多分类问题,即存在多种预测结果,后面将先讨论清楚二分类问题,然后推广到多分类就很容易理解。
2.阈值
用模型去拟合分类问题的数据,很难得到绝对的0/1值,很可能计算后是处于0到1之间的某个值,而结果却只允许有0/1,所以我们需要一个阈值,当预测值大于阈值时,判定为1,当预测值小于阈值时,判定为0。我们用之前线性回归的模型来解决二分类问题,解释一下阈值:
如上图所示,红色的×是各个数据样本,假设用线性回归模型h(x)=θ ^T x来拟合数据,可能得到如上紫红色的直线,假设此时将阈值设置为0.5,左边四个数据样本经过h(x)预测后的值是小于0.5的,将被判定为0,右边四个数据样本经过h(x)预测后的值是大于0.5的,将被判定为1,这样得到的预测结果正好与真实结果相吻合。阈值如果设置成0.1或者是0.9呢?有些样本将会被判定错误。这就是阈值选择的重要性。
但是显然,用线性回归来拟合二分类有很大问题,如下图:在远处多加入一个数据样本,线性回归拟合后的模型可能就会从紫红色直线变成蓝色直线,而此时再用0.5作为阈值,有两个正样本将会被误判为负样本,所以我们需要更适用于分类问题的新模型。
二、 逻辑(logistic)回归假设函数
1.假设的表达式
之前线性回归的预测结果很可能会大于1或小于0,在结果只能是0/1的分类问题中是不合适的,所以希望找到一个模型使得预测结果在0-1之间。逻辑回归的假设函数如下图所示,是一个复合函数h_θ (x)=g(θ ^ T x),其中,g(z)=1 ⁄(1+e ^ (-z) ),得到h_θ (x)=1 ⁄(1+e ^ (-θ ^T x) )。这个函数又称为sigmoid函数或logistic函数,它的形状如下图所示。
2.假设表达式的意义
h_θ (x)=1 ⁄(1+e ^ (-θ ^T x) )的数学含义是输入x时,预测结果y=1的概率。例如肿瘤分类问题中计算得h_θ (x)=0.7,那就意味着有肿瘤的概率是0.7或70%,这是它的内在含义,更数学的写法是h_θ (x)=p(y=1|x;θ)。这里更数学的推导和解释,可以看深度之眼的西瓜书或统计学习方法的课程,非常详细。深度之眼相关课程推荐
3.决策界限
逻辑回归的假设函数以及预测结果的判定如下所示,预测的结果h(x)如果大于等于0.5,则判定为1,反之判定为0。
那么,什么时候h(x)大于0.5,什么时候小于0.5呢?从sigmoid函数的图像可以看出,当θ ^ T x >0时,h(x)将大于0.5,当θ ^ T x <0时,h(x)将小于0.5。也就是说,当θ ^T x >0时,预测结果为1,反之为0。
那什么是决策界限呢?看下面这个例子:
○和×是正负数据样本,它的假设函数为
如何求具体参数值下面再说,假设我们已经求出,分别为-3,1和1。根据刚刚说的,当θ ^T x >0时,预测结果为1,所以当-3+x1+x2>0时,预测y=1。而-3+x1+x2这条直线是划分正负结果的决策关键,所以它称为决策界限。
需要注意的是,决策界限是假设函数的一个属性,由假设函数的参数θ决定,与数据集的分布情况没有关系,即使它没能很好的分类,它也是决策界限,没有很好分类只是假设函数本身没有选好。
再看个稍微复杂一些的例子:
假设有这么一个数据集和假设函数,假设函数的参数已经求出来为-1,0,0,1,1。根据上面所说,如果-1+x1^ 2+x2^ 2>0,则预测结果y=1。而-1+x1^ 2+x2^ 2这个曲线就是决策界限。
一般化的话,就是如下这种情况:复杂的高阶多项式可以得到更复杂的决策界限。
三、 代价函数
回顾一下训练集,假设函数等信息:
假设函数的形式也有了,下面就是如何根据训练集求得参数值的问题。与线性回归问题一样,需要一个代价函数来评判预测结果与真实结果之间的拟合程度。
1.平方误差函数的问题
在线性回归问题中的代价函数如下图所示:
平方误差函数的使用很好地衡量了预测值与真实值之间的拟合程度,但是它不适合用在logistic回归问题上。因为表达式的差异,sigmoid假设函数若使用平方误差作为代价函数,会使得代价函数非凸,而以线性表达式作为假设函数的线性回归问题使用平方误差得到的代价函数则是一个凸函数。
非凸函数与凸函数的图像如下图所示:
从图中可见,若代价函数非凸,使用如梯度下降优化算法优化参数的过程中不能保证能优化到全局最优,很可能停留在局部最优就不动了,而凸函数则可以优化到全局最优。所以对于logistic回归,需要重新找一个代价函数,使之是凸函数,这样才能使用梯度下降法求得最优参数。
2.logistic回归的代价函数
以单样本数据为例,找到的代价函数如下图所示:
我们可以分开看,当y=1时,代价函数如下图所示曲线,从这个曲线可以看出,若预测结果h(x)也为1,那么代价为0,若h(x)趋于0,则代价会非常大。
类似的,当y=0时:
若预测结果h(x)也为0,那么代价为0,若h(x)趋于1,则代价会非常大。可以证明,该代价函数是凸函数,证明可以参考深度之眼的相关课程。
但是这种分段形式的假设函数依然不方便,所以就有了下面这种紧凑的形式:
可以分别把y=0/1代入,得到的结果与分段的形式是一致的。
刚刚都是单个样本的讨论,推广到一般数据集,则变成如下形式:
接下来要做的就是去找到合适的参数值,然后当给定新的输入时,可以预测出相应的输出,如下图所示:
四、梯度下降法求参数
从梯度下降的定义去更新参数,对代价函数求导之后更新如下:
我们观察求导后的结果,这个式子与线性回归模型很相似,但是不同之处在于假设函数h(x)的表达式不同,线性回归和逻辑回归的假设函数分别为如下所示:
所以他们的代价函数也是完全不同的表达式。
除了梯度下降优化算法之外,还有一些高级的优化参数的算法,如下所示:
如共轭梯度、BFGS、L-BFGS等,它们的优点是无需手动选择学习率,更加智能,而且速度会比梯度下降更快;相应的缺点就是算法会更复杂。
五、多分类问题
1.介绍
多分类问题举几个例子:
数据集的差异:(以二分类与三分类为例)
2.“一对多”算法解决多分类问题
借用二元分类的思想,以一个三分类问题为例,可以分成三个二分类问题,每个二分类问题选一个类别作为正类,其余两类全部作为负类,如下图所示:
这样可以拟合出三个假设函数,此时如果有新的输入,则分别送入三个分类器分类,计算得它是每个类别的概率,取概率值最大的那个类别作为它的输出,这也是最可信的、效果最好的预测。