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