单变量线性回归
单变量线性回归(Linear Regression with One Variable)
模型表示(Model Representation)
- 房价预测训练集
Size in | Price ($) in 1000's( |
---|---|
2104 | 460 |
1416 | 232 |
1534 | 315 |
852 | 178 |
... | ... |
房价预测训练集中,同时给出了输入
- 问题解决模型

其中
: 特征/输入变量。
上式中,
单变量,即只有一个特征(如例子中房屋的面积这个特征)。
代价函数(Cost Function)
我们的目的在于求解预测结果
: 训练集中的样本总数
: 目标变量/输出变量
: 训练集中的实例
: 训练集中的第 个样本实例 假设函数(Hypothesis):
参数(Parameters):
代价函数(Cost Function):
目标(Goal):
为了直观理解代价函数到底是在做什么,先假设

右图
参数在

大概在

上图中最中心的点(红点),近乎为图像中的最低点,也即代价函数的最小值,此时对应
为了求解最小值,引入了代价函数(Cost Function)概念,用于度量建模误差。考虑到要计算最小值,应用二次函数对求和式建模,即应用统计学中的平方损失函数(最小二乘法):
: 的预测值 系数
存在与否都不会影响结果,这里是为了在应用梯度下降时便于求解,平方的导数会抵消掉 。
讨论到这里,我们的问题就转化成了求解
最小二乘法(least square method)就是基于均方误差最小化来进行模型求解的一种方法,寻找可使损失函数值最小的参数
通过对损失函数分别求参数
在实际任务中,只要我们把自变量(x, y, m)的值代入就可以求出数值解了。
为什么可以这样求解呢?因为损失函数是一个凸函数(记住是向下凸,类似 U 型曲线),导数为 0 表示该函数曲线最低的一点,此时对应的参数值就是能使均方误差最小的参数值。特别地,要判断一个函数是否凸函数,可以求其二阶导数,若二阶导数在区间上非负则称其为凸函数,若在区间上恒大于零则称其为严格凸函数。
凸函数:
梯度下降(Gradient Descent)
在特征量很大的情况下,即便是借用计算机来生成图像,人工的方法也很难读出
梯度下降背后的思想是:开始时,我们随机选择一个参数组合
下图根据不同的起始点,产生了两个不同的局部最小值。

视频中举了下山的例子,即我们在山顶上的某个位置,为了下山,就不断地看一下周围下一步往哪走下山比较快,然后就迈出那一步,一直重复,直到我们到达山下的某一处陆地。
梯度下降公式:
: 第 个特征参数 ”:=“: 赋值操作符
: 学习速率(learning rate),
: 的偏导
公式中,学习速率决定了参数值变化的速率即”走多少距离“,而偏导这部分决定了下降的方向即”下一步往哪里“走(当然实际上的走多少距离是由偏导值给出的,学习速率起到调整后决定的作用),收敛处的局部最小值又叫做极小值,即”陆地“。

注意,在计算时要批量更新
梯度下降直观理解(Gradient Descent Intuition)
该节探讨

把红点定为初始点,切于初始点的红色直线的斜率,表示了函数
初始
不熟悉斜率的话,就当斜率的值等于图中三角形的高度除以水平长度好啦,精确地求斜率的方法是求导。
对于学习速率
学习速率过小图示:
收敛的太慢,需要更多次的迭代。
学习速率过大图示:
可能越过最低点,甚至导致无法收敛。
学习速率只需选定即可,不需要在运行梯度下降算法的时候进行动态改变,随着斜率越来越接近于 0,代价函数的变化幅度会越来越小,直到收敛到局部极小值。
如图,品红色点为初始点,代价函数随着迭代的进行,变化的幅度越来越小。

最后,梯度下降不止可以用于线性回归中的代价函数,还通用于最小化其他的代价函数。
线性回归中的梯度下降(Gradient Descent For Linear Regression)
线性回归模型
梯度下降算法
直接将线性回归模型公式代入梯度下降公式可得出公式

当
所以当
所以当
上文中所提到的梯度下降,都为批量梯度下降(Batch Gradient Descent),即每次计算都使用所有的数据集
由于线性回归函数呈现碗状,且只有一个全局的最优值,所以函数一定总会收敛到全局最小值(学习速率不可过大)。同时,函数

另外,使用循环求解,代码较为冗余,后面会讲到如何使用**向量化(Vectorization)**来简化代码并优化计算,使梯度下降运行的更快更好。