1.训练集
有训练样例(training example)组成的集合就是训练集。
如上图所示,右边两列数据就是训练集。一个(x,y)就是一个训练样例。我们用一些特定的字母表示术语:
m:代表训练集中实例的数量;
x:代表特征/输入变量;
y:代表目标变量/输出变量;
(x,y):代表训练集中的实例;
(x(i),y(i)):代表第i个训练实例;
h:代表学习算法的解决方案或者函数,也称为假设;
2.假设函数(Hypothesis Function)
上图是监督学习算法的工作方式,实际上我们是要将训练集喂给学习算法,通过学习得到假设函数,标记是h。如上图所示,通过训练集和学习算法,我们的假设函数可以用房屋面积去计算得到房屋的大致估价。
那么该怎么表示假设函数h?
在房屋的这个例子中,只有一个变量就是房屋的面积,我们的假设函数可以表达为:h(x)=θ0+θ1 X 。这个就叫做单变量的线性回归。
3.代价函数
在这个假设函数中,有两个参数θ0和θ1。如果两个参数θ0和θ1的取值不相同,我们的假设函数会有不同的效果。
这两个参数在选择的过程中,要使得每个样例的估计值与真实值之间的差的平方的均值最小。以上面的房价为例,就是选择θ0和θ1,对训练样例(x,y),h(x)最接近y。下面是代价函数的公式,目的是让代价值最小。
我们在分析的过程中,可以令θ0为0,简化代价函数。此时假设函数为h(x)=θ1 X。
令θ1=1,h(x)=x,假设函数如下图左,三个红叉代表训练样例,计算得到J(θ)=0,在右图中表示出来就是(1,0)。
重复上面的步骤,令θ1=0.5,计算h(θ),J(θ)。
对不同的θ1,可以得到不同的假设函数h(θ),于是便有不同的J(θ)的值,我们把得到的结果连起来。当θ1等于1的时候,J(θ)的值最小,目标达成。
以上的结果是在令θ0=0的情况下得到的,但是θ0不等于0呢?比如说,取θ0等于0.5,这时就有两个变量,自然地,J(θ0,θ1)是一个曲面。
我们可以用等高线代替对3维图像的分析,往里走代表J(θ0,θ1)的值小。编写程序,不断利用程序去调整,找到最佳的h(θ),最佳的θ0和θ1,使得J(θ0,θ1)的值最小。
3.梯度下降算法(Gradient Descent)
梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数的额最小值。
梯度下降的思想:开始时随机选择某一个具体的θ0和θ1,计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合。持续这么做,直到到一个局部最小值。选择不同的初始参数组合,可能会有不同的局部最小值,所以在没有尝试完所有的参数组合,不能确定得到的局部最小值是否是全局最小值。
如下图所示,从某一点开始,每次沿着一定的梯度下降直到达到一个极小值为止。梯度下降和下山一样,坡度不一样,下降的速度就不一样,而且有可能走向不同的最低点。下降梯度算法可以帮助我们改变θ0,θ1的值。(α称为学习率,后面的偏导是梯度)
这里要特别注意的是,θ0,θ1的值是同时改变的,如果想右边所示改变就出现错误。
令θ0=0,假设θ1在最低点的右侧,此时梯度是正数,根据梯度下降算法更新θ1,它的值会不断减小,靠近最低点。
同理假设θ1在最低点的左侧,此时梯度是一个负数,根据算法更新θ1,值会增大,靠近最低点。
如果一开始θ1在最合适的位置,根据算法更新时,值不会有改动。
学习率α也会影响梯度的下降。α太小,θ的变化会很小,梯度下降会很慢。相反,α太大,θ的变化会很大,可能越过最低点,可能永远没法达到最低点。
但是如果越来越接近最低点,那么斜率会逐渐减小,每次下降程度会越来越小,所以不需要改变α的值来减小下降程度。
我们把梯度下降算法应用到线性回归模型中去,其中关键的一个步骤就是计算其中的偏导数项。
可以得到如下结果(梯度下降算法):
简要看下梯度下降算法的迭代过程:
最终得到最优解,我们可以用最优解对应的假设函数对房价进行预测。比如说,1250平方英尺的房子大约能卖到270k美元,如下图: