这几天看书的时候突然注意到了这个经典的优化方法,于是重新推导了一遍,为以后应用做参考。

背景

最小二乘法应该是我接触的最早的优化方法,也是求解线性回归的一种方法。线性回归的主要作用是用拟合的方式,求解两组变量之间的线性关系(当然也可以不是线性的,那就是另外的回归方法了)。也就是把一个系统的输出写成输入的线性组合的形式。而这组线性关系的参数求解方法,就是最小二乘法。

我们从最简单的线性回归开始,即输入和输出都是1维的。此时,最小二乘法也是最简单的。

假设有输入信号Java 最小二乘法回归 最小二乘法求回归参数_拟合,同时输出信号为Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_02,我们假设输入信号Java 最小二乘法回归 最小二乘法求回归参数_线性回归_03和输出信号Java 最小二乘法回归 最小二乘法求回归参数_拟合_04之间的关系可以写成如下形式:

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_05

我们需要求解最优的Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_06Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_07,这里最优的含义就是,预测的最准确,也就是预测值和真实值的误差最小,即:

Java 最小二乘法回归 最小二乘法求回归参数_线性回归_08

我们假设误差函数为:

Java 最小二乘法回归 最小二乘法求回归参数_拟合_09

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_10Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_06Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_07分别求偏导:

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_13

Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_14

根据极值定理,有Java 最小二乘法回归 最小二乘法求回归参数_拟合_15,且Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_16,所以有:

Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_17

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_18

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_19

Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_20

其中,Java 最小二乘法回归 最小二乘法求回归参数_拟合_21表示Java 最小二乘法回归 最小二乘法求回归参数_拟合_04的均值,Java 最小二乘法回归 最小二乘法求回归参数_拟合_23表示Java 最小二乘法回归 最小二乘法求回归参数_线性回归_03的均值。将Eq(9)代入Eq(4),有:

Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_25

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_26

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_27

Java 最小二乘法回归 最小二乘法求回归参数_拟合_28

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_29

所以Eq(14)和Eq(9)就是最简单的最小二乘法的计算方法。

然后我们进一步考虑,如果输入和输出是多维数据,要如何计算。

假设输入信号为Java 最小二乘法回归 最小二乘法求回归参数_线性回归_30, 输出信号为Java 最小二乘法回归 最小二乘法求回归参数_线性回归_31,那么有:

Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_32

其中Java 最小二乘法回归 最小二乘法求回归参数_线性回归_33是回归矩阵的系数,Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_34表示常数项,这里可以直接写到Java 最小二乘法回归 最小二乘法求回归参数_线性回归_35矩阵中。Java 最小二乘法回归 最小二乘法求回归参数_拟合_36Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_37
Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_38

所以有:

Java 最小二乘法回归 最小二乘法求回归参数_拟合_39

假设误差函数为Java 最小二乘法回归 最小二乘法求回归参数_拟合_40,则有:

Java 最小二乘法回归 最小二乘法求回归参数_线性回归_41

计算Java 最小二乘法回归 最小二乘法求回归参数_拟合_40Java 最小二乘法回归 最小二乘法求回归参数_线性回归_35的偏导,则该偏导等于0:

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_44

所以有:

Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_45

至此矩阵形式的最小二乘法(多元线性回归的参数解法)推导完成。注意这里的Java 最小二乘法回归 最小二乘法求回归参数_Java 最小二乘法回归_46Java 最小二乘法回归 最小二乘法求回归参数_最小二乘法_47中的数据排列方式为:每一行是一个维度的数据,每一列表示一个时间点。如果不是这么记录的话,那么公式需要加上转置。