线性回归(Linear Regression)中的数学推导--到损失函数求导

博客围绕使用线性规划根据样本x预测y展开。先给出假设条件,将预测方程写成矩阵形式,接着探讨不同情况下损失函数J的求解,包括矩阵可逆与不可逆的情形,还分析了样本数与参数维度不同时的处理方法,最后对损失函数J进行求导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.假设条件

x1,x2,…,xN,xi∈Rnx_1,x_2,\ldots,x_N,x_i\in R^nx1,x2,,xN,xiRn (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,yiR1 (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]x11x21xN1x12x22xN2x1nx2nxNna1a2an=y1y2yN

符号表示矩阵乘法:
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=X1Y

ii.当N≠nN\neq nN=n时(一般情况下N和n不相等),最小二乘法计算损失函数(loss)
min∣∣Xa−Y∣∣2=minJmin||Xa-Y||^2=minJminXaY2=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×n1YN×1

ii.如果N≠nN\neq nN=nXNnX_{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-YXaY的范数尽可能小,即:min∣∣Xa−Y∣∣2=minJmin||Xa-Y||^2=minJminXaY2=minJ

JJJ求导:∂J∂a=XT(Xa−Y)\frac{\partial J}{\partial a}=X^T(Xa-Y)aJ=XT(XaY)

即: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=XaY2+λa2=
λ∣∣a∣∣2\lambda||a||^2λa2为正则项
则:
∂J∂a=XT(Xa−Y)+λa=0\frac{\partial J}{\partial a}=X^T(Xa-Y)+\lambda a=0aJ=XT(XaY)+λa=0

K=Xa−YK=Xa-YK=XaY为N行1列的向量,
求列向量的模:
∣∣K∣∣=K⃗⋅K⃗=XTX||K||=\sqrt {\vec {K}\cdot\vec {K}}=\sqrt {X^TX}K=KK=XTX
J=∣∣K∣∣2=KTKJ=||K||^2=K^TKJ=K2=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)=K2=KTK=(xay)T(xay)=(aTxTyT)(xay)=aTxTxaaTxTyyTxa+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)=aTxTxaaTxTyyTxa+yTy

第一项:
∂aTxTxa∂a=(xTx+(xTx)T)a=2xTxa\frac{\partial a^Tx^Txa}{\partial a}=(x^Tx+(x^Tx)^T)a=2x^TxaaaTxTxa=(xTx+(xTx)T)a=2xTxa,
(xTx为A,a为xx^Tx为A,a为xxTxAaxxTxx^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,xf(x)=x(xTAx)=Ax+ATx=(A+AT)x,当AAA为对称矩阵时,∂(xTAx)∂x=2Ax\frac{\partial (x^TAx)}{\partial x}=2Axx(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^TyayTxa=a[(xTy)Ta]=xTy,

因为yN1y_{N1}yN1y1NTy^T_{1N}y1NTxNnx_{Nn}xNn,则(yTx)1n(y^Tx)_{1n}(yTx)1nan1a_{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^TyayTxa=a[(xTy)Ta]=xTy,

第四项:
yTyy^TyyTy为常数项,求导为0.

综上:
∂J∂a=2xTxa−2xTy\frac{\partial J}{\partial a}=2x^Txa-2x^TyaJ=2xTxa2xTy,
J=0J=0J=0,则有:
xTxa=xTyx^Txa=x^TyxTxa=xTy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值