最小二乘法解决回归问题简单介绍

线性回归问题


线性回归就是对所给的样本进行建模,从而来对未给定或者未来的数据进行预测。如上图,给定了一系列的样本点,通过找到一条“最逼近”所有样本点的曲线进行拟合。

最小二乘法

目的

通过最小化误差的平方和,来寻找到最佳的数据匹配

方法

利用最小二乘可以简便的求得未知的数据,并使得这写求得的数据与实际数据之间误差的平方和为最小。
这里引入几种概念:
1.残差:预测值 h ( x i ) h(x_i) h(xi)和真实值 y i y_i yi之间的误差: r i = h ( x i ) − y i r_i = h(x_i)-y_i ri=h(xi)yi
2.三种范数
L ∞ L_∞ L-范数:残差绝对值中的最大值,即所有数据点中残差距离的最大值: max ⁡ 1 ≤ i ≤ m ∣ r i ∣ \max _{1 \leq i \leq m}\left|r_{i}\right| max1imri
L 1 L_1 L1-范数:绝对残差和,即所有数据点残差距离之和: ∑ i = 1 m ∣ r ∣ \sum{}_{i=1}^m \lvert r\lvert i=1mr
L 2 L_2 L2范数:残差平方和: ∑ i = 1 m r i 2 \sum{}_{i=1}^mr_i^2 i=1mri2

3.拟合程度:通俗的来说,拟合函数 h ( x ) h(x) h(x)与带求解的 y y y之间的相似性,如果误差越小,则越相似。

虽然前两种范数作为误差很容易想到,但是对于计算机来说,计算消耗大,且不利于微分计算。第三种 L 2 L_2 L2-范数的平方为乘法,求和加法,都是基本操作,最小二乘法就是使用 L 2 L_2 L2-范数作为误差计算。

实例

下面以一次函数 y = k x + b y=kx+b y=kx+b为例,介绍最小二乘法:
首先给出最小二乘法对于这个一次函数的定义: min ⁡ k , b ∑ n = 1 N ( y n − ( k × x n + b ) ) 2 (1) \min _{k, b} \sum_{n=1}^{N}\left(y_{n}-(k \times x_n+b)\right)^{2}\tag 1 k,bminn=1N(yn(k×xn+b))2(1)
对于以上的无约束问题,求解一个最合适的k和b。首先分别对k和b求偏导,并令其为0,即可获得极值点:
展开(1)式: L o s s = ( y 1 − ( k x 1 + b ) ) 2 + ( y 2 − ( k x 2 + b ) ) 2 + . . . + ( y N − ( k x N + b ) ) 2 Loss = (y_1-(kx_1+b))^2+(y_2-(kx_2+b))^2+...+(y_N-(kx_N+b))^2 Loss=(y1(kx1+b))2+(y2(kx2+b))2+...+(yN(kxN+b))2
分别对k和b求偏导,并且令为0:
∂ L o s s ∂ k = − 2 x 1 ( y 1 − ( k x 1 + b ) ) − . . . − 2 x N ( y N − ( k x n + b ) ) = 0 \frac{\partial{Loss}}{\partial{k}} = -2x_1(y_1-(kx_1+b))-...-2x_N(y_N-(kx_n+b))=0 kLoss=2x1(y1(kx1+b))...2xN(yN(kxn+b))=0
∂ L o s s ∂ b = − 2 ( y 1 − ( k x 1 + b ) ) − . . . − 2 ( y N − ( k x n + b ) ) = 0 \frac{\partial{Loss}}{\partial{b}} = -2(y_1-(kx_1+b))-...-2(y_N-(kx_n+b))=0 bLoss=2(y1(kx1+b))...2(yN(kxn+b))=0
化简得:
{ k ∑ n = 1 N x n 2 + b ∑ n = 1 N x n = ∑ n = 1 N x n y n , k ∑ n = 1 N x n + b N = ∑ n = 1 N y n \begin{cases} k\sum_{n=1}^N x_n^2+b\sum_{n=1}^Nx_n=\sum_{n=1}^Nx_ny_n,\\ k\sum_{n=1}^Nx_n+bN = \sum_{n=1}^N y_n\\ \end{cases} { kn=1Nxn2+bn=1Nxn=n=1Nxnyn,kn=1Nxn+bN=n=1Nyn
两个式子两个未知数,求得: { k = N ∑ n = 1 N x n × y n − ( ∑ n = 1 N x n ) ( ∑ n = 1 N y n ) ( N ∑ n = 1 N ( x n ) 2 − ( ∑ n = 1 N x n ) 2 ) b = ( ∑ n = 1 N y n ) N − k × ( ∑ n = 1 N x n ) N \begin{cases} k=\frac{N \sum_{n=1}^{N} x_{n} \times y_{n}-\left(\sum_{n=1}^{N} x_{n}\right)\left(\sum_{n=1}^{N} y_{n}\right)}{\left(N \sum_{n=1}^{N}\left(x_{n}\right)^{2}-\left(\sum_{n=1}^{N} x_{n}\right)^{2}\right)}\\ b=\frac{\left(\sum_{n=1}^{N} y_{n}\right)}{N}-k \times \frac{\left(\sum_{n=1}^{N} x_{n}\right)}{N} \end{cases} k=(Nn=1N(xn)2(n=1Nxn)2)Nn=1Nxn×yn(n=1Nxn)(n=1Nyn)b=N(n=1Nyn)k×N(n=1Nxn)
求出了需要的未知数k和b,即这个斜率和截距,使得误差最小。
由此同样可以推广到更加复杂的函数计算。