Least Squares Fitting最小二乘法拟合(1)

文章目录

  • Least Squares Fitting
    • 1.1 介绍
    • 1.2 最小二乘法最佳拟合元素
    • 1.3 最优化
      • 1.3.1 线性最小二乘法
      • 1.3.2 正规方程
      • 1.3.3 特征向量与奇异值的分解
      • 1.3.4 高斯牛顿法
    • 2. 最小二乘法最佳拟合直线
      • 2.1 参数化
      • 2.2 算法描述
    • 3. 最小二乘最佳拟合平面
      • 3.1 参数化
      • 3.2 算法描述
    • 4. 最小二乘法最佳拟合圆
      • 4.1 参数化
      • 4.2 算法描述

Least Squares Fitting

原文文献PDF地址


1.1 介绍

这篇报告的目的是开发最小二乘法拟合各种不同几何元素的最优化算法。利用matlab代码对各种几何形状进行了复现并且测试了自co-ordinate measuring machines下获得的真实数据点。以下是已经被研究了的各种几何图形:

  • 指定平面中的线
  • 三维线
  • 平面
  • 指定平面中的圆
  • 球和圆柱

这篇报告的书写方式对于有着线性代数和曲线拟合基础的人来说比较容易理解。作者提到的各种论文的简要摘要见附录1和2,建议在开始阅读报告前先浏览附录。在这篇报告中只建立了在笛卡尔坐标系下数据点的最小二乘法最佳拟合参考元素。

1.2 最小二乘法最佳拟合元素

最小二乘法准则可以广泛的应用于曲线拟合问题,最小二乘法最佳拟合元素就是解决将数据拟合到一个平面的问题。
这是一个参数化的问题。最佳平面由平面上一点C ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)以及与平面垂直的方向余弦(a,b,c)决定。平面上所有的点(x,y,z)都满足 a ( x − x 0 ) + b ( y − y 0 ) + c ( z − z 0 ) = 0 a(x- x_0)+b(y- y_0)+c(z- z_0) = 0 a(xx0)+b(yy0)+c(zz0)=0
Least Squares Fitting最小二乘法拟合(1)_第1张图片

任意一点A ( x i , y i , z i ) (x_i,y_i,z_i) (xi,yi,zi)到指定平面的距离为 d i = a ( x i − x 0 ) + b ( y i − y 0 ) + c ( z i − z 0 ) d_i=a(x_i-x_0)+b(y_i-y_0)+c(z_i-z_0) di=a(xix0)+b(yiy0)+c(ziz0)。所有点到平面的距离的平方和是 F = ∑ i = 1 n d i 2 F=\sum_{i=1}^n d_i^2 F=i=1ndi2 ,因此我们的问题是找到元素 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)以及(a,b,c)使得F的值最小。

1.3 最优化

设置一个函数 E ( u ) = ∑ i = 1 n d i 2 ( u ) E(u)=\sum_{i=1}^nd_i^2(u) E(u)=i=1ndi2(u)使得他的最小化与参数 u = ( u 1 . . . u n ) T u=(u_1...u_n)^T u=(u1...un)T相关。在这里 d i d_i di表示数据点到几何元素由u参数化的距离。

1.3.1 线性最小二乘法

为了理解下面描述在标准教科书中使用的最小二乘法拟合直线的传统方法。问题的矩阵公式也会被详细地解释,因为它对于解决大问题时非常有用。考虑通过一组数据点 ( x i , y i ) (x_i,y_i) xi,yi(i从1->n)去拟合一条直线y=a+bx,最小化函数使得点到直线垂直方向测量的距离的平方和最小。因此F就是最小化函数。
F = ∑ i = 1 n ( y i − a − b x i ) 2 F=\sum_{i=1}^n(y_i-a-bx_i)^2 F=i=1n(yiabxi)2
f是最小值的一个条件是
∂ f ∂ a = 0 , ∂ f ∂ b = 0 \frac {\partial f}{\partial a}=0,\frac{\partial f}{\partial b}=0 af=0bf=0
因此对上述函数中的a和b的部分求偏导可得
2 ( − 1 ) ∑ i = 1 n ( y i − a − b x i ) = 0 2(-1)\sum_{i=1}^n(y_i-a-bx_i)=0 2(1)i=1n(yiabxi)=0
2 ( − x i ) ∑ i = 1 n ( y i − a − b x i ) = 0 2(-x_i)\sum_{i=1}^n(y_i-a-bx_i)=0 2(xi)i=1n(yiabxi)=0
这些可以被简化为
∑ i = 1 n y i = n a + b ∑ i = 1 n x i \sum_{i=1}^n y_i=na+b\sum_{i=1}^nx_i i=1nyi=na+bi=1nxi
∑ i = 1 n x i y i = a ∑ i = 1 n x i − b ∑ i = 1 n x i 2 \sum_{i=1}^n x_i y_i=a\sum_{i=1}^nx_i-b\sum_{i=1}^nx_i^2 i=1nxiyi=ai=1nxibi=1nxi2
对上述方程式一同求解就可以得到a和b的值。

1.3.2 正规方程

考虑通过一组数据点 ( x i , y i ) (x_i,y_i) (xi,yi)(i:1->n)去拟合一条直线y=a+bx,如果数据点共线,这条线将通过n个点,所以
y 1 = a + b x 1 y_1=a+bx_1 y1=a+bx1
y 2 = a + b x 2 y_2=a+bx_2 y2=a+bx2
y 3 = a + b x 3 y_3=a+bx_3 y3=a+bx3

y n = a + b x n y_n=a+bx_n yn=a+bxn
它可以被写为矩阵形式
[ y 1 y 2 ⋮ y n ] = [ 1 x 1 2 x 2 ⋮ ⋮ n x n ] [ a b ] \begin{bmatrix} y_1\\ y_2\\ \vdots\\ y_n\\ \end{bmatrix}=\begin{bmatrix} 1&x_1\\ 2&x_2\\ \vdots&\vdots\\ n&x_n\\ \end{bmatrix}\begin{bmatrix} a\\ b\\ \end{bmatrix} y1y2yn = 12nx1x2xn [ab]

B = [ y 1 y 2 ⋮ y n ] , A = [ 1 x 1 2 x 2 ⋮ ⋮ n x n ] , p = [ a b ] B=\begin{bmatrix} y_1\\ y_2\\ \vdots\\ y_n\\ \end{bmatrix},A=\begin{bmatrix} 1&x_1\\ 2&x_2\\ \vdots&\vdots\\ n&x_n\\ \end{bmatrix},p=\begin{bmatrix} a\\ b\\ \end{bmatrix} B= y1y2yn ,A= 12nx1x2xn ,p=[ab]
那么上式就可以被表示为B=AP,
目标就是找到一个向量p可以使得不同的 ∥ B − A P ∥ \Vert B-AP \Vert BAP的欧式距离最小。
如果 P = P ∗ = [ a ∗ b ∗ ] P=P*=\begin{bmatrix} a*\\ b*\\ \end{bmatrix} P=P=[ab]是最小化向量,
那么y=a*+b* x就是最小二乘法拟合直线,这个也可以被解释为
∥ B − A P ∥ 2 = ( y 1 − a − b x 1 ) 2 + ( y 2 − a − b x 2 ) 2 + . . . + ( y n − a − b x n ) 2 \Vert B-AP \Vert^2 =(y_1-a-bx_1)^2 +(y_2-a-bx_2)^2 +...+(y_n-a-bx_n)^2 BAP2=(y1abx1)2+(y2abx2)2+...+(ynabxn)2
如果令 d 1 = ( y 1 − a − b x 1 ) 2 , d 2 = ( y 2 − a − b x 2 ) 2 , . . . , d n = ( y n − a − b x n ) 2 d_1=(y_1-a-bx_1)^2 ,d_2=(y_2-a-bx_2)^2,... ,d_n=(y_n-a-bx_n)^2 d1=(y1abx1)2,d2=(y2abx2)2,...,dn=(ynabxn)2
d可以看作是数据集中每一个点到拟合直线的距离,所以
∥ B − A P ∥ 2 = d 1 2 + d 2 2 + . . . + d n 2 \Vert B-AP \Vert^2=d_1^2+d_2^2+...+d_n^2 BAP2=d12+d22+...+dn2
Least Squares Fitting最小二乘法拟合(1)_第2张图片

为了使 ∥ B − A P ∥ \Vert B-AP \Vert BAP最小,AP上就必须与B在列空间A的正交投影AP相等,这表明了B-AP必须与列空间A垂直。
所以对于在R2上的每个向量P有
(B-AP*)AP=0
这个也可以被写作
(AP)T(B-AP*)=0
PTAT(B-AP*)=0
PT(ATB-ATAP*)=0
(ATB-ATAP*)P=0
所以ATB-ATAP垂直于R2上的每个向量P,这表明
ATB-ATAP
=0
ATAP=ATB
这表明了P*满足线性系统
ATAP=ATB
这个方程式也被称为正规方程,该方程的解为
P=(ATA)-1ATB
这个等式可以被用在求多项式的最小二乘法拟合的情况

1.3.3 特征向量与奇异值的分解

  • 等式P=(ATA)-1ATB中的(ATA)-1很难求解。所以代替的方法就是使用奇异值分解来求解P
  • 奇异值的分解
    一个矩阵可以被分解为3个矩阵
    A=USVT
    其中U和V是正交矩阵,S是包含A的奇异矩阵的对角矩阵
    将A=USVT放进正规方程
    (USVT)T(USVT)P=(USVT)TB
    (VSTUTUSVT)P=VSTUTB
    已知
    UTU=I UT=U-1 VTV=I VT=V-1
    所以
    (VSTSVT)P=VSTUTB
    等式两边左乘V-1
    (STSVT)P=STUTB
    S是一个对角线矩阵;因此(SSVT)P=SUTB
    等式两边两次左乘S-1
    VTP=S-1UTB
    等式两边左乘V*
    VVTP=VS-1UTB
    所以P的解为
    P=VS-1UTB

1.3.4 高斯牛顿法

牛顿法是最强大和著名数值方法之一,用作当f(x)是非线性函数求解f(x)=0的根。这个技术被应用于圆、球、圆柱、圆锥的线性最小二值模型。为了诱导这个算法的工作原理,首先讲述牛顿法。
假设给定一个函数f它的定义域是[a,b],让 x ‾ ∈ [ a , b ] \overline {x}\in[a,b] x[a,b],这样 f ′ ( x ‾ ) ≠ 0 f'(\overline {x})≠0 f(x)=0,f(x)的 x ‾ \overline {x} x的泰勒多项展开式就是
f ( x ) = f ( x ‾ ) + ( x − x ‾ ) f ′ ( x ‾ ) + ( x − x ‾ ) 2 2 f ′ ( ξ ( x ) ) , ξ ( x ) ∈ [ x , x ‾ ] f(x)=f(\overline {x})+(x-\overline {x})f'(\overline {x})+\frac {(x-\overline {x})^2}{2}f'(\xi(x)),\xi(x)\in[x,\overline {x}] f(x)=f(x)+(xx)f(x)+2(xx)2f(ξ(x))ξ(x)[x,x]
因为f(q)=0当q=x时,
0 = f ( x ‾ ) + ( x − x ‾ ) f ′ ( x ‾ ) + ( x − x ‾ ) 2 2 f ′ ( ξ ( x ) ) 0=f(\overline {x})+(x-\overline {x})f'(\overline {x})+\frac {(x-\overline {x})^2}{2}f'(\xi(x)) 0=f(x)+(xx)f(x)+2(xx)2f(ξ(x))
牛顿法假设 ∣ q − x ‾ ∣ |q-\overline {x}| qx很小,那么 ∣ p − x ‾ ∣ 2 |p-\overline {x}|^2 px2就更小,因此
0 = f ( x ‾ ) + ( q − x ‾ ) f ′ ( x ‾ ) 0=f(\overline {x})+(q-\overline {x})f'(\overline {x}) 0=f(x)+(qx)f(x)
( q − x ‾ ) = − f ( x ‾ ) f ′ ( x ) (q-\overline {x})=-\frac{f(\overline {x})}{f'(x)} (qx)=f(x)f(x)
q = u 1 , x ‾ = u 0 , p = − f ( x ‾ ) f ′ ( x ) q=u_1,\overline {x}=u_0,p=-\frac{f(\overline {x})}{f'(x)} q=u1,x=u0,p=f(x)f(x)
因此 u 1 = u 0 + p , p = − f ( u 0 ) f ′ ( u 0 ) u_1=u_0+p,p=-\frac{f(u_0)}{f'(u_0)} u1=u0+p,p=f(u0)f(u0)

  • 从图1.3.4中,y=f(u)的根可以通过以下步骤求解
  1. 计算f(u0) 和 f’(u0)
  2. 在图中找到点(u0,f(u0))的切线,它在u1处切割U轴
  3. 找到u1对应的点画出该点的切线来找到点u2
  4. 重复以上步骤直到它收敛(接近u*)
  • 算法的要素
    • a) 给定一个近似解,问题被线性化
    • b) 问题的线性版本得到解决
    • c) 利用线性问题的解决方案来更新对解的评估

在线性最小二乘问题中,下式用来确定几何元素与一组数据点拟合程度有多好
E = ∑ i = 1 n d i 2 E=\sum_{i=1}^n d_i^2 E=i=1ndi2
其中di是点到几何元素的距离
在这种情况下,di不是线性函数;高斯牛顿法被用来寻找平方和E的最小值。假设这里有一个初始值u*,利用这种方式求解一个线性最小二乘系统
J p = − d J_p=-d Jp=d
J是一个m*n的雅可比矩阵其中第ith行是di相对于参数u的梯度
J i j = ∂ d i ∂ u j J_{ij}=\frac {\partial d_i}{\partial u_j} Jij=ujdi
它对u进行了评估,d的第ith个分量是di(u),该参数将被更新为
u : = u + p u:=u+p u:=u+p

  • 收敛条件
    • 牛顿法的步骤一直重复直到它达到了收敛点,以下是与测试收敛性相关的3条准则
        1. E的变化应该很小
        1. 更新的大小必须很小,例如(pTp)1/2
        1. E相对于最优化参数的部分推导应该很小,例如(ggT)1/2其中g=JTd

2. 最小二乘法最佳拟合直线

  • 线可以是在指定的(2维)平面或者3维平面中。因为2D线条是3维线条的一种特殊情况,详细讨论3D线条。下面给出将m个数据点(xi,yi,zi)拟合成一条直线的过程。
  • 在线上的任何点(x,y,z)对于某些t的值都满足
    (x,y,z)=(x0,y0,z0)+t(a,b,c)
  • 在三维空间中,从点到直线的的距离为
    d i = [ u i 2 + v i 2 + w i 2 ] d_i=\sqrt{[u_i^2+v_i^2+w_i^2]} di=[ui2+vi2+wi2]

2.1 参数化

  • 一条直线可以由以下两个因素决定
      1. 线上的一个点(x0,y0,z0
      1. 方向向量(a,b,c)

2.2 算法描述

  • 最佳拟合直线通过数据点的质心 ( x ‾ , y ‾ , z ‾ ) (\overline {x},\overline {y},\overline {z}) (x,y,z)这样就确定了直线L上的一个点,现在需要找出直线的方向向量。

      1. 第一步是找出点x,y,z的平均值
        x ‾ = ∑ x i / n \overline {x}=\sum x_i/n x=xi/n
        y ‾ = ∑ y i / n \overline {y}=\sum y_i/n y=yi/n
        z ‾ = ∑ z i / n \overline {z}=\sum z_i/n z=zi/n
      1. 构造矩阵A
        [ x i y i z i ⋮ ⋮ ⋮ x ‾ y ‾ z ‾ ] \begin{bmatrix} x_i&y_i&z_i\\ \vdots&\vdots&\vdots\\ \overline {x}&\overline {y}&\overline {z}\\ \end{bmatrix} xixyiyziz
      1. 该矩阵A用奇异值分解法求解。从矩阵A中选取最小的奇异值和相应的奇异向量,其方向余弦为(a,b,c)
      1. 最佳拟合直线由 x ‾ , y ‾ , z ‾ , a , b , c \overline {x},\overline {y},\overline {z},a,b,c x,y,za,b,c六个参数共同决定

3. 最小二乘最佳拟合平面

  • 下面给出将m个数据点(xi,yi,zi)拟合成一个平面的过程。
  • 在平面上的任何点(x,y,z)都满足
    a ( x − x 0 ) + b ( y − y 0 ) + c ( z − z 0 ) = 0 a(x-x_0)+b(y-y_0)+c(z-z_0)=0 a(xx0)+b(yy0)+c(zz0)=0
  • 点(xi,yi,zi)到平面的距离由参数x0,y0,z0,a,b,c决定
    d i = a ( x − x 0 − ) + b ( y − y 0 ) + c ( z − z 0 ) d_i=a(x-x_0-)+b(y-y_0)+c(z-z_0) di=a(xx0)+b(yy0)+c(zz0)

3.1 参数化

  • 一个平面由以下两个参数决定
      1. 平面上的一个点(x0,y0,z0
      1. 平面法线的方向余弦(a,b,c)

3.2 算法描述

  • 最佳拟合平面经过数据点的质心 ( x ‾ , y ‾ , z ‾ ) (\overline {x},\overline {y},\overline {z}) (x,y,z)这样就确定了平面上的一点P同样的需要计算出方向余弦。
    (a,b,c)是与最小特征值B=ATA相关的特征向量
      1. 第一步是找出点x,y,z的平均值
        x ‾ = ∑ x i / n \overline {x}=\sum x_i/n x=xi/n
        y ‾ = ∑ y i / n \overline {y}=\sum y_i/n y=yi/n
        z ‾ = ∑ z i / n \overline {z}=\sum z_i/n z=zi/n
      1. 构造矩阵A
        [ x i y i z i ⋮ ⋮ ⋮ x ‾ y ‾ z ‾ ] \begin{bmatrix} x_i&y_i&z_i\\ \vdots&\vdots&\vdots\\ \overline {x}&\overline {y}&\overline {z}\\ \end{bmatrix} xixyiyziz
      1. 该矩阵A用奇异值分解法求解。从矩阵A中选取最小的奇异值和相应的奇异向量,其方向余弦为(a,b,c)
      1. 最佳拟合平面由 x ‾ , y ‾ , z ‾ , a , b , c \overline {x},\overline {y},\overline {z},a,b,c x,y,za,b,c六个参数共同决定

4. 最小二乘法最佳拟合圆

  • 下面给出将m个数据点(xi,yi)拟合成一个圆的的过程。
  • 在圆上任意的点(x,y)满足
    ( x i − x 0 ) 2 + ( y i − y 0 ) 2 = r 2 (x_i-x_0)^2+(y_i-y_0)^2=r^2 (xix0)2+(yiy0)2=r2
  • 点(xi,yi)到圆的距离由x0,y0以及r决定
    d i = r i − r d_i=r_i-r di=rir
    r i = [ ( x i − x 0 ) 2 + ( y i − y 0 ) 2 ] r_i=\sqrt{[(x_i-x_0)^2+(y_i-y_0)^2]} ri=[(xix0)2+(yiy0)2]
  • 雅可比矩阵J的元素来自di对参数x0,y0和r求偏导
    ∂ d i ∂ x 0 = − ( x i − x 0 ) \frac {\partial d_i}{\partial x_0}=-(x_i-x_0) x0di=(xix0)
    ∂ d i ∂ y 0 = − ( x i − x 0 ) \frac {\partial d_i}{\partial y_0}=-(x_i-x_0) y0di=(xix0)
    ∂ d i ∂ r = − 1 \frac {\partial d_i}{\partial r}=-1 rdi=1

4.1 参数化

  • 一个圆由以下两个参数决定
      1. 圆心(x0,y0
      1. 圆的半径r

4.2 算法描述

  • 用来求解最佳拟合圆的算法是高斯牛顿法,上面已经解释过了。首先是要找到初始的估计值,其次去实现高斯牛顿算法。用线性最小二乘模型求解圆的圆心和半径的初始预估值,执行步骤如下:

      1. F的最小值
        F = ∑ i = 1 m d i 2 F=\sum_{i=1}^m d_i^2 F=i=1mdi2其中 f i = r i 2 − r 2 f_i=r_i^2-r^2 fi=ri2r2
      1. 这可以简化为一个x0,y0,ρ的线性系统
        f i = ( x i − x 0 ) 2 − ( y i − y 0 ) 2 − r 2 = − 2 x i x 0 − 2 y i y 0 + ( x 0 2 + y 0 2 − r 2 ) + ( x i 2 + y i 2 ) f_i=(x_i-x_0)^2-(y_i-y_0)^2-r^2=-2x_ix_0-2y_iy_0+(x_0^2+y_0^2-r^2)+(x_i^2+y_i^2) fi=(xix0)2(yiy0)2r2=2xix02yiy0+(x02+y02r2)+(xi2+yi2)
        ρ = x 0 2 + y 0 2 − r 2 ρ=x_0^2+y_0^2-r^2 ρ=x02+y02r2
      1. 为了最小化F求解线性最小二乘系统
        A [ x 0 y 0 ρ ] = b A\begin{bmatrix} x_0\\ y_0\\ ρ\\ \end{bmatrix}=b A x0y0ρ =b
        A的第ith行元素是系数(2xi,2yi,-1),b的第ith个元素是 x i 2 + y i 2 x_i^2+y_i^2 xi2+yi2
      1. 由ρ的方程可以获得r的预估值
  • 一旦获得初始预估值就可以形成右手向量d和雅可比矩阵J,然后就可以解出线性最小二乘系统
    J [ p x 0 p y 0 p r ] = − d J\begin{bmatrix} p_{x0}\\ p_{y0}\\ p_r\\ \end{bmatrix}=-d J px0py0pr =d
    这些参数的值会随着估计值更新
    x 0 = x 0 + p x 0 x_0=x_0+p_{x0} x0=x0+px0
    y 0 = y 0 + p y 0 y_0=y_0+p_{y0} y0=y0+py0
    r = r + p r r=r+p_r r=r+pr
    重复以上步骤直到算法收敛

由于篇幅较长发布不了故而分为两篇进行上传
Least Squares Fitting最小二乘法拟合(2)

你可能感兴趣的:(数学,最小二乘法,机器学习,线性代数)