资料:https://zhuanlan.zhihu.com/p/653406161
预备知识
1、矩阵的求导
一、问题
- 想对一组数据进行线性回归,也就是用一条直线拟合数据(只要可以写成矩阵形式,未必是直线)。
1、变量形式
待拟合直线方程: y = a x + b y = ax + b y=ax+b
代价函数(二乘项): J ( a , b ) = 1 2 m ∑ i = 0 m [ ( a x i + b ) − y i ] 2 J(a,b) = \frac{1}{2m}\sum_ {i=0}^m[(ax_i+b)-y_i]^2 J(a,b)=2m1i=0∑m[(axi+b)−yi]2
2、矩阵形式
待拟合方程: Y = X A = [ x 1 x 1 0 x 2 x 2 0 ] [ a b ] = [ y 1 y 2 ] Y = XA = \left[\begin{array}{c} x_1 & {x_1}^0 \\ x_2 & {x_2}^0 \end{array}\right] \left[\begin{array}{c} a \\ b \end{array}\right] = \left[\begin{array}{c} y_1 \\ y_2 \end{array}\right] Y=XA=[x1x2x10x20][ab]=[y1y2]
代价函数: J = ( X A − Y ) T ∗ ( X A − Y ) J = (XA-Y)^T*(XA-Y) J=(XA−Y)T∗(XA−Y)
二、最小二乘法推导
1、拆开代价函数并求导
2、整理上式
三、最小二乘法结论
四、最小二乘法例子
1、问题
待拟合方程: y = a x 2 + b x + c y=ax^2+bx+c y=ax2+bx+c
数据:
x | y |
---|---|
1 | 4 |
2 | 6.4 |
3 | 8 |
4 | 8.8 |
2、计算
[ a b c ] = ( [ 1 1 1 4 2 1 9 3 1 1 4 1 ] T [ 1 1 1 4 2 1 9 3 1 1 4 1 ] ) − 1 [ 1 1 1 4 2 1 9 3 1 1 4 1 ] T [ 4 6.4 8 8.8 ] = [ − 0.4 3.6 0.8 ] \left[\begin{array}{c} a \\ b \\ c \\ \end{array}\right] ={({ \left[\begin{array}{c} 1 & 1 & 1 \\ 4 & 2 & 1 \\ 9 & 3 & 1 \\ 1 & 4 & 1 \\ \end{array}\right]^T\left[\begin{array}{c} 1 & 1 & 1 \\ 4 & 2 & 1 \\ 9 & 3 & 1 \\ 1 & 4 & 1 \\ \end{array}\right]})}^{-1}\left[\begin{array}{c} 1 & 1 & 1 \\ 4 & 2 & 1 \\ 9 & 3 & 1 \\ 1 & 4 & 1 \\ \end{array}\right]^T\left[\begin{array}{c} 4 \\ 6.4 \\ 8 \\ 8.8 \\ \end{array}\right] = \left[\begin{array}{c} -0.4 \\ 3.6 \\ 0.8 \\ \end{array}\right] abc =( 149112341111 T 149112341111 )−1 149112341111 T 46.488.8 = −0.43.60.8
>> X=[1 1 1; 4 2 1;9 3 1;16 4 1]
X =
1 1 1
4 2 1
9 3 1
16 4 1
>> Y = [4;6.4;8;8.8]
Y =
4.0000
6.4000
8.0000
8.8000
>> A = inv(X.'*X)*X.'*Y
A =
-0.4000
3.6000
0.8000