资料: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