Lesson2 单一特征量的线性回归
2-1
- Training Set: 训练集,表示所有训练的数据总和。
- m:表示测试的数据集的总量。例如有47条数据作为数据集。
- x:表示输入,例如目前预测是不同尺寸的房子的价钱,所以x表示的就是房子的大小。
- y:表示输出,例如房子的最终价钱就是输出。
(x,y)表示一个训练的例子。对于第几个使用的是上标。标注在x的右上角,在markdown中很难表示所以就正常的写了。(x(i),y(i))->对应一组数据。
例如,在视频中的房价的案例:
房子大小 | 房价 |
---|---|
2104 | 460 |
1416 | 232 |
1534 | 315 |
对于x来说,就是 x(1) = 2104, x(2) = 1416, x(3)=1534;对于y来说,y(1)=460, y(2)=232,y(3)=315。所以对于(x,y)来说就组成了一个3*3的矩阵用作计算。
监督算法的流程
针对这个流程就是搞清楚h是什么,来设计一个学习算法。所以使用了另外一个字符:θ.所以这个学习算法应该如下表述:
hθ(x) = θ0 + θ1x
经常为了表述方便写成 h(x)=θ0 + θ1x
对于房价的走势关系图,我们假设是一个线性的方程,也许这个并不是正确的,没关系,这作为一个基础会进行一点点的优化。这种线性函数的推测,称之为:线性回归
2-2
为了找到正确的θ的数值,所以需要一个成本函数来进行计算。原理上就是找到这样的θ使得,hθ(x)-y 的值最小。那么,这样的代价函数,使用的是平方差代价函数:
J(θ0, θ1) = (1/2m)Σ(hθ(x(i)) - y(i))^2
minize(J(θ0, θ1)) 就是代价函数的最小值,满足这样的 θ0和θ1就是要求的。
hθ(x): 假设函数
J: 代价函数
2-3
代价函数式如何进行工作的呢?例如,简化上面的h(x) = θ1x,也就是θ0 = 0这种简单情况。这时候的数据集类似如下:
x | y |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
在这里我们需要建立两个坐标系,分别是x,y坐标系 和 J(θ), θ 坐标系。如下图
通过对θ的不断取值,来计算J,当取值到一定数量之后,找出其中的最小值,也就是J的最小值,就是我们要拟合计算出来的θ.
2-4
在前面的一节中通过二维的坐标就可以描述J和θ1的关系,可是,如果还有θ0,那么就是三个变量,那该如何处理呢?对于我们来说最直观的想法自然是计算一个三维曲面。大概会是下面的样子。
但事实上我们并不使用这种方式来表现。使用另外一种称作等高线的方法来表现。也就是说相同的J会在同一条线上,而最中心的线就是最小值。
2-5
关于J(θ0, θ1)的选取,我们的目标是选取到最小的J,那么如何来找到最小的J呢?对于J的函数来说,找到最小极值点,就是全部或者局部的最小值。所以为了找到极值点,从数学的角度来说,如果只有一个参数,那么直接求导入,令其等于0,即可。目前是二维的,所以我们需要选取一个初始的值(θ0, θ1),然后逐步的逼近最小值。对于,这个原理我们可以明白,以一定的步长沿着切线的方向,变化θ0或者θ1,就会到达这个最小值。如下图:
从这张图上,我们看到在最低点的J。如果斜率大于0,那么θ需要逐渐变小;如果斜率小于0,那么需要θ逐渐变大。所以,能够得出如下的θ的逼近函数:
所以对于θ来说的逼近,是分别对θ0和θ1求偏导数的计算。
注意,这里的θ0和θ1,必须同时计算,“同时”这个词非常关键,因为不同时,偏导数就是有问题的。
2-6
在理解了梯度下降的算法的工作原理和公式之后,我们可以代入具体的先前的hθ(x)来计算。
这是最终的求导之后的计算结果。通过这个计算结果就可以对θ0和θ1进行逼近计算。
当进入了局部最低点,d(J(θ))/d(θ)=0,事实上梯度下降最到局部最低,就会产生这个结果,这时候θ将不会改变,也就是达到了最终的收敛。
对于线性回归来说,得到的局部最优解就是全局最优解,因为线性回归的代价函数是一个弓形,也就是是一个凸函数,所以只有一个极值点,也就是全局最优解。
目前每次进行梯度下降的时候使用的是全部数据,所以叫做“批量梯度下降","Batch 梯度下降". 到最后,你会看到 “随机梯度下降”和“小批量梯度下降”,来对这种大量数据的优化。
2-7
在前面我们看到的是只有两个维度,那么有多个维度的时候,该如何处理呢?需要应用到线性代数的知识。这是第三章主要阐述的内容,线性代数基础。