Least Squares 最小二乘

从直线拟合推导最小二乘正规方程,并讨论指数拟合的线性化思路。

如果我们使用的曲线模型 ff 是直线

f(x)=β1x+β2f(x) = \beta_1 x + \beta_2
  • β1\beta_1β2\beta_2 是回归函数 f(X,β)f(\mathbf{X},\beta) 的参数向量 β\beta 的分量

使用 最小二乘误差 least-squares error 作为误差指标来进行回归相比起其它范数具有关键优势,这是因为执行优化的成本相对低廉,因为误差可以根据计算出的解析解直接得到,我们将直线模型代入误差函数,得到

E2(f)=k=1nf(xk)yk2=k=1nβ1xk+β2yk2E_2(f) = \sum_{k=1}^{n} |f(x_k) - y_k|^2 = \sum_{k=1}^{n} |\beta_1 x_k + \beta_2 - y_k|^2
  • 注意,平方根和平均系数 1n\frac{1}{n} 被省略,因为它们不会改变最终的分析结果,这是由于平方根函数是单调递增的,最小化平方和和最小化其平方根(均方根误差)会得到相同的最优解,因此,最小化平方和就足够了,没有必要引入额外的复杂性

要最小化这个误差函数,我们需对两个参数 β1\beta_1β2\beta_2 分别求偏导数 (也就是梯度),并使得偏导数为零来取到极小值,当然也有可能是极大值,但是在最小二乘下的目标函数是凸的,因此梯度为零时通常可以确定为最小值

E2β1=0    k=1n2(β1xk+β2yk)xk=0k=1nβ1xk2+k=1nβ2xk=k=1nxkykE2β2=0    k=1n2(β1xk+β2yk)=0k=1nβ1xk+k=1nβ2=k=1nykk=1nβ1xk+nβ2=k=1nyk\begin{align*} \frac{\partial E_2}{\partial \beta_1} = 0 \implies &\sum_{k=1}^{n} 2(\beta_1 x_k + \beta_2 - y_k)x_k = 0 \\ &\sum_{k=1}^{n} \beta_1 x_k^2 + \sum_{k=1}^{n} \beta_2 x_k = \sum_{k=1}^{n} x_k y_k \\ \\ \frac{\partial E_2}{\partial \beta_2} = 0 \implies &\sum_{k=1}^{n} 2(\beta_1 x_k + \beta_2 - y_k) = 0 \\ &\sum_{k=1}^{n} \beta_1 x_k + \sum_{k=1}^{n} \beta_2 = \sum_{k=1}^{n} y_k \\ &\sum_{k=1}^{n} \beta_1 x_k + n\beta_2 = \sum_{k=1}^{n} y_k \end{align*}
  • 使用了链式法则

最终结果可以写为矩阵形式

[k=1nxk2k=1nxkk=1nxkn][β1β2]=[k=1nxkykk=1nykxk]    Ax=b\left[\begin{array}{c c} \sum_{k=1}^{n} x_k^2 & \sum_{k=1}^{n} x_k \\[2mm] \sum_{k=1}^{n} x_k & n \end{array}\right] \begin{bmatrix} \beta_1 \\[2mm] \beta_2 \end{bmatrix} = \left[\begin{array}{c c} \sum_{k=1}^{n} x_k y_k \\[2mm] \sum_{k=1}^{n} y_k\phantom{x_k} \end{array}\right] \implies \mathbf{A}\mathbf{x} = \mathbf{b}

如此一来,就不必进行昂贵的优化过程,而是可以直接求解这个线性系统来得到精确答案,事实上,这个方法可以推广到任意高阶多项式,例如二次抛物线多项式函数

f(x)=β1x2+β2x+β3f(x) = \beta_1 x^2 + \beta_2 x + \beta_3

需要被求解的参数为 β1\beta_1β2\beta_2 以及 β3\beta_3,和上面类似,这将可以通过最小化最小二乘误差函数 E2(β1,β2,β3)E_2(\beta_1,\beta_2,\beta_3) 导出的梯度所形成的 3×33 \times 3 矩阵系统求解

E2β1=0E2β2=0E2β3=0\frac{\partial E_2}{\partial \beta_1} = 0 \quad \frac{\partial E_2}{\partial \beta_2} = 0 \quad \frac{\partial E_2}{\partial \beta_3} = 0

对于任意 kk 阶多项式拟合,将会产生一个 (k+1)×(k+1)(k + 1) \times (k + 1) 的线性方程组系统 Ax=b\mathbf{A}\mathbf{x} = \mathbf{b} 以供求解,而多项式拟合本身可以视为投影到 kk 次函数组成的基函数上

1,x,x2,,xk1,x,x^2,\cdots,x^k

多项式拟合 一般指的是使用多项式函数来近似或拟合一组数据点的过程。这个术语更广泛,可以包括通过多项式来进行插值、平滑或者近似数据

  • 插值:如果我们要求拟合的多项式精确通过所有数据点(即每个数据点都被多项式函数完美匹配),这种方法通常称为多项式插值。

  • 回归:如果我们不要求精确匹配所有数据点,而是寻找一个总体上与数据点接近的多项式函数,这就是多项式回归。

因此,多项式拟合 包含了 多项式回归 以及 多项式插值 等更广泛的情况

线性化 Linearization

这种最小化最小二乘误差的方法虽然很有效,但是如果任意选择用于拟合的函数,并不能保证最终产生的方程是易于求解的,例如如果我们指数函数作为回归函数

f(x)=β2exp(β1x)f(x) = \beta_2 \exp(\beta_1x)

其误差函数是

E2(β1,β2)=k=1n(β2exp(β1xk)yk)2E_2(\beta_1,\beta_2) = \sum_{k=1}^{n} (\beta_2\exp(\beta_1x_k) - y_k)^2

要最小化误差函数,我们照例求取梯度

E2β1=0    k=1n2(β2exp(β1xk)yk)β2xkexp(β1xk)=0E2β2=0    k=1n2(β2exp(β1xk)yk)exp(β1xk)=0\begin{align*} &\frac{\partial E_2}{\partial \beta_1} = 0 \implies \sum_{k=1}^{n} 2(\beta_2\exp(\beta_1x_k) - y_k)\beta_2x_k\exp(\beta_1x_k)=0 \\ &\frac{\partial E_2}{\partial \beta_2} = 0 \implies \sum_{k=1}^{n} 2(\beta_2\exp(\beta_1x_k) - y_k)\exp(\beta_1x_k)=0 \end{align*}
  • 使用了链式法则

对式子进行整理,得到 2×22 \times 2 的系统

β2k=1nxkexp(2β1xk)k=1nxkykexp(β1xk)=0β2k=1nxkexp(2β1xk)k=1nykexp(β1xk)=0\begin{align*} &\beta_2\sum_{k=1}^{n}x_k\exp(2\beta_1x_k) - \sum_{k=1}^{n}x_ky_k\exp(\beta_1x_k) = 0 \\ &\beta_2\sum_{k=1}^{n}x_k\exp(2\beta_1x_k) - \sum_{k=1}^{n}y_k\exp(\beta_1x_k) = 0 \end{align*}

这个方程组是非线性的,我们无法进行直接求解,事实上,解甚至可能根本不存在,或者存在多个解甚至无穷多解,求解这种问题的一般使用迭代方法,例如著名的 梯度下降 gradient descent

为了避免使用迭代法求解非线性系统,我们可以对指数拟合采取线性化,具体来说,若我们设定以下代换

Y=lnyX=xβ3=lnβ2Y = \ln y \quad X = x \quad \beta_3 = \ln \beta_2

那么我们用于拟合回归的指数函数 f(x)=y=β2exp(β1x)f(x) = y =\beta_2\exp(\beta_1x) 根据这些代换可以变为线性函数

lny=ln(β2exp(β1x))=lnβ2+ln(exp(β1x))=β3+β1xY=β1X+β3\begin{align*} \ln y &= \ln(\beta_2\exp(\beta_1x)) \\ &= \ln \beta_2 + \ln(\exp(\beta_1x)) \\ &= \beta_3 + \beta_1 x \\ &\Downarrow \\ Y &= \beta_1 X + \beta_3 \end{align*}

然后我们需要将用于拟合的数据,也执行同等代换

(xi,yi)(xi,lnyi)=(Xi,Yi)(x_i,y_i) \to (x_i,\ln y_i) = (X_i,Y_i)

如此一来,指数函数的曲线拟合问题就变成了易于求解的线性拟合问题,因此,如果非线性函数存在线性化变换,那么可以将该非线性函数拟合问题转化为标准多项式拟合问题,最终只需要求解多项式拟合问题中得到的线性方程组 Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}