Athrun & Aaron

小园香径独徘徊

线性回归的数学推导

最近花时间认真学习了一下机器学习中的回归问题,虽然回归问题(线性回归+对率回归)在周志华的书里就那么几页,但其实书里对很多公式的推导省略了大量的细节,这次秉着较真的态度看了一下,发现名堂其实不少。写篇文章总结一下。

1. 机器学什么

了解过机器学习都应该知道,机器学习的本质就是给出一个包含n条记录的记录集合,其中某一条记录表示第i条记录的输入,代表第i条记录的输出标记。而单个一般为向量,表示每条记录的属性集合, 表示对于每一条记录的x,包含d个属性。

机器学习的任务都是通过数据集, 学习得一个 ,使得

2. 线性模型

这个长什么样,一般被称作“模型”,线性模型基本是最简单的一种:将属性加权组合。给定一个包含d个属性的记录,线性模型尝试学得:

其中, 为各个属性的权重,b为偏移(可以类比直线方程,)。

这里所说的学习,就是要通过数据集 来确定 。把w和x写为向量形式,则线性模型可以表示为:

为什么要转置?机器学习中所有的向量默认都是列向量,所以需要转置成行向量才可以和相乘。 这里如果懵逼的话,建议复习一下矩阵乘法的规则。

3. 线性回归

一句话解释,线性回归就是线性模型的学习过程。在给定输入数据集的基础上, 找到能够满足要求的 , 这个过程,就是线性回归。

那要怎么求解线性回归呢?不同的老师会用不同的方法,比如周志华会先从一元变量来举例(即假设所有记录都只有一个属性),进而扩展到多元的场景。这里介绍林轩田的求解思路,更nice一些。

3.1 等价变换

这里我们把 记做 ,再设 。这样,上面的线性模型可以等价改写为:

等价为向量模式(因为新引入了,故用大写表示):

3.2 误差衡量

在考虑如何找到最好的之前,我们先考虑我们如何衡量一个的好坏。在机器学习中,最常见的误差衡量标准就是均方差(Mean Square Erro,MSE)。给定一个时,在样本集的n个样本的MSE为:

这里的是向量,代表一条记录的输入,代表对应的样本标签。

为了方便后面的推导,交换一下X和w的位置,所以变成:

如果不明白为毛可以交换,你可以展开一下,就会发现是等价的;

这里我们看到式子里有个求和的符号,看着比较讨厌(不方便后续推导)。能不能干掉呢?观察一下求和内部的式子,是一堆平方的和。数学中有不少的概念最终落地下来是平方和的形式,一个直接的例子就是向量的模。比如一个N维向量 的模 , 同理,上述的E(W)可以写成:

可等价变换为:

将X 和 y表示为向量形式,于是有:

3.3 误差最小化

当我们得出E(W)的表达式之后,整个线性回归的过程就变成了找到一个W,使E(W)最小化。我们都知道求极值最直接的方法就是对其函数求导,导数为0的点就是极值点。再通过分析左右导数的正负情况即可得到能够使E(W)最小的W。

首先对E(W) 求导可得:

这里先用了一个简单的公式把上式展开

在上式中,X和y都是标量(只有W是变量),为了理解方便,我们假设 , 于是上式可以化简为:

现在的问题来了,W是一个d维向量,代表每个输入记录的d个特征值。我们该如何对向量求导呢?先假设w,a,b,c是普通的标量,则有:

标量情况的确是很简单,那向量情况呢?一般来说对矩阵求导都比较复杂,具体有兴趣的同学可以参考MIT的Matrix cookbook。原理其实比较简单,无非就是分别针对向量的各个分量求偏导,最终的结果组成的向量就是求导的结果。但推导起来肯定都比较复杂。cookbook针对常见情况直接给出了公式,非常方便。

要求解上式的公式,主要会用到里面的两个公式:

公式(69):

公式(81):

将(69)和(81)代入上面的向量版微分公式,可以得到:

因为, 所以

可以看到形式上,求导结果和标量版的一模一样。这或许就是线性代数美的地方。

令E(W)=0,可以得到此时W的取值为:

上式也叫W的闭式解(Closed-form solution), 代表是从公式精准的推导出的结果,而不是靠一些数值优化方法得出。机器学习中,由于n的数量一般都>d+1(d为属性的个数),所以 一般都是可逆的。

参考资料

  1. 林轩田的公开课;
  2. Matrix cookbook;