什么是线性回归模型?
对一个或多个自变量进行建模的方法。
2.1 模型表示
通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集。比方说,如果你朋友的房子是1250平方尺大小,你要告诉他们这房子能卖多少钱。那么,你可以做的一件事就是构建一个模型,也许是条直线,从这个数据模型上来看,也许你可以告诉你的朋友,他能以大约220000(美元)左右的价格卖掉这个房子。这就是监督学习算法的一个例子。
它被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们:根据我们的数据来说,房子实际的价格是多少,而且,更具体来说,这是一个回归问题。回归一词指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格,同时,还有另一种最常见的监督学习方式,叫做分类问题,当我们想要预测离散的输出值,例如,我们正在寻找癌症肿瘤,并想要确定肿瘤是良性的还是恶性的,这就是0/1离散输出的问题。更进一步来说,在监督学习中我们有一个数据集,这个数据集被称训练集。
使用二元一次方程可以表达最简单的线性回归,其中 x 是自变量,只用一个变量来预测结论的是一元线性方程, 线性回归就是要找一条直线,并且让这条直线尽可能地拟合图中的数据点。如上图右边蓝色笔记所示。
2.2 代价函数
如果 已知x 代表房子大小,y 代表房子的价钱,我们拥有一个数据集是(x,y),那么我们需要找到一条直线,尽量的与数据点(x,y)拟合。那么在 x 是自变量的情况下,我们需要找到合适的θ0 和θ1,使得 h θ (x)的数值尽量靠近 y。我们希望它俩的差值尽可能的小,这样可以确保我们找到的 h 模型(也就是那根预测线是相对准确的,也便于我们对于数据进行预测)。所以:
为什么没有直接使用差值而是使用平方差,是因为平方可以帮助我们消除负数。
以上这个例子里,x 和 y 只是整个数据集里的某一个数据,我们希望针对整个数据集,找到一条可以拟合的直线,所以
其中,m 是代表数据集里有 m 个(x,y)的数据。我们希望,将 m 个数据的平方差进行加总后的值也是最小的。
以上就是普通的最小二乘法,其中二乘就是代表平方的意思。
为了便于理解,我们通常会将数值乘以 1/2m, 这只是为了使数学更直白一点(因为后续偏导后会有个 2,这里的 除 2 可以与偏导后的结果抵消),因此对这个求和值的二分之一求最小值,我们需要找到最合适的θ0 和θ1,左边的表达式是为了让右边表达式的值最小。
原文是:
首先,我们使用简化的假设函数。我们让θ0=0,这样拟合直线是一条简单的穿过坐标轴 (0,0)的线
这里,h θ (x)是一个假设函数,是一条关于房子大小的自变量x 相关的函数,而 J(θ1)是关于θ1 的函数,控制这直线的斜率。
这里在我们已知3 个数据(1,1)(2,2)(3,3),来求得当θ1=1 时,J(θ1)=0:
那么θ1= 0 .5时,J(θ1)=0.58:
当斜率θ1为 0 时,该预估线与 x 轴并行,那么将预估值与原始数据进行计算后,求得 J(θ1)= 2.3.当我们将不同的斜率值带入公式,最后会获得 J(θ1)的曲线图,大约如下:
我们最终的目的是为了优化目标,从一堆θ1选择最小的θ1,为了让预测线与原始数据线更贴合。
而上面的曲线图里,当 θ1时,目标是最小的,这样我们也就找到了最合适的θ1数值。这个例子里,我们为了方便计算,我们将θ0设定为 0,如果我们将θ0 也带入进来。
当我们只有一个参数 θ1时,获得 J(θ1)的图是一个 U 形的曲线图,但添加一个参数 θ0后, J(θ0,θ1)将是一个 3D 的曲面图
从图上可以看到,这个碗状的曲面图的最底点,是θ 0 和θ1的最小值,也就是我们要找的参数,但通常我们获得的数据不一定可以画出这么肉眼可见最小值的图形,且一步一步的计算和画图会让步骤变得繁琐,我们希望机器自己可以计算出最小值,那么就需要用到梯度下降法。
2.3 梯度下降
梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数 J(θ0,θ1)的最小值。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合θ0,θ1,...θ n,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到找到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上,在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己要在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。
梯度下降的算法如下:
其中':='代表赋值。α代表学习的速率,如果这个值很大,梯度下降就会很迅速,则代表下山的速度越快,反之,则速率变小。这里需要注意的是,θ 0 和θ1是同时更新的,不是先更新某一个再更新另一个。如果 alpha 数值太大容易不收敛,如果 alpha 数值太小会收敛太慢。
2.4 梯度下降和线性回归
这里需要注意梯度下降算法里偏导数部分。
经过更新后,梯度下降的算法会变为:
xi ,yi(i=1,2,…m)都是已知的,全部代入上面两个式子,就可求得θ 0 和θ1的值啦。
总结:
以上这种梯度下降的方式被称为 Batch Gradient Descent. 这种梯度下降的方法,每一次下降都会遍历整个数据集。