吴恩达机器学习-可选实验:逻辑回归,逻辑损失(Logistic Regression,Logistic Loss)

在这个不评分的实验中,你将:

  • 探讨误差平方损失不适合逻辑回归的原因
  • 探索逻辑损失函数
import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt
from plt_logistic_loss import  plt_logistic_cost, plt_two_logistic_loss_curves, plt_simple_example
from plt_logistic_loss import soup_bowl, plt_logistic_squared_error
plt.style.use('./deeplearning.mplstyle')

逻辑回归的平方误差

回想一下,对于线性回归,我们已经使用了平方误差代价函数:一个变量的平方误差代价方程为:
在这里插入图片描述
在这里插入图片描述
回想一下,误差平方代价有一个很好的性质对代价求导会得到最小值。

soup_bowl()

在这里插入图片描述
但是如果我们将线性回归应用到逻辑回归:
在这里插入图片描述
损失函数将出现很多局部最小值,不利于我们求解参数w和b
在这里插入图片描述
接着我们使用具体训练集和plot功能来探讨:
成本函数在线性回归中工作得很好,很自然地,它也适用于逻辑回归。然而,正如上面的幻灯片所指出的,fwb(x)现在有一个非线性分量,即sigmoid函数:fw,b(x) = sigmoid(wx +b)。让我们在前面的实验示例中尝试平方误差代价,现在包括sigmoid曲线。下面是我们的训练数据:

x_train = np.array([0., 1, 2, 3, 4, 5],dtype=np.longdouble)
y_train = np.array([0,  0, 0, 1, 1, 1],dtype=np.longdouble)
plt_simple_example(x_train, y_train)

在这里插入图片描述
现在,让我们用平方误差代价来绘制代价的曲面图。
在这里插入图片描述

plt.close('all')
plt_logistic_squared_error(x_train,y_train)
plt.show()

在这里插入图片描述
虽然这产生了一个非常有趣的图,但上面的表面并不像线性回归的“汤碗”那么光滑!

逻辑回归需要一个更适合其非线性性质的成本函数。
这从损失函数开始。这将在下面描述。
逻辑损失函数
单个损失:
在这里插入图片描述
整个模型损失:
在这里插入图片描述
图解如下:
在这里插入图片描述
在这里插入图片描述
逻辑回归使用更适合分类任务的损失函数,其中目标是0或1而不是任何数字。

注:在本课程中,使用了以下定义:
Loss是单个示例与其目标值之差的度量,而Cost是训练集上损失的度量

定义如下:

  • Loss (fw,b(x^i), y^i)为单个数据点的代价,即:
    在这里插入图片描述
  • Fw,b(x)为模型预测值,y^i为目标值。
  • Fw,b(x^i) =g(w*x ^i+b)其中函数g为sigmoid函数。

这个损失函数的定义特征是它使用了两条不同的曲线。一条用于目标为零或(y= 0)的情况,另一条用于目标为1 (y= 1)的情况。结合起来,这些曲线提供了对损失函数有用的行为,即当预测与目标匹配时为零,当预测与目标不同时值迅速增加。考虑下面的曲线:

plt_two_logistic_loss_curves()

在这里插入图片描述
综合起来,曲线类似于误差损失平方的二次曲线。注意,x轴是fw,b,这是一个sigmoid曲线的输出。sigmoid输出严格在0到1之间。上面的损失函数可以重写以更容易实现。
在这里插入图片描述
这是一个看起来相当可怕的等式。考虑到y只能有两个值,0和1,这就不那么令人生畏了。然后我们可以把方程分成两部分:当y = 0时,左边的项被消除:

当y= 1时,右边的项消去了在这里插入图片描述
好的,有了这个新的逻辑损失函数,我们就可以得到一个包含所有例子损失的代价函数。这将是下一个实验的主题。现在,让我们看看上面这个简单例子的成本与参数曲线:

plt.close('all')
cst = plt_logistic_cost(x_train,y_train)

在这里插入图片描述
这条曲线非常适合梯度下降!它没有高原、局部极小值或不连续点。注意,在平方误差的情况下,它不是一个碗。绘制成本和成本的对数是为了说明这样一个事实,即当成本较小时,曲线有一个斜率并继续下降。提醒:您可以使用鼠标旋转上述绘图。在这里插入图片描述
在这里插入图片描述

祝贺

你有:确定误差平方损失函数不适合分类任务开发并检验了适合分类任务的逻辑损失函数。

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 08:44:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 08:44:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 08:44:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 08:44:06       18 阅读

热门阅读

  1. Retelling|Facebook1

    2024-03-15 08:44:06       20 阅读
  2. 第2周 Python列表、元组刷题

    2024-03-15 08:44:06       21 阅读
  3. 缓存和数据库更新的先后处理方案

    2024-03-15 08:44:06       23 阅读
  4. 小程序开发——获取设备信息 API(四)

    2024-03-15 08:44:06       19 阅读
  5. Quartz项目实际使用

    2024-03-15 08:44:06       17 阅读
  6. SQL笔记 -- 黑马程序员

    2024-03-15 08:44:06       18 阅读