备注:本文是整理了很多博客和Ng课程笔记以及自己的理解写的关于线性回归以及梯度下降算法的框架,力求简洁明了。
本文框架:
(1)线性回归的定义
(2)单变量线性回归
(3)代价函数cost function:评价线性回归是否拟合训练集的方法
(4)梯度下降:解决线性回归的方法之一
(5)特征缩放feature scaling:加快梯度下降执行速度的方法
(6)多变量线性回归
一.线性回归的定义
线性回归算法属于监督学习的一种,主要用于模型为连续函数的数值预测。
线性回归算法整体思路:
线性回归属于监督学习,因此方法和监督学习应该是一样的,
- 先给定一个训练集,
- 根据这个训练集学习出一个线性函数
- 然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据)
- 挑选出最好的函数(cost function最小)即可
(a) 根据给定数据架设预测函数h(x)
(b) 计算代价函数J
(c) 计算各参数偏导
(d) 更新参数
(e) 重复2~4直到代价函数跟新的步长小于设定值或者是重复次数达到预设值。
注意:
(1)因为是线性回归,所以学习到的函数为线性函数,即直线函数;
(2)因为是单变量,因此只有一个x;
二. 单变量线性回归
我们能够给出单变量线性回归的模型:
我们常称x为feature(特征),h(x)为hypothesis(假设函数);
从上面“方法”中,我们肯定有一个疑问,怎么样能够看出线性函数拟合的好不好呢?
我们需要使用到Cost Function(代价函数)
代价函数越小,说明线性回归地越好(和训练集拟合地越好),
当然最小就是0,即完全拟合;
举个实际的例子:
我们想要根据房子的大小,预测房子的价格,给定如下数据集:
![]()
根据以上的数据集画在图上,如下图所示:
<