这几天看书的时候突然注意到了这个经典的优化方法,于是重新推导了一遍,为以后应用做参考。
背景
最小二乘法应该是我接触的最早的优化方法,也是求解线性回归的一种方法。线性回归的主要作用是用拟合的方式,求解两组变量之间的线性关系(当然也可以不是线性的,那就是另外的回归方法了)。也就是把一个系统的输出写成输入的线性组合的形式。而这组线性关系的参数求解方法,就是最小二乘法。
我们从最简单的线性回归开始,即输入和输出都是1维的。此时,最小二乘法也是最简单的。
假设有输入信号 x = { x 0 , x 1 , . . . , x t } x = \{x_0, x_1, ..., x_t\} x={ x0,x1,...,xt},同时输出信号为 y = { y 0 , y 1 , . . . , y t } y = \{y_0, y_1, ..., y_t\} y={ y0,y1,...,yt},我们假设输入信号 x x x和输出信号 y y y之间的关系可以写成如下形式:
y p r e = a x + b (1) y_{pre} = ax+b \tag{1} ypre=ax+b(1)
我们需要求解最优的 a a a和 b b b,这里最优的含义就是,预测的最准确,也就是预测值和真实值的误差最小,即:
a r g m i n a , b ∑ i = 0 t ( y i − a x i − b ) 2 (2) arg\, min_{a, b}{\sum_{i=0}^{t}{(y_i-ax_i-b)^2}} \tag{2} argmina,bi=0∑t(yi−axi−b)2(2)
我们假设误差函数为:
e r r = ∑ i = 0 t ( y i − a x i − b ) 2 (3) err = \sum_{i=0}^{t}{(y_i-ax_i-b)^2} \tag{3} err=i=0∑t(yi−axi−b)2(3)
e r r err err对 a a a和 b b b分别求偏导:
∂ e r r ∂ a = ∑ i = 0 t 2 ( a x i + b − y i ) ∗ x i (4) \frac{\partial{err}}{\partial{a}} = \sum_{i=0}^{t}{2(ax_i+b-y_i)*x_i} \tag{4} ∂a∂err=i=0∑t2(axi+b−yi)∗xi(4)
∂ e r r ∂ b = ∑ i = 0 t 2 ( a x i + b − y i ) (5) \frac{\partial{err}}{\partial{b}} = \sum_{i=0}^{t}{2(ax_i+b-y_i)} \tag{5} ∂b∂err=