系列文章目录
第八章 Python 机器学习入门之逻辑回归及梯度下降
目录
系列文章目录
一、平方误差损失函数为什么不适合逻辑回归
二、逻辑损失函数为什么有用
三、简化逻辑回归代价函数
四、实现梯度下降
总结
一、平方误差损失函数为什么不适合逻辑回归
代价函数为我们提供了一种方法来找到适合训练数据的一组特定的参数
在逻辑回归中使用代价函数,它可以帮助我们找到合适的参数,
回到判断肿瘤大小的例子,它可以有很多特征,像肿瘤的大小,时间等,特征值可以是x1 到 xn, 但是它实际,还是一个二分类问题,它的输出目标只有两个 0 或者 1 ,它的逻辑回归模型的方程如图所示。
那么它如何提供梯度下降去找到合适的参数w 和 b 呢?
回想一下线性回归,我们使用的是平方误差代价函数,
对于线性回归模型 linear regres ,代价函数的图形是一个U形,一步一步的找到最小代价函数
当逻辑回归模型 logistic regression 也使用这个平方误差代价函数会怎么样?
如图,逻辑回归模型的代价函数图形是非凸代价函数,
这也就意味着,进行梯度下降时,代价函数会有很多局部最小值,我们无法得到代价函数的全局最小值,所以使用平方误差代价函数并不是一个好的选择
这时候,为了可以得到代价函数的全局最小值,只需要改变一下我们之前使用的平方误差代价函数,如图,将公式中的1/2 写到后面即可。
其中有个术语叫做 单个训练示例的损失,称为损失函数loss function,我们可以这样理解,代价函数就是所有的损失函数的和除以m,m 是训练示例的数量。这个损失函数是一个凸函数
二、逻辑损失函数为什么有用
我们要先明确一点,损失是单个示例与其目标值之差的度量,
而代价是训练集损失的度量
为什么这个损失函数有意义?我们可以就公式分开来讨论一下
当 y = 1 时,看看这个损失函数在做什么
注意:损失函数衡量的是我们在一个训练例子损失,我们得到的所以的训练例子的损失值才是代价值
如图,损失函数在f > 1 时,还是在下降,而f 时逻辑回归的输出,因此,f 一直在0 到 1 之间,
所以来重点看看,f 在0 到 1 之间的这段函数图像,
如果算法预测的概率接近1.真实标签为1,那么损失值就非常小接近于0,因为我们非常接近正确答案,
如果算法预测为0.5,损失值也不是很高,
那如果预测的结果时0.1的话,我们知道 y = 1 表示时恶性肿瘤,
但是如果预测是恶性肿瘤的概率只有0.1,但是它确实是恶性肿瘤时,上面函数就不准确了,由图可知,这里的损失值非常高的。
当 y = 0 时,看看这个损失函数在做什么
当 y = 0 ,或非常接近0的时候,损失值非常小,接近0了。
当 y 值接近1 时,损失函数实际上接近无穷大,、
回到我们的例子,如果预测一个病人肿瘤时恶性的概率时99%,但是实际上肿瘤是良性的时候,损失值就会非常大
三、简化逻辑回归代价函数
因为我们讨论的二元分类问题,输出的结果只有 0 或 1 ,所以我们可以简化逻辑回归代价函数,如图
将简化的逻辑回归损失函数公式带入到代价函数的公式中,我们就会得到一个完整的,适用与逻辑回归的梯度下降中的公式
有了这个逻辑损失函数,我们就可以来求整个的代价函数了,
我们再来看看代价函数,将损失函数带入,如如图所示,
这个代价函数,是使用称为最大似然估计的统计原理进行统计的
四、实现梯度下降
实现梯度下降 gradient descent implementation
为了拟合逻辑回归模型的参数,我们需要找到最小化的代价函数J 的参数 w 和 b 的值,
我们将使用梯度下降实现这个,那么如何实现逻辑回归中的梯度下降呢
首先,我们需要找到参数 w 和 b
当我们找到参数后,给模型一个新的输入 x ,
以肿瘤为例,给了模型一个病人肿瘤的大小和年龄,来判断肿瘤是良性还是恶性的
当有个输入x 进入模型后,模型就会做出预测,输出 y 标签是0 或 1 的概率是多少
我们想要最小化代价函数,那就需要用到梯度下降。
如图,来看看逻辑回归中的代价函数
和线性回归中的参数一样,我们需要重复更新参数,直到函数收敛,参数 w,b也是需要同步更新的
将导数写出来带入到参数中,
不难发现,参数的更新的表达式看起来和线性回归的一样,但是其实两者有很大的区别,根本原因就是公式中的f(x) 的定义是不同的
为了确保逻辑回归的梯度下降收敛,我们还可以使用矢量化和特征缩放。
总结
总结一下:
我们学习了线性回归中使用的平方误差代价函数并不适用于逻辑回归,
为了实现逻辑回归中进行梯度下降,我们定义了一个单个训练示例的损失,还提出了逻辑回归损失函数的定义
通过这种损失函数的选择,整体的代价函数是凸的,这样我们就可以使用梯度下降得到全局最小值
代价函数cost function 是整个训练集的函数,损失函数loss function 是单个训练示例函数
某组参数w , b 的代价等于 1/m 乘以这一组所有的训练样例损失的总和
如果我们能找到参数w 和 b的值来最小化损失函数,那么我们就有了用于逻辑回归的参数 w 和 b



