3.1 代价函数[通俗易懂]

3.1 代价函数[通俗易懂]3.1代价函数(costfunction)    代价函数有助于将最可能的线性函数与我们的数据相拟合。在线性回归中,我们有一个这样的数据集,m表示训练集样本数,而我们的假设函数,也就是我们用来进行预测的函数,是图中所示的线性函数形式。    接下来,我们引入一些术语,Ɵ0和Ɵ1,这些Ɵi我们将它称作为模型参数,我们要做的就是如何去选择这两个参数。对于不同的Ɵ0和Ɵ1,我们会得到不同

大家好,又见面了,我是你们的朋友全栈君。

3.1 代价函数(cost function)

    代价函数有助于将最可能的线性函数与我们的数据相拟合。在线性回归中,我们有一个这样的数据集,m表示训练集样本数,而我们的假设函数,也就是我们用来进行预测的函数,是图中所示的线性函数形式。

3.1 代价函数[通俗易懂]

    接下来,我们引入一些术语,Ɵ0和Ɵ1,这些Ɵi我们将它称作为模型参数,我们要做的就是如何去选择这两个参数。对于不同的Ɵ0和Ɵ1,我们会得到不同的假设函数,如下图所示。

3.1 代价函数[通俗易懂]

    在线性回归中,我们有一个训练集,可能如下图所示。我们要做的是得出Ɵ0和Ɵ1,使我们得到的假设函数表示的直线尽量的与这些数据点相拟合。我们怎么选择Ɵ0和Ɵ1呢?我们的想法是我们要选择能够使h(x),也就是输入x是我们的预测的值,最接近该样本对应的y值的参数Ɵ0和Ɵ1。在房子价格预测的例子中,x表示要买出的房子的尺寸大小,y表示卖出的房子的实际价格,我们要尽量选择参数,使得在给出的训练集中,给出的x的值,能够很好的预测y的值。

    让我们给出更加标准的定义,在线性回归问题中,我们要解决的是一个最小化的问题,写出关于Ɵ0和Ɵ1的最小化式子,想要h(x)和y之间的差异要小,所要做的事情就是尽量减少预测输出的价格与房子的实际价格的平方最小。接下来进行更加详细的阐述。别忘了,我们使用(x(i),y(i))代表第i个样本,我所要做的就是对所有的样本,预测输出的结果与实际价格差的平方进行一个求和,如下图所示。我们要尽量减小预测值和实际值的这个平方误差和。1/m表示尝试是平均误差最小,1/2m,通常是这个数的一半。

3.1 代价函数[通俗易懂]

    简单的说,我们将这个问题变为找到能使我的训练集中的预测值与实际值的差的平方和的1/2m最小的Ɵ0和Ɵ1的值。因此,这将是我的线性回归的整体的目标函数(这就是代价函数),为了使它更加的清楚,我们需要改写这个函数。按照惯例,我们定义一个代价函数J,如下图所示,我们要做的是对Ɵ0和Ɵ1求J的最小值,J就是代价函数。

3.1 代价函数[通俗易懂]

    代价函数也被称为平方误差函数(Squared error function),有时也被称为平方均方误差(Mean squared error)。为什么我们要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是线性回归问题都是一个合理的选择,其他代价函数也能很好的发挥作用,但是平方误差函数可能是解决线性回归问题最常用的手段了。在后面将更加详细的介绍J的工作原理以及尝试更加直观的解释它在计算什么,以及我们使用它的目的。

    总结,我们可以使用代价函数来衡量我们得到的假设函数的准确度。

3.1.1 代价函数Intuition I

上面我们介绍了代价函数数学上的定义,在这里让我们通过一些例子来获取一些直观的感受,看看代价函数到底是在干什么?

    回顾一下,上次我们讲到,我们想找到一条直线来拟合我们的数据。我们用 θ0和θ1 等参数得到了这个假设h,而且通过选择不同的参数,我们会得到不同的直线拟合,然后我们还有一个代价函数(cost function),这就是我们的优化目标(goal)。

 

3.1 代价函数[通俗易懂]

    为了便于我们理解,我们需要将代价函数简化,如下图右边所示。 也就是我们可以将这个函数看成是 把 θ0 设为0,假设函数变为θ1*x,所以我只有一个参数,唯一的区别是现在 h(x) 等于 θ1*x,只有一个参数 θ1 ,所以我的 优化目标是将 J(θ1) 最小化,用图形来表示就是如果θ0 等于零,也就意味这我们选择的假设函数会经过原点。如下图所示。

3.1 代价函数[通俗易懂]

    试着更好的理解代价函数这个概念,我们需要理解这两个重要的函数,一个是假设函数,一个是代价函数。

    假设函数就是一个关于x房子大小的函数,与此不同的数,代价函数是关于θ1的函数,而θ1控制着这条直线的斜率,我们将这些函数画出来,试着更好的理解它们,如下图所示。

    先从假设函数开始,我们的数据集包含了三个点(1,1)(2,2),(3,3)。选择θ1=1,我们的假设函数看起来就是下图所示的一条直线,横轴表示的是房子的价格x。我们将θ1定为1,我们想要做的是算出在θ1=1的时候J(θ1)是多少。

所以我们按照这个思路来计算代价函数的大小和之前一样代价函数定义如图中所示, 对这个误差平方项进行求和,简化以后就等 三个0的平方和,当然还0。 现在在代价函数里,我们发现所有这些值都等于0 因为对于我所选定的这三个训练样本 ( 1 ,1 ) (2,2) 和 (3,3) ,如果 θ1 等于 1 那么 h(x(i)) 就会正好等于 y(i),所以 h(x) – y 所有的这些值都会等于零,这也就是为什么 J(1) 等于零。

3.1 代价函数[通俗易懂]

在下图的右边是对应的代价函数,要注意的是我们的代价函数是关于θ1的函数,当我们描述代价函数的时候,横轴表示的是θ1,J(1)等于0,我们有了一个点,我们来看其他一些样本,θ1可以被设定为某个范围内的各种取值,可以使负数等,如果θ1=0.5会发生什么?

如下图所示,我们发现代价函数后面的求和,就是蓝色线段的高度的平方求和,我们可以计算出J(0.5)=0.58,如下图中所示,将这个点在右边图中画出来,

这样一步步的得到更多的点,我们就可以一步步的画出代价函数对应的曲线。如下图右边所示。

    我们回顾一下,对于不同的θ1的取值,对应着不同的假设函数,或者说对应于左边一条不同的拟合直线,对于任意的θ1,你可以计算出不同的J(θ1),我们可以利用这些画出右边的这条曲线。现在,你还记得学习算法的优化目标是我们想找一个θ1,使得J(θ1)最小,看图中J(θ1)的曲线可以知道,使J(θ1)最小的θ1的值是1,从图中的左边可以看出,θ1=1确实对应着最佳的数据拟合直线,我们最后能够完美的拟合,这就是为什么最小化J(θ1),对应着寻找一个最佳拟合直线的目标。

3.1 代价函数[通俗易懂]

    这里我们使用图形帮助我们理解代价函数,为了便于理解,我们将θ0设定为0,下面我们将回到原来的问题,即不将θ0设定为0,画出存在θ1和θ0的代价函数的图形,希望能够帮助我们更好的理解代价函数。

3.1.2 代价函数Intuition II

这一小节,我们将更加深入的学习代价函数的作用,和之前一样,下图所示的是几个重要的公式,包含了假设h、参数θ、代价函数、以及优化目标goal。与上一节不同的是我们将假设函数写为关于θ0和θ1的函数。

3.1 代价函数[通俗易懂]

首先我们同样来理解假设函数和代价函数,存在两个参数的时候,可能会得到如下所示的一个三维曲面图,下面的两个轴分别表示θ0和θ1,纵轴表示J(θ0,θ1),你改变θ0和θ1,会得到不同的代价函数J(θ0,θ1),J(θ0,θ1)对于某个特定的(θ0,θ1),这个曲面的高度,也就是竖直方向的高度,就表示代价函数J(θ0,θ1)的值。

3.1 代价函数[通俗易懂]

后面不再使用三维曲面图来解释代价函数,将使用轮廓图(contour plot/figure)来进行解释。如下图右边所示就是一个轮廓图。

3.1 代价函数[通俗易懂]

    横轴表示的是θ0,纵轴表示的是θ1,而这些一圈一圈的椭圆形,每一个圈表示J(θ0, θ1)相同的所有点的集合。一系列同心椭圆的中心点就是最小值。其实轮廓图就是等高线图,相当于三维曲面图在一个平面上的投影。

    接下来让我们看几个简单的例子,在这里有一个点(蓝色标记的),θ0是800,θ1是大概是-0.15,这个(θ0,θ1)组,对应于左边这样一条假设函数直线,与纵轴相交的地方是800,斜率大概是-0.15,但是这条直线不能很好的拟合所有数据,你也发现了,这个代价值所在的位置离中心点(最小值)也比较远,也就是说这个代价值是比较远的。如下图所示。

3.1 代价函数[通俗易懂]

    后续我们将遇到更高维度、更多参数、更加复杂的情况。我们需要做的是编写程序自动找出θ0和θ1这样的值。下一节将介绍一种能够自动找出θ0和θ1的算法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132418.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月30日 下午8:00
下一篇 2022年4月30日 下午8:20


相关推荐

  • linux chmod 755的含义

    linux chmod 755的含义chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。一般是三个数字:第一个数字表示文件所有者的权限第二个数字表示与文件所有者同属一个用户组的其他用户的权限第三个数字表示其它用户组的权限。 权限分为三种:读(r=4),写(w=2),执行(x=1) 。 综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(r

    2022年7月16日
    27
  • Qt高并发

    Qt高并发QThread是一个低级(low-level)类,适合用于显式地构建长期运行的线程。     QtConcurrent是一个命名空间,提供了用于编写并发软件的更高层次的类和算法。该命名空间中有一个重要的类,QThreadPool,这是一个管理线程池的类。每个Qt应用程序都有一个QThreadPool::globalInstance()函数,它带有一个推荐的最大线程数,在大多数系统上,处理核的数…

    2022年5月28日
    119
  • 外包公司怎么样「建议收藏」

    外包公司怎么样「建议收藏」其实大家每天心里都像明镜一样的明白“低技术含量的外包没有前途”,好多人都认为外包没有技术,其实这种思想不对,国外有大量的高端技术外包业务等着我们干,但是反问一句“你们能干吗?”,现在大部分的公司都是平均每个项目开发4个月,干完就再转一个组再做别的项目,从Java.NETCC++到你们没有听说过的RPG,一个有着7年开发经验的外包人员可以说自已会十几种开发语言做过几十个case,但是我们不…

    2022年5月19日
    51
  • n8n Docker Compose 设置指南

    n8n Docker Compose 设置指南

    2026年3月15日
    2
  • SkipList 原理

    SkipList 原理跳表是允许在有序序列元素内快速搜索的数据结构 通过维护子序列的链接层次结构可以快速搜索 每个连续的子序列跳过比前一个更少的元素 搜索开始于最小的子序列 直到找到两个连续的元素 一个更小 一个大于或等于所搜索的元素 通过链接层次结构 这两个元素链接到下一个最短子序列的元素 其中搜索继续 直到最后我们以完整的顺序搜索 可以概率地或确定性地选择跳过的元素完整的跳表的图示

    2026年3月26日
    2
  • Linux下恢复误删的文件

    Linux下恢复误删的文件一 安装 extundeletey yinstallepel release 安装 epel 第三方源 yum yinstallextu 二 开始恢复假设我需要恢复的文件或目录为 opt module anaconda31 查看我们主分区挂载的路径 df lh 如图 dev vda1 是主分区路径 2 找到被删除的文件 extundelete dev vda1inode2 有提示按 Y 即可 如图我们看到 opt 目录的编号为 接下来进入

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号