本章由线性回归开始。
TreaingSet(训练集)一些已经确定的数据。
?
Learing Algorithm(学习算法)该算法会输出一个函数(假设函数),该函数引导从x到y。
?
size of house ? h(函数) ? pricce
在这里单变量指的是x只有一个。
本章及以后经常用到的变量:
m:训练样本的数量。
x:输入变量。
y:输出 .
假设函数:引导从x到y的函数,我们希望它越得出的y值与真实值越接近越好,这样我们给出估计的x值它就能给出更加贴近真实的y值。
代价函数:为寻找到合适的假设函数参数,从而得到更适合的假设函数。而合理参数是根据代价函数最小化得到的。
e.g
注:本例中用a代替threat
在本章的例子中,代价函数的作用就是寻找两个变量a1和a2,使得预测值与样本中的值的误差尽量减小。其具体做法为:对 预测值减去样本中已给的真实值的平方 进行求和。最后再除以2m(m为样本的数量,前面已提到)进行简化形成代价函数。然后对应不同的a1和a2代价函数的值也不相同,找到最小的得出对应的a1和a2,然后将其反代给假设函数,达到其目的。
在本图中h(x)为假设函数,而j(a1)为代价函数,当a1取值为1时j(a1)有最小值,所以选a1=1,带回至h(x)。
平方误差:解决回归问题最常用的手段。
但在一些问题中我们可以看到,参数值不止一个这个时候如何确定代价函数最小值那?画图是一个不错的选择,但一旦参数过多我们无法正确的将对应的图像画出来。这个时候就引入了一个新的算法---梯度下降算法。
梯度下降算法:其算法的思想在下面的例子中给出解释。
eg:以J(a0,a1)为例。开始时(a0=0,a1=0)不断的给它们其他的值,使得J(a0,a1)变小,直到我们找到J(a0,a1)的最小值或局部最小值。更形象的说法如下。
假如一个人在山顶,想要以最快的速度下山。那么他的每一步都是下降最快的,然后下一步再进行上一步的迭代即再次查看哪一步下降最快。如此往复直到收敛至局部最低点。
但我们稍微思考就会发现一个问题,如果初始点不同,那么最低点是否会相同那?答案是不同。不同的初始点那么最后收敛的点也不相同。下面给出梯度下降算法的具体数学公式。
其中α代表学习率,我们不难看出学习率越大那么下降的速度就越快。而其中的倒数项(在本公式中是偏导),则确定其下降的方向(以只有一个参数为例,当斜率大于0时,我们不难得出该点位于上升段,因此要求其最小点,该点应向后移动,而学习率永远大于0,因此决定aj是增大还是减小就需要 后面的倒数来确定了。此时倒数大于0,因此aj:=aj-α d(J(a0,a1))/d(aj),所以aj向后移动,即变小。同理当该点处于下降段aj需要增大时,其倒数为负数,所以可得aj:=aj-α d(J(a0,a1))/d(aj),即aj增大)。
注:当该点逐渐移动到最低点或及低点时,我们不难得出图像的斜率越来越趋于0,因此反映出来就是,变化率越来越小,如果是一个人下山,那么他的步伐约接近山底那么步伐越小。
但梯度下降算法也有自己的不足,如果学习率过大那么其反应出的图像变化大致如下
可以认为这个人每一步都太大,当他到达山谷时,他下一步直接踏到另一个山坡上了。而当学习率过小时虽然不会出现这样的情况,但其变化率却会很小。
有一点思考的是,假如刚开始该点就已经在最低点那么梯度算法会怎样那?
答案是不变,因为最低点的斜率为0.那么原式就会变成aj:=aj 不会变化。
现在我们还要回到问题的本质
我们因为要对样本给出的x和y建立函数关系以及确定我们以后能估计的y值,我们提出假设函数。而为了使得假设函数的预测值接近训练集中的样本,我们提出代价函数以此来确定合适的参数将其反代给假设函数。而代价函数求参数的方法就是最小化代价函数,我们一般采取画图然后取代价函数最小值的方法来确定代价函数最小值,但如果参数过多,图像我们无法得出,我们为了得出包含多个参数的代价函数的最小值提出梯度下降算法。准备工作已经做完。
我们先将其列出如下图所示。左边梯度下降算法的数学表达式,右边为假设函数和代价函数。
注:今天又一次看笔记想着为什么假设函数要求最小的那?最后想到其取值为预测值减去真实值平方的累加。这样的话,其值越小,那么预测值与真实值之间的差值越小。预测的越准确。
现在,我们要做的就是将其带入。如下图。
即
这便是最终结果。即线性回归算法。