线性回归是一种最简单的机器学习方法。在本节,我们尝试以线性回归为例,帮助读者理解机器学习的原理 。线性回归的目标是找到一些点的集合背后的规律。例如,一个点集可以用一条直线来拟合,这条拟合出来的直线的参数特征,就是线性回归找到的点集背后的规律。
表2.1 常用符号说明
下面以表2.2为例,介绍如何用线性回归解决房屋定价问题。假设开发商有一个房屋销售中心,房屋售价 y 与房屋面积 x 1 相关。已有一组数据,50m 2 的房屋售价50万元,47m 2 的房屋售价42万元,60m 2 的房屋售价80万元,55m 2 的房屋售价52万元等。那么,65m 2 的房屋售价应为多少?可以将已有数据以房屋面积 x 1 为横轴、房屋售价 y 为纵轴画到坐标系中,如图2.3所示。再分析 x 1 和 y 的关系,找到一条拟合直线,使所有数据点到该直线的距离之和最小。这条拟合直线表示 x 1 和 y 之间的规律,也就是线性回归模型。由于在这个例子里房屋售价 y 只考虑房屋面积 x 1 一个变量(特征),因此它是一个一元线性回归模型。
表2.2 线性回归示例。 y 表示房屋售价(万元), x 1 表示房屋面积(m 2 )
一元线性回归模型 Hw ( x 1 )可以表示为:
其中, Hw ( x 1 )是根据已有数据拟合出来的函数,该函数是一条直线且仅有一个变量。回归系数 w 0 和 w 1 可以通过已知点计算出来, w 1 代表斜率, w 0 代表纵截距,即拟合出的直线与 y 轴的交点。 w 0 和 w 1 计算出来后,就可以预测一个新房屋的售价。
事实上,房屋售价不仅与面积相关,还与楼层 x 2 、朝向 x 3 、学区 x 4 等因素相关。假设已有一组数据,如表2.3所示,面积 x 1 为50m 2 、楼层 x 2 为2楼的房屋售价为50万元,面积 x 1 为47m 2 、楼层 x 2 为1楼的房屋售价为42万元,面积 x 1 为60m 2 、楼层 x 2 为4楼的房屋售价为80万元等。那么,一个在10楼、面积为65m 2 的房屋应该如何定价?
图2.3 线性回归
表2.3 线性回归示例。 y 表示房屋售价(万元), x 1 表示房屋面积(m 2 ), x 2 表示房屋所在楼层
上述问题有2个变量(特征),可以用二元线性回归模型表示为:
如果待解决的问题有 n 个变量(特征)(记为 n 维的向量 x ),可以用多元线性回归模型表示为:
其中,参数向量 表示 的转置,输入向量 x =[ x 0 ; x 1 ;…; x n ]。
如何评价线性回归模型预测结果的正确性呢?模型预测结果 与真实值 y 之间通常存在误差 ε :
当样本量足够大时,误差 ε 将会服从均值为0、方差为 σ 2 的高斯分布:
通过求解最大似然函数:
得到预测值与真实值之间误差尽量小的目标函数(损失函数):
损失函数计算等同于 m 次预测的结果和真实的结果之间的差的平方和。线性回归的目的是寻找最佳的 w 0 , w 1 ,…, w n ,使得损失函数 的值最小。寻找最优参数通常采用梯度下降法,该方法计算损失函数在当前点的梯度,然后沿负梯度方向(即损失函数值下降最快的方向)调整参数,通过多次迭代就可以找到使 的值最小的参数。具体过程为,首先给定初始参数向量 ,如随机向量,计算损失函数对 的偏导(即梯度),然后沿负梯度方向按照一定的步长(学习率) η 调整参数的值,如式(2.8),并进行迭代,使更新后的 不断变小,直至找到使 最小的 值,从而得到合适的回归模型的参数。
人工神经网络的训练和使用过程与线性回归基本上是一致的。例如,要训练一个识别动物的神经网络,首先要找到大量不同类型的动物样本并打上标签,然后调整神经网络模型的参数,以使神经网络的输出和标签之间的误差(损失函数)尽可能小;在使用神经网络做预测时,给神经网络一张未标记的动物图像,神经网络根据训练拟合好的模型,可以给出它对图中动物类型的判断。