本文章记录通过矩阵最小二乘法,求解多元方程组的线性回归。
在二元线性回归的中,未知参数有 C、D,及方程式 y = C + D x y = C + Dx y=C+Dx 中的参数,可得到如下矩阵表达式:
A [ C D ] = A b = Y A\left[ \begin{matrix} C \\ D \end{matrix} \right]=Ab=Y A[CD]=Ab=Y
其中 b 为 [ C , D ] T [C, D]^T [C,D]T,Y 的维度为方程组个数 m,表达式为 [ y 1 , y 2 , . . . , y m ] T [y_1, y_2, ..., y_m]^T [y1,y2,...,ym]T。
误差表达式
l = ∑ i = 1 n ( y i − y i ^ ) 2 = ∑ i = 1 n ( y i − b T X ) 2 (1) l = \sum_{i=1}^{n} (y_i - \hat{y_i})^2 = \sum_{i=1}^{n} (y_i -b^TX)^2\tag{1} l=i=1∑n(yi−yi^)2=i=1∑n(yi−bTX)2(1)
其中
X = [ 1 x i ] X=\left[ \begin{matrix} 1 \\ x_i \end{matrix} \right] X=[1xi]
拟合出来的直线可能过原点,也可能不过原点。
我们先只考虑过原点的拟合,那么上式中的 C 为零,也就是 b = D 为单维。式(1)中的 X = x i x_i xi ,此时式(1)等同于如下:
l ( b ) = ∑ i = 1 n ( y i − y i ^ ) 2 = ∑ i = 1 n ( y i − b x i ) 2 (2) l(b) = \sum_{i=1}^{n} (y_i - \hat{y_i})^2 = \sum_{i=1}^{n} (y_i -bx_i)^2\tag{2} l(b)=i=1∑n(yi−yi^)2=i=1∑n(yi−bxi)2(2)
上述示例比较简单,因为 x, y 均为一维的,也就是 y = C + Dx 中,x,y均为标量。那么 x 是否可以推广到多维呢?答案当然是可以的。
这里我们依然只考虑过原点的拟合,也就抹去了式子中的 C。
因为 C 可以认为是 二维X 中的一个维度始终是1,后续将 C 融合到 X 中一起考虑了
令:
y = b 1 x 1 + b 2 x 2 + . . . + b n x n = b T [ x 1 x 2 . . . x n ] = b T X y= b_1x_1 + b_2x_2 + ... + b_nx_n =b^T\left[ \begin{matrix} x_1 \\ x_2 \\ ... \\ x_n \end{matrix} \right]=b^TX y=b1x1+b2x2+...+bnxn=bT x1x2...xn =bTX
多个方程组时,
y 1 = b T X 1 y_1 = b^TX_1 y1=bTX1
y 2 = b T X 2 y_2 = b^TX_2 y2=bTX2
...
y m = b T X m y_m = b^TX_m ym=bTXm
这里的 b T X m 也可以写成 X m T b b^TX_m 也可以写成 X_m^Tb bTXm也可以写成XmTb
则有:
Y = [ y 1 y 2 . . . y m ] , b = [ b 1 b 2 . . . b n ] , X = [ X 1 T X 2 T . . . X n T ] Y=\left[ \begin{matrix} y_1 \\ y_2 \\ ... \\ y_m \end{matrix} \right], b = \left[ \begin{matrix} b_1 \\ b_2 \\ ... \\ b_n \end{matrix} \right], X = \left[ \begin{matrix} X_1^T \\ X_2^T \\ ... \\ X_n^T \\ \end{matrix} \right] Y= y1y2...ym ,b= b1b2...bn ,X= X1TX2T...XnT
其中
X 1 T = [ x 11 , x 12 , . . . , x 1 n ] X_1^T = [x_{11}, x_{12}, ..., x_{1n}] X1T=[x11,x12,...,x1n]
可以理解 x 11 , x 12 , x 1 n x_{11}, x_{12}, x_{1n} x11,x12,x1n 分别对应不同的特征
进一步可得到损失函数的表达式为:
l ( b ) = ∑ i = 1 n ( y i − X i T b ) 2 (3) l(b) = \sum_{i=1}^{n} (y_i -X_i^Tb)^2\tag{3} l(b)=i=1∑n(yi−XiTb)2(3)
整个求解过程即为对式子 (3)求最小化
则有:
l ( b ) = ( Y − X b ) T ( Y − X b ) l(b) = (Y - Xb)^T(Y - Xb) l(b)=(Y−Xb)T(Y−Xb)
化简,
l ( b ) = ( Y T − b T X T ) ( Y − X b ) = Y T Y − Y T X b − b T X T Y + b T X T X b = Y T Y − 2 Y T X b + b T X T X b (4) \begin{aligned} l(b)&=(Y^T - b^TX^T)(Y - Xb) \\ &=Y^TY - Y^TXb - b^TX^TY + b^TX^TXb \\ &=Y^TY - 2Y^TXb + b^TX^TXb \end{aligned}\tag4 l(b)=(YT−bTXT)(Y−Xb)=YTY−YTXb−bTXTY+bTXTXb=YTY−2YTXb+bTXTXb(4)
说明:式(4)中,由于维度 Y T Y^T YT 为 1*m,X 为 m*n ,b 为 n*1
可知 Y T X b Y^TXb YTXb 的维度为 1*1 即标量。同理 b T X T Y b^TX^TY bTXTY 也是标量,且为前者转置,因此可以做合并做 2倍表示。
对式(4)中的各项对 b 进行求导,
d ( Y T Y ) d ( b ) = [ 0 0 . . . 0 m ] \frac{d(Y^TY)}{d(b)} = \left[ \begin{matrix} 0 \\ 0 \\ ... \\ 0_m \end{matrix} \right] d(b)d(YTY)= 00...0m
2 d ( Y T X b ) d ( b ) = 2 ( Y T X ) T = 2 X T Y \frac{2d(Y^TXb)}{d(b)} = 2(Y^TX)^T = 2X^TY d(b)2d(YTXb)=2(YTX)T=2XTY
补充:标量对向量求导,有公式 d ( A T X ) d ( X ) = d ( X T A ) d ( X ) = A \frac{d(A^TX)}{d(X)} = \frac{d(X^TA)}{d(X)} = A d(X)d(ATX)=d(X)d(XTA)=A
d ( b T X T X b ) d ( b ) = ( X T X + X T X ) b = 2 X T X b \frac{d(b^TX^TXb)}{d(b)} = (X^TX + X^TX)b = 2X^TXb d(b)d(bTXTXb)=(XTX+XTX)b=2XTXb
补充:向量求导公式 d ( X T A X ) d ( X ) = ( A + A T ) X \frac{d(X^TAX)}{d(X)} = (A + A^T) X d(X)d(XTAX)=(A+AT)X
将上面计算出来的分量求导进行汇总,可以得到损失函数的导数如下:
d l ( b ) d b = − 2 X T Y + 2 X T X b (5) \frac{dl(b)}{db} = -2X^TY + 2X^TXb \tag5 dbdl(b)=−2XTY+2XTXb(5)
令式(5)等于零,以求得最优参数 b
− 2 X T Y + 2 X T X b = 0 -2X^TY + 2X^TXb = 0 −2XTY+2XTXb=0
可推出
X T Y = X T X b X^TY = X^TXb XTY=XTXb
b ^ = ( X T X ) − 1 X T Y \hat{b} = (X^TX)^{-1}X^TY b^=(XTX)−1XTY
以上即为最小二乘法对多元函数的回归过程。
至此结束~