1.假设条件
x
1
,
x
2
,
…
,
x
N
,
x
i
∈
R
n
x_1,x_2,\ldots,x_N,x_i\in R^n
x1,x2,…,xN,xi∈Rn (x为样本,
R
n
R^n
Rn表示样本的维度为n,此小n是一个方程中未知数的个数的n,而大N为样本的个数。)
y
1
,
y
2
,
…
,
y
N
,
y
i
∈
R
1
y_1,y_2,\ldots,y_N,y_i \in R^1
y1,y2,…,yN,yi∈R1 (y为实际值,因为实际值每个方程只有一个,所以
R
1
R^1
R1表示只有1维。)
2.使用线性规划根据样本x预测y:
y
1
=
x
11
a
1
+
x
12
a
2
+
⋯
+
x
1
n
a
n
y_1=x_{11}a_1+x_{12}a_2+\cdots+x_{1n}a_n
y1=x11a1+x12a2+⋯+x1nan
y
2
=
x
21
a
1
+
x
22
a
2
+
⋯
+
x
2
n
a
n
y_2=x_{21}a_1+x_{22}a_2+\cdots+x_{2n}a_n
y2=x21a1+x22a2+⋯+x2nan
⋮
\vdots
⋮
y
N
=
x
21
a
1
+
x
22
a
2
+
⋯
+
x
2
n
a
n
y_N=x_{21}a_1+x_{22}a_2+\cdots+x_{2n}a_n
yN=x21a1+x22a2+⋯+x2nan
3.写成矩阵形式:
[ x 11 x 12 … x 1 n x 21 x 22 … x 2 n ⋮ ⋮ ⋱ ⋮ x N 1 x N 2 … x N n ] [ a 1 a 2 ⋮ a n ] = [ y 1 y 2 ⋮ y N ] \left[\begin{matrix} x_{11}&x_{12}&\ldots&x_{1n}\\ x_{21}&x_{22}&\ldots&x_{2n}\\ \vdots&\vdots&\ddots&\vdots\\ x_{N1}&x_{N2}&\ldots&x_{Nn} \end{matrix}\right] \left[\begin{matrix} a_1\\a_2\\\vdots\\a_n \end{matrix}\right]= \left[\begin{matrix} y_1\\y_2\\\vdots\\y_N \end{matrix}\right] ⎣⎢⎢⎢⎡x11x21⋮xN1x12x22⋮xN2……⋱…x1nx2n⋮xNn⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡a1a2⋮an⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡y1y2⋮yN⎦⎥⎥⎥⎤
符号表示矩阵乘法:
X
N
×
n
a
n
×
1
=
Y
N
×
1
X_{N\times n}a_{n\times 1}=Y_{N\times 1}
XN×nan×1=YN×1
i.当
N
=
n
N=n
N=n,且
X
N
×
n
X_{N\times n}
XN×n可逆时,
a
=
X
−
1
Y
a=X^{-1}Y
a=X−1Y
ii.当
N
≠
n
N\neq n
N=n时(一般情况下N和n不相等),最小二乘法计算损失函数(loss):
m
i
n
∣
∣
X
a
−
Y
∣
∣
2
=
m
i
n
J
min||Xa-Y||^2=minJ
min∣∣Xa−Y∣∣2=minJ
(这里为2-范数,即||Xa-Y||表示Xa-Y矩阵中每个元素的平方和再开平方根。)
4.求损失函数 J J J
矩阵的结构: X N n , a n 1 , y N 1 X_{Nn},a_{n1},y_{N1} XNn,an1,yN1
i. 如果
X
N
n
X_{Nn}
XNn可逆,则
N
=
n
N=n
N=n,此时:
X
N
×
n
a
n
×
1
=
Y
N
×
1
X_{N\times n}a_{n\times 1}=Y_{N\times 1}
XN×nan×1=YN×1
a
n
×
1
=
X
N
×
n
−
1
Y
N
×
1
a_{n\times 1}=X_{N\times n}^{-1}Y_{N\times 1}
an×1=XN×n−1YN×1
ii.如果 N ≠ n N\neq n N=n则 X N n X_{Nn} XNn不可逆,方程 X N × n a n × 1 = Y N × 1 X_{N\times n}a_{n\times 1}=Y_{N\times 1} XN×nan×1=YN×1不一定有解,所以就要让预测值Xa和实际值Y的差距尽量小,所有要让 X a − Y Xa-Y Xa−Y的范数尽可能小,即: m i n ∣ ∣ X a − Y ∣ ∣ 2 = m i n J min||Xa-Y||^2=minJ min∣∣Xa−Y∣∣2=minJ
对 J J J求导: ∂ J ∂ a = X T ( X a − Y ) \frac{\partial J}{\partial a}=X^T(Xa-Y) ∂a∂J=XT(Xa−Y)
即: X T X a = X Y X^TXa=X^Y XTXa=XY
此时要分情况讨论: X T X X^TX XTX是否可逆
1.N>n时(样本数大于参数维度),如N=5,n=3,
(
X
T
X
)
3
×
3
(X^TX)_{3\times3}
(XTX)3×3一般是可逆的
此时:
a
=
(
X
T
X
)
−
1
X
T
Y
a=(X^TX)^{-1}X^TY
a=(XTX)−1XTY
(
X
T
X
)
−
1
X
T
(X^TX)^{-1}X^T
(XTX)−1XT是伪逆。
2.N<n时(样本数小于参数维度,参数太多,样本数不足,模型过于复杂,会出现过拟合现象),如N=5,n=3,
要解决过拟合的问题,可以加入正则项:
J
=
∣
∣
X
a
−
Y
∣
∣
2
+
λ
∣
∣
a
∣
∣
2
=
J=||Xa-Y||^2+\lambda||a||^2=
J=∣∣Xa−Y∣∣2+λ∣∣a∣∣2=
λ
∣
∣
a
∣
∣
2
\lambda||a||^2
λ∣∣a∣∣2为正则项
则:
∂
J
∂
a
=
X
T
(
X
a
−
Y
)
+
λ
a
=
0
\frac{\partial J}{\partial a}=X^T(Xa-Y)+\lambda a=0
∂a∂J=XT(Xa−Y)+λa=0
K
=
X
a
−
Y
K=Xa-Y
K=Xa−Y为N行1列的向量,
求列向量的模:
∣
∣
K
∣
∣
=
K
⃗
⋅
K
⃗
=
X
T
X
||K||=\sqrt {\vec {K}\cdot\vec {K}}=\sqrt {X^TX}
∣∣K∣∣=K⋅K=XTX
J
=
∣
∣
K
∣
∣
2
=
K
T
K
J=||K||^2=K^TK
J=∣∣K∣∣2=KTK
所以:
J
=
J
(
a
)
=
∣
∣
K
∣
∣
2
=
K
T
K
=
(
x
a
−
y
)
T
(
x
a
−
y
)
=
(
a
T
x
T
−
y
T
)
(
x
a
−
y
)
=
a
T
x
T
x
a
−
a
T
x
T
y
−
y
T
x
a
+
y
T
y
J=J(a)=||K||^2=K^TK=(xa-y)^T(xa-y)=(a^Tx^T-y^T)(xa-y)=a^Tx^Txa-a^Tx^Ty-y^Txa+y^Ty
J=J(a)=∣∣K∣∣2=KTK=(xa−y)T(xa−y)=(aTxT−yT)(xa−y)=aTxTxa−aTxTy−yTxa+yTy
(矩阵转置的性质:
(
A
+
B
)
T
=
A
T
+
B
T
,
(
A
B
)
T
=
B
T
A
T
(A+B)^T=A^T+B^T,(AB)^T=B^TA^T
(A+B)T=AT+BT,(AB)T=BTAT)
(J看成a的函数,因为要拟合的是储存有系数信息的a矩阵)
4.对损失函数 J J J求导
求导:
J
=
J
(
a
)
=
a
T
x
T
x
a
−
a
T
x
T
y
−
y
T
x
a
+
y
T
y
J=J(a)=a^Tx^Txa-a^Tx^Ty-y^Txa+y^Ty
J=J(a)=aTxTxa−aTxTy−yTxa+yTy
第一项:
∂
a
T
x
T
x
a
∂
a
=
(
x
T
x
+
(
x
T
x
)
T
)
a
=
2
x
T
x
a
\frac{\partial a^Tx^Txa}{\partial a}=(x^Tx+(x^Tx)^T)a=2x^Txa
∂a∂aTxTxa=(xTx+(xTx)T)a=2xTxa,
(
x
T
x
为
A
,
a
为
x
x^Tx为A,a为x
xTx为A,a为x,
x
T
x
x^Tx
xTx为对称矩阵)
(矩阵求导公式: f ( x ) = x T A x , ∂ f ( x ) ∂ x = ∂ ( x T A x ) ∂ x = A x + A T x = ( A + A T ) x f(x)=x^TAx,\frac{\partial f(x)}{\partial x}=\frac{\partial (x^TAx)}{\partial x}=Ax+A^Tx=(A+A^T)x f(x)=xTAx,∂x∂f(x)=∂x∂(xTAx)=Ax+ATx=(A+AT)x,当 A A A为对称矩阵时, ∂ ( x T A x ) ∂ x = 2 A x \frac{\partial (x^TAx)}{\partial x}=2Ax ∂x∂(xTAx)=2Ax )
第二项:
a
T
x
T
y
=
a
T
(
x
T
y
)
=
(
x
T
y
)
T
a
=
y
T
x
a
a^Tx^Ty=a^T(x^Ty)=(x^Ty)^Ta=y^Txa
aTxTy=aT(xTy)=(xTy)Ta=yTxa,与第三项相同
第三项:
∂
y
T
x
a
∂
a
=
∂
[
(
x
T
y
)
T
a
]
∂
a
=
x
T
y
\frac{\partial y^Txa}{\partial a}=\frac{\partial [(x^Ty)^Ta]}{\partial a}=x^Ty
∂a∂yTxa=∂a∂[(xTy)Ta]=xTy,
因为
y
N
1
y_{N1}
yN1,
y
1
N
T
y^T_{1N}
y1NT,
x
N
n
x_{Nn}
xNn,则
(
y
T
x
)
1
n
(y^Tx)_{1n}
(yTx)1n;
a
n
1
a_{n1}
an1,则
(
y
T
x
)
a
(y^Tx)a
(yTx)a为1x1的标量;
因为
a
n
1
a_{n1}
an1是列向量,而
(
y
T
x
)
1
n
(y^Tx)_{1n}
(yTx)1n不是列向量,不能用列向量求导公式:见例3
所以取其转置:
(
x
T
y
)
n
1
(x^Ty)_{n1}
(xTy)n1,
(
x
T
y
)
1
n
T
(x^Ty)^T_{1n}
(xTy)1nT,
a
n
1
a_{n1}
an1,所以
(
x
T
y
)
T
a
(x^Ty)^Ta
(xTy)Ta为1x1的标量
(
x
T
y
)
n
1
(x^Ty)_{n1}
(xTy)n1为列向量,可用列向量求导公式:
∂
y
T
x
a
∂
a
=
∂
[
(
x
T
y
)
T
a
]
∂
a
=
x
T
y
\frac{\partial y^Txa}{\partial a}=\frac{\partial [(x^Ty)^Ta]}{\partial a}=x^Ty
∂a∂yTxa=∂a∂[(xTy)Ta]=xTy,
第四项:
y
T
y
y^Ty
yTy为常数项,求导为0.
综上:
∂
J
∂
a
=
2
x
T
x
a
−
2
x
T
y
\frac{\partial J}{\partial a}=2x^Txa-2x^Ty
∂a∂J=2xTxa−2xTy,
令
J
=
0
J=0
J=0,则有:
x
T
x
a
=
x
T
y
x^Txa=x^Ty
xTxa=xTy