一,什么是线性回归。
回归问题和分类问题是机器学习的两大类问题。回归问题是根据训练集,学习到一个算法来预测一个连续的值,比如说预测房价。而分类问题则是学习一个算法来预测一个离散的值,比如说预测是否是恶性肿瘤,预测的结果只有是或否。线性回归就属于一种回归问题。
在线性回归中,事先给出的每一条训练条目都会有n个特征值,还有一个实际结果。我们期望的是通过训练,学习到这样的一条表达式 :
其中每一个
θ 代表对应的特征值对预测结果影响的比重。
二,一些符号。
符号 | 意义 |
m | 用来训练的训练集的个数 |
n | 特征的数目 |
x(i) | 第i个训练样本 |
x(i)j | 第i个训练样本的第j个特征 |
θ | 一个n+1维的向量,表示多有特征值的参数 |
h(θ) 也可以表示为矩阵相乘的形式:
三,线性回归原理。
首先,我们需要定义一个代价函数,用来衡量我们训练得到的表达式预测的结果与实际训练集中结果 y 之间的误差。我们称其为 J(θ) 函数。
上式等号右边每一个相加项表示用我们现有的预测表达式
h(θ) 得到的预测结果和实际结果
y(i) 误差。
我们的目标就是求得一组
θ 使得
J(θ) 函数的值尽可能小,这样预测的结果就会和实际结果相近。
求最优
θ 的方法有多个,这里先介绍一种通用的方法,梯度下降法。梯度下降法基本思想就是通过一次一次的迭代,逐渐向结果靠近。比如说我们要求的
θ 有两个,迭代的过程可以表示为下图:
梯度下降法有一个问题就是选择不同的迭代起点,结果可能不相同,如上图,选择不同的起点,结果就会不相同。
但好在我们定义的代价函数
J(θ) 是一个凸函数,局部最优点就是全局最优点,所以无论选取什么起点,得到的结果都是最优的结果。
四,梯度下降法。
这里先介绍一种成为批梯度下降的梯度下降方法。就是每一次迭代更新 θ 时,需要用上所有的训练样本。
我们在迭代更新 θ 时使用的是以下的公式:
计算一下得到以下表达式:
每一次对
θ 的迭代就需要依次更新
θ0 到
θn 。然后使用新的
θ 值计算代价函数
J(θ) ,看代价函数的值是否在我们可以接受的范围内。
α 可以理解为每次迭代更新中
θ 向目标值走的步长。它的取值不能太大,太大会导致无法使代价函数
J(θ) 取到最小,而太小又会使
θ 向目标值的移动速度太慢,导致需要迭代更多次。