机器学习笔记(吴恩达)(一)--单变量线性回归


个人blog https://verbf.github.io/

场景描述

我们有关于房屋面积和房屋价格的数据集,现在想拟合一条直线通过房屋的面积来预测房屋价格。这条直线应该尽可能的符合已有的数据。

概念介绍

假设函数

这里我们简单的假设该直线的方程为

h(x)=Θxh(x) = \Theta x

其中x表示房屋的面积,h(x) 表示预测出的房价。有了这个假设函数我们就可以预测房价了。
那么参数Θ\Theta应该怎么确定呢?这里我们需要用到代价函数。

代价函数

这里先给出代价函数的表达式
J(Θ)=12mi=1m(hΘ(x(i))y(i))2J(\Theta)=\frac{1}{2m}\sum_{i=1}^{m}{({h_\Theta}({x}^{(i)})-{y}^{(i)})}^{2}

其中

x(i){x}^{(i)}表示第i个数据样本中房屋的面积

hΘ(x(i)){h_\Theta}({x}^{(i)})表示使用假设函数预测房屋面积x(i){x}^{(i)}的得到的房屋价格

y(i){y}^{(i)}表示真实的房屋价格

这里我们选择使用均方误差作为衡量预测结果与真实值的偏差。最前面的 12\frac{1}{2} 只是为了计算方便无需在意。

我们所要做的就是改变Θ\Theta的值,使得代价函数J(Θ)(\Theta)的值最小,当找到一个Θ\Theta使得代价函数的值最小时,我们就确定了参数Θ\Theta。即我们的优化目标:
minimizeJ(Θ)minimizeJ(\Theta)

为什么说我们要找的Θ\Theta会使代价函数取得最小值呢?接下来举例说明。

代价函数详解

代价函数与参数Θ\Theta的关系

假设我们的数据集中有三个样本点 (1,1) , (2,2) , (3,3)
我们可以使用无数条直线来拟合这些样本,但很显然只有当 Θ=1\Theta = 1时,即 y=xy=x 这条直线有最好预测效果。
机器学习笔记(吴恩达)(一)--单变量线性回归

然后我们将不同的Θ\Theta值带入代价函数,计算其结果:
机器学习笔记(吴恩达)(一)--单变量线性回归

从图像上可知,当代价函数的图像在最低点时,对应Θ\Theta的值,就是最佳的结果。

通过这个例子不难发现,只要我们求出代价函数的最小值,就可找到我们想要的参数Θ\Theta的值。

那么代价函数的最小值应该怎么求呢?在数学上有许多方法可以解决这个问题,这里我们使用梯度下降法来求代价函数的最小值。

梯度下降法

下图是使用梯度下降法求解Θ\Theta的步骤,开始时我们随机赋给Θ\Theta一个初值,重复执行下面的步骤更新Θ\Theta的值。执行一定次数,当Θ\Theta的值基本不再变化时,我们就求出了Θ\Theta的最后结果。

Θ=ΘαJ(Θ)Θ\Theta = \Theta - \alpha\frac{\partial{J(\Theta)}}{\partial\Theta}

其中关键的步骤是对代价函数求Θ\Theta的偏导,这可以理解为在求某一点的斜率。

Θ\Theta的值大于最终结果时,Θ\Theta的取值在最终结果的右边,对应点的斜率大于0,即求出的偏导值大于0, Θ\Theta减去一个大于0的数变小。

Θ\Theta的值小于最终结果时,Θ\Theta的取值在最终结果的左边,对应点的斜率小于0,即求出的偏导值小于0, Θ\Theta减去一个小于0的数后变大。

Θ\Theta的值越接近最终结果时,导数越接近0,Θ\Theta变化的速度也越慢。
机器学习笔记(吴恩达)(一)--单变量线性回归

其中 α\alpha 是学习率,它的大小会改变Θ\Theta的改变速度,但取值不能太大,否则会造成Θ\Theta无法收敛。