机器学习笔记(吴恩达)(一)--单变量线性回归
个人blog https://verbf.github.io/
场景描述
我们有关于房屋面积和房屋价格的数据集,现在想拟合一条直线通过房屋的面积来预测房屋价格。这条直线应该尽可能的符合已有的数据。
概念介绍
假设函数
这里我们简单的假设该直线的方程为
其中x表示房屋的面积,h(x) 表示预测出的房价。有了这个假设函数我们就可以预测房价了。
那么参数应该怎么确定呢?这里我们需要用到代价函数。
代价函数
这里先给出代价函数的表达式
其中
表示第i个数据样本中房屋的面积
表示使用假设函数预测房屋面积的得到的房屋价格
表示真实的房屋价格
这里我们选择使用均方误差作为衡量预测结果与真实值的偏差。最前面的 只是为了计算方便无需在意。
我们所要做的就是改变的值,使得代价函数J的值最小,当找到一个使得代价函数的值最小时,我们就确定了参数。即我们的优化目标:
为什么说我们要找的会使代价函数取得最小值呢?接下来举例说明。
代价函数详解
代价函数与参数的关系
假设我们的数据集中有三个样本点 (1,1) , (2,2) , (3,3)
我们可以使用无数条直线来拟合这些样本,但很显然只有当 时,即 这条直线有最好预测效果。
然后我们将不同的值带入代价函数,计算其结果:
从图像上可知,当代价函数的图像在最低点时,对应的值,就是最佳的结果。
通过这个例子不难发现,只要我们求出代价函数的最小值,就可找到我们想要的参数的值。
那么代价函数的最小值应该怎么求呢?在数学上有许多方法可以解决这个问题,这里我们使用梯度下降法来求代价函数的最小值。
梯度下降法
下图是使用梯度下降法求解的步骤,开始时我们随机赋给一个初值,重复执行下面的步骤更新的值。执行一定次数,当的值基本不再变化时,我们就求出了的最后结果。
其中关键的步骤是对代价函数求的偏导,这可以理解为在求某一点的斜率。
当的值大于最终结果时,的取值在最终结果的右边,对应点的斜率大于0,即求出的偏导值大于0, 减去一个大于0的数变小。
当的值小于最终结果时,的取值在最终结果的左边,对应点的斜率小于0,即求出的偏导值小于0, 减去一个小于0的数后变大。
当的值越接近最终结果时,导数越接近0,变化的速度也越慢。
其中 是学习率,它的大小会改变的改变速度,但取值不能太大,否则会造成无法收敛。