建设二手网站的建设费用包括,腾讯推广平台,无锡做网站优化多少钱,北京网页设计线性回归
还是以之前的预测房价为例#xff0c;根据不同尺寸的房子对应不同的售价组成的数据集画图#xff0c;图如下 监督学习算法工作流程
假设函数其实就是我们所说的函数#xff0c;在房价这个例子中#xff0c;我们可以从上图中看出房价和房子面积是一个一元的线性函…线性回归
还是以之前的预测房价为例根据不同尺寸的房子对应不同的售价组成的数据集画图图如下 监督学习算法工作流程
假设函数其实就是我们所说的函数在房价这个例子中我们可以从上图中看出房价和房子面积是一个一元的线性函数当然有更复杂更贴近数据集的函数拟合数据集但是我们从最简单的开始学习所以我们要来预测y关于x的线性函数可以简单写成y h(x)但它更完整的写法是下图的形式 接下来的例子中会用到的一些符号
训练集数据集又称为训练集如下面的房价数据集
小写字母m训练集中样本的数量也就是数据集中总的数据个数
小写字母x输入变量这里指的是房子的面积
小写字母y输出变量预测的对应面积x的房子售价
(x, y)表示某一个训练样本如房价数据集中的某一行数据
(x^i, y^i)i是上标表示第i个样本 代价函数
下面介绍的代价函数称为平方误差函数有时还称为平方误差代价函数。是代价函数中的一种在解决线性回归问题中比较常用当然还有其他代价函数
模型参数介绍
如图我们要做的是如何选择两个模型参数以让假设函数更贴近训练集也就是选择对两个模型参数θ0和θ1会让预测结果更准确 模型参数的选择
选择不同的模型参数会得到不同的假设函数 现在我们要根据训练集得出两个模型参数的值进而得到具体的假设函数让该假设函数尽可能多的与训练集中的数据点拟合。那我们该怎么选择这两个模型参数呢
思路是对于训练集中的每个数据每个房子面积x都对应着已知的售价y假如已经确定两个模型参数即已经得到假设函数应该使得对该假设函数输入训练集中的某个x得到的yy与实际的y最接近也就是我们说的要最大程度的拟合数据点
总之就是我们要使得预测的房价和真实的售价之间差值的平方越小越好至于为什么是平方是因为预测价和真实价的差值可能正可能负
代价函数的数学定义 理解代价函数
为了更好理解现在我们简化一下假设函数如图因为公式不好写所以都用截图表示了 θ1可以取不同的值包括正数、负数、0我们的目标是找到让J(θ1)最小的θ1由J(θ1)的图像可以看出在这个例子中θ1 1时J(θ1)能取到最小值而当θ11时假设函数也是能最大程度的拟合训练集的每个样本的在这个例子中假设函数完全拟合训练集中的三个数据点 上面我们为了容易理解简化了假设函数让θ00即假设函数中只有一个模型参数现在讨论原本的假设函数有两个模型参数θ0θ1 代价函数J(θ0θ1)的函数图像如下 我们用等高线图代替上面的立体图可以看出越接近等高线图的中心代价函数的值就越小而对应的假设函数就越拟合训练集数据。
我们都是随便取某个点来进行分析但是实际上不可能一个个列举所以算法要做的就是快速找到最小的代价函数值J(θ0θ1)对应的θ0和θ1. 梯度下降算法
上面我们的需求是想得到最小的代价函数值那么我们此时可以使用梯度下降算法来实现这个需求。梯度下降算法不仅仅可以最小化线性回归的代价函数还可以最小化其他函数即梯度下降算法可以最小化任意函数被广泛应用于机器学习的众多领域。
梯度下降算法可以最小化任意函数J(θ0θ1θ2...θn)即得到任意函数的最小值或局部最小值下面为了更容易理解以两个模型参数为例J(θ0θ1)描述梯度下降算法的思路
在每一个位置选择不同方向的路时实际上上就是在不断修改θ0和θ1的值 梯度下降算法的数学定义
公式中的α控制着以多大幅度更新参数θj 梯度下降算法的理解
导数项的意义
我们先来看导数的概念及基本含义这里只写出了最基本的一点来自百度因为我也忘完了(╥╯^╰╥)
导数是用来描述函数局部变化率的度量。对于给定的函数它在某一点处的导数就是函数曲线在该点处的切线斜率。具体地说若函数yf(x)在点x0处可导则点(x0, f(x0))处切线的斜率就是f(x)在点x0处的导数f(x0)。导数本质上是一个极限即函数在某个点x0处的导数就是其在此点附近取极限时的极限值即f(x0) lim (x-x0) [f(x) - f(x0)] / [x - x0]
为了容易理解现在假设代价函数只有一个模型参数即J(θ1)跟之前一样我们可以得到J(θ1)的函数图像如下由上面的导数概念可以知道函数J(θ1)在位置A的导数就是在函数图像上的位置A作一条切线该切线的斜率就是J(θ1)在位置A的导数值。 我们再看看另一个位置B的导数如下 梯度下降算法的运行过程
学习率α大小的影响如下 从上面可以出α是一个固定值不影响梯度下降算法会自动根据导数值的不同来调整每一步走的步子大小。说到这里好像也没说α的用处也没说该如何定义α的值以及为什么还要乘以α而不是直接减去导数值
我看了一下视频弹幕说我们现在举的都是最简单的函数但是实际应用中函数会很复杂非常有可能是多维的而且函数不一定连续等等。所以这里就当做是理解梯度下降算法的思想吧。如果后面的视频讲到原因会做笔记的B站视频链接 这个专栏里的文章应该都是这个视频的笔记
梯度下降算法在代价函数中的应用 求梯度下降算法中的导数项
我们先求梯度下降算法中的导数项的值这里求导数的过程使用了复合函数求导和偏导数这两个知识点。
偏导就是当一个函数中有多个变量如这里代价函数中有两个变量θ0和θ1在对其中某一个变量求导数时将其他变量都视作常数项如对变量θ0求偏导时将θ1项都看作是常数项而复合函数求导法则如下来自知乎 下图中隐函数为假设函数h(x) θ0 θ1*x在对θ0求偏导时h(θ0) 1θ1*x这一项看作常熟项在对θ1求偏导时h(θ1) xθ0和x都看作常熟项
外函数J(h(x)) (1/2m)[h(x) - y]^2对J函数偏导时由于J是复合函数所以运用复合函数的求导法则首先J(h(x)) (1/m)(h(x) - y) 说明将h(x)看作一个变量相当于((x-a)²)2(x-a)所以求导之后平方没了前面的二分之一也消掉了2这也是为什么之前要写成1/2m的原因结合上面的h(x)对θ0和θ1的偏导可以得到图中针对θ0和θ1的导数项的值 将计算得到的导数项代入梯度下降算法公式如下 梯度下降函数在线性回归中的具体实现过程
在下面这张图中从不同的位置出发即初始化的值不同会得到不同的局部最优解 但是我们所举例的房价这一线性回归的例子的代价函数的图像是一个弓状函数这种称为凸函数具体的自行百度一下吧我也不懂这个函数没有局部最优解只有全局最优从图形也可以看出这一点当计算这种代价函数的梯度下降时总能得到全局最优解 首先先初始化θ0和θ1的值一般都初始化为0在这里为了方便演示从图中的点开始 上面所展示的梯度下降算法有时也称为batch梯度下降从上面的过程中可以看到batch梯度下降算法每运行一次即从一个点到另一个点所运行的一次梯度下降都会遍历训练集中的每个样本因为在单独的一次梯度下降中计算偏导时最终都是计算m个样本的总和.所以batch梯度下降算法每一次都是从整个训练集入手而还有其他的梯度下降算法只从训练集的小子集入手