上一篇文章使用最小二乘法来拟合直线,有一个重要的缺点就是仅考虑了因变量
y存在误差的情况,但是很多情况下,原始点的横纵坐标都会有误差存在。
本文使用正交回归的方法,解决了最小二乘的两个缺点:
- 同时考虑了横纵坐标的误差;
- 使用点法式直线方程,能够表示二维平面上所有的点。
正交回归
正交方法能够同时考虑自变量x和因变量y的误差。正交回归将横纵坐标残差的平方和作为目标函数,来求得最优解。直观地理解,正交回归就是找到一条直线,使得点到直线的距离之和最小。
所以如果拟合点的横纵坐标都包含误差的情况下,使用正交回归能够得到更准确的结果。
目标函数
定义横坐标x的真值为x⋆,估计值为x^,则横坐标的误差和残差定义如下:
ηi=xi−xi⋆
η^i=xi−x^i
要综合考虑横纵坐标的误差,得出的目标函数应该有如下形式:
J2=∑[(ϵ^i)2+(η^i)2]=∑[(yi−y^i)2+(xi−x^i)2]
因为要求目标函数的最小值,所以点(x^i,y^i)应该是直线上到点(xi,yi)距离最短的点,也就是第i个点到直线的正交投影点。所以目标函数可以写成:
J2=∑di2
其中di为第i个点(xi,yi)到拟合直线的距离。
求解推导
上一篇文章中,最小二乘法使用斜截式直线方程的话,会有无法表示的直线,所以本文使用点法式直线方程。
用点法式直线方程的形式来表示拟合的直线a(x−x0)+b(y−y0)=0,其中(x0,y0)是直线经过的一个点的坐标,(a,b)为直线的法向量。因为向量仅表示一个方向,其长度我们并不关心,所以为了方便计算,我们采用直线的单位法向量来表示。所以有:
a2+b2=1
第i个点到直线的距离,可以表示为向量(xi−x0,yi−y0)在(a,b)方向上的投影的长度,所以目标函数可以写成:
J2=∑di2=∑a2+b2([xi−x0,yi−y0]⋅[a,b])2=∑[a(xi−x0)+b(yi−y0)]2
将目标函数J2分别对x0和y0求导,并令其等于0,得:
∂x0∂J2∂y0∂J2=−2a∑[a(xi−x0)+b(yi−y0)]=0=−2b∑[a(xi−x0)+b(yi−y0)]=0
上式等号两边同时除以n,得:
a(xˉ−x0)+b(yˉ−y0)=0
其中xˉ和yˉ分别为x和y的均值。
很明显,点(xˉ,yˉ)满足直线方程,所以一定在直线上。因此可以令x0=xˉ,y0=yˉ。此时目标函数变为:
J2=∑[a(xi−xˉ)+b(yi−yˉ)]2=[ab][∑(xi−xˉ)2∑(xi−xˉ)(yi−yˉ)∑(xi−barx)(yi−yˉ)∑(yi−yˉ)2][ab]
对目标函数J2除以n可得:
J2=[ab][sxxsxysxysyy][ab]=vTSv
其中
sxx和syy分别为x和y的方差,sxy为x和y的协方差,
v=[ab],S=[sxxsxysxysyy]。
很明显,这是一个二次型求最小值的问题。因为S为实对称矩阵,所以可以将其进行正交对角化分解:
S=[q1q2][λ100λ2][q1Tq2T]=QΛQT
其中λ1和λ2为矩阵S的特征值,q1和q2为对应的特征向量,Q为特征向量组成的矩阵,Λ为特征值组成的对角矩阵。
则有:
J2=vTSv=(vTQ)Λ(vTQ)T
令u1=vTq1,u2=vTq2,u=[u1u2]则:
J2=uTΛu=λ1u12+λ2u22
因为
uTu=vTQQTv=vTv=1
所以u为单位矩阵,即u12+u22=1。
不妨设λ1≤λ2,则可以得到:当u1=1,u2=0的时候,J2取得最小值λ1。即v=q1
所以最终结果是拟合直线的法向量v等于对应矩阵S最小特征值的特征向量。
结果整理
拟合直线方程为:a(x−x0)+b(y−y0)=0。其中(x0,y0)为直线上一点,向量u=[ab]为直线的法向量。
最后结果为:
x0=xˉ,y0=yˉ。
拟合直线的法向量v=[ab]为矩阵S=[sxxsxysxysyy]的最小特征值对应的特征向量。
几何意义
从正交回归的直观上的理解是:在二维平面上找到一条直线,使得每个点到直线的垂直距离之和最小。也就是说,正交回归优化的是垂直距离。
![线性拟合2-正交回归 线性拟合2-正交回归](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQ3MS8zYWM1OWM5NTc0MTM5YjU0ZjJkNTI0NzNlNGQxNjQyNy5KUEVH)
上图中红色线段即为每个点的竖直误差,正交回归就是找到这样一条直线,使得红色线段的和最小。