本人在学习斯坦福大学的机器学习课程,特记录课程概要内容。课程地址: Andrew Ng机器学习课程
模型表示
我们建立一些符号以方便未来使用,我们用x(i)来表示“输入”变量(本例是房屋面积),也称为输入特征。y(i)来表示“输出”或目标变量,我们需要预测的值(房价)。一对(x(i), y(i))被称为训练样本,我们将用于学习的数据集(i=1,...,m的训练样本的列表)称为训练集。注意,上面的"(i)"符号只是训练集中的一个索引,与求幂无关。 我们还将使用X来表示输入值,Y表示输出值。 在这个例子中,X = Y = ℝ。
为了更准确地描述监督学习问题,我们的目标是,给出一个训练集,以学习一个函数h: X→Y,使得h(x)是映射y值的“好”的预测函数。由于历史原因,这个函数h被称为假设函数。从图形上看,这个过程是这样的:
当我们试图预测的目标变量是连续的,例如我们的房价例子,我们将该学习问题称为回归问题。当y可以只接受少量的离散值(例如,如果给定房子面积,我们想预测一所住宅是一所房子还是公寓),我们称之为离散问题。
代价函数
我们可以通过使用代价函数来衡量假设函数的准确性。这取决于输入 x 后的假设函数值和实际输出 y 值的平均差(实际上是平方差的平均值)。
将其分成两部分则表示为
此函数也被称为“方差函数”或“平均方差函数”。为了计算梯度下降的方便,我们取平均值的一半(1/2),因为平方函数的导数项将抵消1/2项。 下图总结了代价函数的作用:
代价函数 - 解析1
我们可以试着想象一下,我们的训练集分散在x-y坐标系上,并且通过这些分散的数据点画一条直线(由hθ(x)定义)。
我们的目标是获得一条最优的直线,使得各个点到直线的垂直距离的平均值是最小的。理想情况下,这条线应该通过我们训练集的所有点, 即 在这种情况下,J(θ0, θ1) 的值将为0。以下示例显示了代价函数为0的理想情况(直线经过每个点):
当θ1 = 1,我们得到一个斜率为1经过模型中所有数据点的直线。相反,当θ1 = 0.5(如下图),我们可以看到从直线到数据点的垂直距离增加了。
对应我们的代价函数值则为0.58,同样绘制其他几个点得出了下图:
我们的目标应该是尽量减少代价函数。在这里,θ1 = 1是我们的全局最小值。
代价函数 - 解析2
轮廓图是包含许多轮廓线的图形。两个可变参数的函数的轮廓线在同一条线上表示所有点都是同一个相同值(这条线上的θ0和θ1输出的J(θ0, θ1)结果相等)。下图就是一个轮廓图的例子。
选取任何一个颜色沿着“圆”,我们将得到相同的代价函数值。例如,上面绿线上的三个绿点的J(θ0, θ1)值是相同的,通过计算我们也可以发现他们是在同一条线上。圆圈叉表示当θ0 = 800 和 θ1 = -0.15时左侧图形的代价函数的值。取另一个h(x)线并绘制它的轮廓图,可以得到下面图形:
当 θ0 = 360 且 θ1 = 0时, J(θ0, θ1)的值在轮廓图中的线离中心更近,表示代价函数的误差更小。这时给出的假设函数的斜线对数据的拟合度更高。
上图尽可能地最小化了代价函数,得到的θ0和θ1分别为250和0.12左右。将这些值绘制到右边的轮廓图上,我们的点落在最圆的的圆圈中心。