线性回归是统计学中最基础的数学模型,几乎各个学科的研究中都能看到线性回归的影子,比如量化金融、计量经济学等;当前炙手可热的深度学习也一定程度构建在线性回归基础上。因此,每个人都有必要了解线性回归的原理。
我的网站公式显示效果更好:https://lulaoshi.info/machine-learning/linear-model/minimise-loss-function.html,欢迎访问。
线性回归对已有数据进行建模,可以对未来数据进行预测。有些人觉得线性回归太过简单,甚至不屑于称之为机器学习;另外一些人觉得很多编程库已经对线性回归做了封装,使用时调用一下函数就好,不必了解太多数学推导过程。实际上,线性回归是所有机器学习技术的一个最好起点,很多复杂的机器学习技术以及当前大火的深度神经网络都或多或少基于线性回归。
监督学习
吴恩达的机器学习系列课程的第一节以房价数据带领大家入门机器学习,该数据集提供了波特兰市47套房屋的面积、卧室数量和价格。
房屋面积(平方英尺)卧室数量价格(千美元)2104340016003330240033691416223230004540.........
我们先只关注房屋面积和价格这两维数据,将这两维数据的分布画出来,可以得到下面这张图:
基于已有数据,我们希望通过计算机的学习,找到数据中的规律,并用来预测其他房屋的价格。这是机器学习最朴素的应用场景。这个过程也被称为监督学习(Supervised Learning),即给定一些数据,使用计算机学习到一种模式,然后用它来预测新的数据。
给定数据集
我们再用更加规范的方式来描述一下监督学习问题,我们的目标是,给定一个训练集,机器学习能够学习出一个函数
在房价预测的例子中,想要预测的目标值房价是连续的,我们称这类问题为回归(Regression)问题。与之相对应,当目标值只能在一个有限的离散集合里选择,比如预测房价是否大于100万,结果只有“是”和“否”两种选项,我们称这类问题为分类(Classification)问题。
提示:ISO国际标准推荐使用小写字母加粗或者上标箭头来表示向量。向量一般默认为列向量(Column Vector)。
例如,
一元线性方程
前面我们展示了房价数据集中房屋面积与房价之间的数据。根据我们的社会经验和图中的数据分布,我们觉得能使用一个直线来描述“房价随着房屋面积增加而增加”的现象。针对这个数据集,可以使用一个最简单的机器学习模型——线性回归。
中学时,我们经常使用上面的方程来解一些数学问题,方程描述了变量
在对数据集进行建模时,我们只关注房屋面积和房价两个维度的数据。我们可以对参数
对于线性回归,一个简单实用的损失函数为预测值与真实值误差的平方。下面的公式来表示单个样本点上预测值与真实值的误差的平方。
下面的公式表示将数据集的所有误差求和取平均。
再在其基础上代入公式
上面两张图直观展示了不同直线(不同模型参数)下损失函数的大小差别。误差的平方是一个正方形,将正方形的面积求和再取平均,就是损失函数。所有的正方形的平均面积越小,损失越小。对于给定数据集,
公式中
以上就是最小二乘法的数学表示,“二乘”表示取平方,“最小”表示损失函数最小。至此我们发现,有了损失函数,机器学习的过程被化解成对损失函数求最优解过程,即求一个最优化问题。
求解这个函数一般有两个方法:
- 基于微积分和线性代数知识,求使得
导数为零的点,这个点为最优点。
- 基于梯度下降,迭代地搜索最优点。
后面将单独分别分析求解这两种方法。
线性回归的一般形式
我们现在把回归问题扩展到更为一般的场景。假设
这里的
第
为了简化公式,我们还设
等式最右边的
基于这个公式,得出损失函数,然后根据给定的训练集,尽量让损失函数最小。
在上面的公式里,
同样,针对这个损失函数可以:
- 直接求解导数为零的点
- 使用梯度下降法