本文章记录通过矩阵最小二乘法,求解二元方程组的线性回归。
假设,二维平面中有三个坐标(1,1)、(2,2)、(3,2),很显然该三个坐标点不是共线的,如何拟合出一条直线使其为最优直线。
 
 
将三点的坐标分别带入,可得到如下形式:
  
      
       
        
         
          
          
           
           
             { 
            
            
             
              
               
                
                
                  C 
                 
                
                  + 
                 
                
                  D 
                 
                
                  = 
                 
                
                  1 
                 
                
               
              
             
             
              
               
                
                
                  C 
                 
                
                  + 
                 
                
                  2 
                 
                
                  D 
                 
                
                  = 
                 
                
                  2 
                 
                
               
              
             
             
              
               
                
                
                  C 
                 
                
                  + 
                 
                
                  3 
                 
                
                  D 
                 
                
                  = 
                 
                
                  2 
                 
                
               
              
             
            
           
          
          
          
          
            (1) 
           
          
         
        
       
         \begin{cases} C + D = 1\\ C + 2D = 2\\ C + 3D = 2\\ \end{cases} \tag{1} 
        
       
     ⎩ 
              ⎨ 
              ⎧C+D=1C+2D=2C+3D=2(1)
显然方程组无解,因为三点不共线。
令:
  
      
       
        
        
          A 
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
              
              
                a 
               
              
                1 
               
              
             
            
            
             
              
              
                a 
               
              
                2 
               
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               1 
              
             
            
            
             
             
               1 
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
             
               2 
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
             
               3 
              
             
            
           
          
         
           ] 
          
         
        
       
         A = \left[ \begin{matrix} a1 & a2 \end{matrix} \right] = \left[ \begin{matrix} 1 & 1 \\ 1 & 2 \\ 1 & 3 \end{matrix} \right] 
        
       
     A=[a1a2]= 
              111123 
              
  
      
       
        
        
          b 
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               1 
              
             
            
           
           
            
             
             
               2 
              
             
            
           
           
            
             
             
               2 
              
             
            
           
          
         
           ] 
          
         
        
       
         b = \left[ \begin{matrix} 1 \\ 2 \\ 2 \end{matrix} \right] 
        
       
     b= 
              122 
              
则(1)式可表示为:
  
      
       
        
         
          
          
           
           
             A 
            
            
            
              [ 
             
             
              
               
                
                
                  C 
                 
                
               
              
              
               
                
                
                  D 
                 
                
               
              
             
            
              ] 
             
            
           
             = 
            
           
             A 
            
           
             x 
            
           
             = 
            
           
             b 
            
           
          
          
          
          
            (2) 
           
          
         
        
       
         A\left[ \begin{matrix} C \\ D \end{matrix} \right]=Ax=b\tag{2} 
        
       
     A[CD]=Ax=b(2)
令(1,p1)、(2,p2)、(3、p3)分别是拟合直线 y = C + Dt 上的与b 对应的三个坐标,其中
  
      
       
        
        
          P 
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
              
              
                p 
               
              
                1 
               
              
             
            
           
           
            
             
              
              
                p 
               
              
                2 
               
              
             
            
           
           
            
             
              
              
                p 
               
              
                3 
               
              
             
            
           
          
         
           ] 
          
         
        
       
         P=\left[ \begin{matrix} p1 \\ p2 \\ p3 \end{matrix} \right] 
        
       
     P= 
              p1p2p3 
              
说明:p 是投影的缩写,这里表示b 在拟合直线上的投影点。那么 P 与 b 之间的差值即为误差 e,整个计算过程是为了求出直线,使得 e 最小。
由于 P 中的点均在拟合直线上,所以下列方程有解:
  
      
       
        
         
          
          
           
           
             A 
            
            
            
              x 
             
            
              ^ 
             
            
           
             = 
            
           
             P 
            
           
          
          
          
          
            (3) 
           
          
         
        
       
         A\hat{x}=P\tag{3} 
        
       
     Ax^=P(3)
说明:P 向量是 b 向量在 Col(A) 空间的投影。Col(A) 即 A 矩阵的列空间。
有投影矩阵的性质可得,
  
      
       
        
        
          ( 
         
        
          b 
         
        
          − 
         
        
          A 
         
         
         
           x 
          
         
           ^ 
          
         
        
          ) 
         
        
          ⊥ 
         
        
          a 
         
        
          1 
         
        
          , 
         
        
          ( 
         
        
          b 
         
        
          − 
         
        
          A 
         
         
         
           x 
          
         
           ^ 
          
         
        
          ) 
         
        
          ⊥ 
         
        
          a 
         
        
          2 
         
        
       
         (b - A\hat{x}) ⊥ a1,(b - A\hat{x}) ⊥ a2 
        
       
     (b−Ax^)⊥a1,(b−Ax^)⊥a2
即
  
      
       
        
         
         
           A 
          
         
           T 
          
         
        
          ( 
         
        
          b 
         
        
          − 
         
        
          A 
         
         
         
           x 
          
         
           ^ 
          
         
        
          ) 
         
        
          = 
         
        
          0 
         
        
       
         A^T(b - A\hat{x}) = 0 
        
       
     AT(b−Ax^)=0
可得
  
      
       
        
         
          
          
           
            
            
              A 
             
            
              T 
             
            
           
             A 
            
            
            
              x 
             
            
              ^ 
             
            
           
             = 
            
            
            
              A 
             
            
              T 
             
            
           
             b 
            
           
          
          
          
          
            (4) 
           
          
         
        
       
         A^T A\hat{x}=A^T b \tag4 
        
       
     ATAx^=ATb(4)
计算:
  
      
       
        
         
         
           A 
          
         
           T 
          
         
        
          A 
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               1 
              
             
            
            
             
             
               1 
              
             
            
            
             
             
               1 
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
             
               2 
              
             
            
            
             
             
               3 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               1 
              
             
            
            
             
             
               1 
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
             
               2 
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
             
               3 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               3 
              
             
            
            
             
             
               6 
              
             
            
           
           
            
             
             
               6 
              
             
            
            
             
             
               14 
              
             
            
           
          
         
           ] 
          
         
        
       
         A^T A = \left[ \begin{matrix} 1 & 1 & 1 \\ 1 & 2 & 3 \\ \end{matrix} \right] \left[ \begin{matrix} 1 & 1 \\ 1 & 2 \\ 1 & 3 \end{matrix} \right] = \left[ \begin{matrix} 3 & 6 \\ 6 & 14 \end{matrix} \right] 
        
       
     ATA=[111213] 
              111123 
              =[36614]
  
      
       
        
         
         
           A 
          
         
           T 
          
         
        
          b 
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               1 
              
             
            
            
             
             
               1 
              
             
            
            
             
             
               1 
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
             
               2 
              
             
            
            
             
             
               3 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               1 
              
             
            
           
           
            
             
             
               2 
              
             
            
           
           
            
             
             
               2 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               5 
              
             
            
           
           
            
             
             
               11 
              
             
            
           
          
         
           ] 
          
         
        
       
         A^T b = \left[ \begin{matrix} 1 & 1 & 1 \\ 1 & 2 & 3 \\ \end{matrix} \right] \left[ \begin{matrix} 1 \\ 2 \\ 2 \end{matrix} \right] = \left[ \begin{matrix} 5 \\ 11 \end{matrix} \right] 
        
       
     ATb=[111213] 
              122 
              =[511]
 由此得方程组:
  
      
       
        
         
          
          
           
           
             { 
            
            
             
              
               
                
                
                  3 
                 
                
                  C 
                 
                
                  + 
                 
                
                  6 
                 
                
                  D 
                 
                
                  = 
                 
                
                  5 
                 
                
               
              
             
             
              
               
                
                
                  6 
                 
                
                  C 
                 
                
                  + 
                 
                
                  14 
                 
                
                  D 
                 
                
                  = 
                 
                
                  11 
                 
                
               
              
             
            
           
          
          
          
          
            (5) 
           
          
         
        
       
         \begin{cases} 3C + 6D = 5\\ 6C + 14D = 11 \end{cases} \tag{5} 
        
       
     {3C+6D=56C+14D=11(5)
解得:
  
      
       
        
        
          C 
         
        
          = 
         
         
         
           1 
          
         
           3 
          
         
        
          , 
         
        
          D 
         
        
          = 
         
         
         
           1 
          
         
           2 
          
         
        
       
         C =\frac{1}{3}, D =\frac{1}{2} 
        
       
     C=31,D=21
即最后求得的拟合直线方程为:
  
      
       
        
         
          
          
           
           
             y 
            
           
             = 
            
            
            
              1 
             
            
              3 
             
            
           
             + 
            
            
            
              1 
             
            
              2 
             
            
           
             t 
            
           
          
          
          
          
            (6) 
           
          
         
        
       
         y = \frac{1}{3} + \frac{1}{2} t \tag6 
        
       
     y=31+21t(6)
求解过程中的误差
e = p − b e = p - b e=p−b
则误差的最小二乘表示为:
m i n ( l ) = ( C + D − 1 ) 2 + ( C + 2 D − 2 ) 2 + ( C + 3 D − 2 ) 2 min(l) = (C + D - 1)^2 + (C + 2D - 2)^2 + (C + 3D - 2)^2 min(l)=(C+D−1)2+(C+2D−2)2+(C+3D−2)2
利用求导函数等于0 的方式,同样可以求得
C = 1 3 , D = 1 2 C =\frac{1}{3}, D =\frac{1}{2} C=31,D=21.
补充说明
A 的各列线性无关,才使得 A^T A可逆,这是最小二乘法成立的大前提。
至此,结束。
追加题目:
t = 1 ; y = 4 t = 1; y = 4 t=1;y=4
t = 2 ; y = 5 t = 2; y = 5 t=2;y=5
t = 3 ; y = 8 t = 3; y = 8 t=3;y=8
如何将上述三个点,拟合到过原点(0,0)的直线上?



















