推导正规方程(Normal Equation)通常是在线性回归的上下文中进行的。线性回归的目标是找到一个线性模型 h θ ( x ) = θ T x h_\theta(x) = \theta^T x hθ(x)=θTx,使得模型的预测值与实际值之间的差异(通常是均方误差)最小。
以下是推导正规方程的详细步骤,每一步都会说明所依据的公式或原理:
1. 定义损失函数
线性回归的损失函数通常是均方误差(Mean Squared Error, MSE):
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 J(θ)=2m1∑i=1m(hθ(x(i))−y(i))2
其中:
- m m m 是样本数量。
- x ( i ) x^{(i)} x(i) 是第 i i i 个样本的特征向量。
- y ( i ) y^{(i)} y(i) 是第 i i i 个样本的实际值。
- h θ ( x ( i ) ) h_\theta(x^{(i)}) hθ(x(i)) 是模型对第 i i i 个样本的预测值。
- θ \theta θ 是模型的参数向量。
2. 展开损失函数
将 h θ ( x ( i ) ) h_\theta(x^{(i)}) hθ(x(i)) 替换为 θ T x ( i ) \theta^T x^{(i)} θTx(i),并将损失函数展开:
J ( θ ) = 1 2 m ∑ i = 1 m ( θ s h i z i T x ( i ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (\theta^shiziT x^{(i)} - y^{(i)})^2 J(θ)=2m1∑i=1m(θshiziTx(i)−y(i))2
在推导正规方程的过程中,对损失函数求导是一个关键步骤。这里我们将详细说明如何使用矩阵微积分来求导。
首先,回顾损失函数的向量化表示:
J ( θ ) = 1 2 m ( X θ − y ) T ( X θ − y ) J(\theta) = \frac{1}{2m} (X\theta - y)^T (X\theta - y) J(θ)=2m1(Xθ−y)T(Xθ−y)
J ( θ ) = 1 2 m [ ( θ T X T − y T ) ( X θ − y ) ] J(\theta) = \frac{1}{2m} \left[ (\theta^T X^T - y^T)(X\theta - y) \right] J(θ)=2m1[(θTXT−yT)(Xθ−y)] 依据矩阵转置公式: ( A + B ) T = A T + B T (A+B)T=A^T+B^T (A+B)T=AT+BT, ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT。
= 1 2 m [ θ T X T X θ − θ T X T y − y T X θ + y T y ] = \frac{1}{2m} \left[ \theta^T X^T X \theta - \theta^T X^T y - y^T X \theta + y^T y \right] =2m1[θTXTXθ−θTXTy−yTXθ+yTy] 乘法展开
- 求导 :
我们的目标是找到使 J ( θ ) J(\theta) J(θ) 最小的 θ \theta θ。为此,我们需要对 J ( θ ) J(\theta) J(θ) 关于 θ \theta θ 求导。 因为最开始我们的式子 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 J(θ)=2m1∑i=1m(hθ(x(i))−y(i))2 是一个二次方程,所以他是一个凸函数,在导数为0的时候有最小值。
现在,我们对上式中的每一项关于 θ \theta θ 求导。
- 对于 θ T X T X θ \theta^T X^T X \theta θTXTXθ:
使用矩阵微积分的规则, d d θ ( θ T A θ ) = 2 A θ \frac{d}{d\theta} (\theta^T A \theta) = 2A\theta dθd(θTAθ)=2Aθ(其中 A A A 是对称矩阵)。
因此, d d θ ( θ T X T X θ ) = 2 X T X θ \frac{d}{d\theta} (\theta^T X^T X \theta) = 2X^T X \theta dθd(θTXTXθ)=2XTXθ。
- 对于 − θ T X T y -\theta^T X^T y −θTXTy 和 − y T X θ -y^T X \theta −yTXθ:
这两项是标量的转置,它们实际上是相等的(只是符号相反)。我们可以将它们合并为一个项( − 2 θ T X T y -2\theta^T X^T y −2θTXTy),并注意到 d d θ ( − θ T a ) = − a \frac{d}{d\theta} (-\theta^T a) = -a dθd(−θTa)=−a(其中 a a a 是常数向量, 这里a是 X T y X^Ty XTy)。 为什么这两项相等呢? 读者可以自行找三个矩阵乘一下试试, 为什么。 − θ T X T y -\theta^T X^T y −θTXTy 和 − y T X θ -y^T X \theta −yTXθ 是标量呢?
-
对于 − θ T X T y -\theta^T X^T y −θTXTy:
- θ T \theta^T θT 是一个 1 × n 1 \times n 1×n 的矩阵(或向量)。
- X T X^T XT 是一个 n × m n \times m n×m 的矩阵。
- y y y 是一个 m × 1 m \times 1 m×1 的矩阵(或向量)。
当 θ T \theta^T θT 与 X T X^T XT 相乘时,结果是一个 1 × m 1 \times m 1×m 的矩阵。然后,这个 1 × m 1 \times m 1×m 的矩阵再与 y y y 相乘(这里实际上是行向量与列向量的点积),结果是一个 1 × 1 1 \times 1 1×1 的矩阵,即一个标量。
-
对于 − y T X θ -y^T X \theta −yTXθ:
-
虽然这个表达式的乘法顺序与上面的不同,但根据矩阵乘法的结合律和分配律,以及 X T X^T XT(如果 X X X 是实数矩阵)与 X X X 的对称性(如果 X X X 是对称矩阵,则 X = X T X = X^T X=XT,但在这里我们不需要 X X X 是对称的,只需要关注维度),这个表达式也可以化简为一个标量。然而,更直接的理解是:
- y T y^T yT 是一个 1 × m 1 \times m 1×m 的矩阵。
- X X X 是一个 m × n m \times n m×n 的矩阵。
- θ \theta θ 是一个 n × 1 n \times 1 n×1 的矩阵。
当 y T y^T yT 与 X X X 相乘时,结果是一个 1 × n 1 \times n 1×n 的矩阵。然后,这个 1 × n 1 \times n 1×n 的矩阵再与 θ \theta θ 相乘(同样是行向量与列向量的点积,但在这里是通过矩阵乘法隐含地进行的),结果同样是一个 1 × 1 1 \times 1 1×1 的矩阵,即一个标量。
-
因此, d d θ ( − θ T X T y − y T X θ ) = − X T y − ( X T y ) T = − 2 X T y \frac{d}{d\theta} (-\theta^T X^T y - y^T X \theta) = -X^T y - (X^T y)^T = -2X^T y dθd(−θTXTy−yTXθ)=−XTy−(XTy)T=−2XTy(注意: ( X T y ) T = y T X (X^T y)^T = y^T X (XTy)T=yTX,但在这里我们不需要转置,因为 X T y X^T y XTy 已经是一个与 θ \theta θ 兼容的向量)。
- 组合导数:
将上述导数组合起来,得到:
∇ θ J ( θ ) = 1 2 m [ 2 X T X θ − 2 X T y ] \nabla_\theta J(\theta) = \frac{1}{2m} \left[ 2X^T X \theta - 2X^T y \right] ∇θJ(θ)=2m1[2XTXθ−2XTy]
= 1 m [ X T X θ − X T y ] = \frac{1}{m} \left[ X^T X \theta - X^T y \right] =m1[XTXθ−XTy]
令导数等于零
为了找到使损失函数最小的 θ \theta θ,我们令导数等于零:
1 m [ X T X θ − X T y ] = 0 \frac{1}{m} \left[ X^T X \theta - X^T y \right] = 0 m1[XTXθ−XTy]=0
X T X θ − X T y = 0 X^T X \theta - X^T y = 0 XTXθ−XTy=0
X T X θ = X T y X^T X \theta = X^T y XTXθ=XTy
如果 X T X X^T X XTX 是可逆的,我们可以解出 θ \theta θ:
θ = ( X T X ) − 1 X T y \theta = (X^T X)^{-1} X^T y θ=(XTX)−1XTy
这一步推导过程如下:
在推导正规方程的过程中,我们得到了一个线性方程组:
X T X θ = X T y X^T X \theta = X^T y XTXθ=XTy
这个方程组是一个 n × n n \times n n×n 的矩阵 X T X X^T X XTX 与一个 n × 1 n \times 1 n×1 的向量 θ \theta θ 的乘积等于另一个 n × 1 n \times 1 n×1 的向量 X T y X^T y XTy。
为什么可逆就能求出来结果?
-
定义与性质 :
一个矩阵 A A A 是可逆的(或非奇异的),如果存在一个矩阵 A − 1 A^{-1} A−1,使得 A A − 1 = A − 1 A = I AA^{-1} = A^{-1}A = I AA−1=A−1A=I,其中 I I I 是单位矩阵。可逆矩阵的一个重要性质是,对于任何向量 b b b,线性方程组 A x = b Ax = b Ax=b 都有唯一解 x = A − 1 b x = A^{-1}b x=A−1b。
-
应用到正规方程 :
在我们的情况下, A = X T X A = X^T X A=XTX。如果 X T X X^T X XTX 是可逆的,那么我们可以直接通过乘以 X T X X^T X XTX 的逆矩阵来求解 θ \theta θ:
θ = ( X T X ) − 1 X T y \theta = (X^T X)^{-1} X^T y θ=(XTX)−1XTy
这个表达式给出了 θ \theta θ 的唯一解(在 X T X X^T X XTX 可逆的条件下)。
-
可逆的条件 :
X T X X^T X XTX 可逆的一个充分条件是 X X X 的列向量线性无关(即 X X X 的列满秩)。这意味着 X X X 的列向量不能通过其他列向量的线性组合来表示,从而保证了 X T X X^T X XTX 是一个满秩矩阵,因此是可逆的。 -
求解过程 :
当 X T X X^T X XTX 可逆时,我们实际上是在执行以下步骤来求解 θ \theta θ:
- 首先,计算 X T y X^T y XTy,这是一个线性变换,将 y y y 投影到 X X X 的列空间上(或者更准确地说,是 X X X 的行空间,因为 X T X^T XT 是 X X X 的转置)。
- 然后,通过乘以 ( X T X ) − 1 (X^T X)^{-1} (XTX)−1,我们实际上是在"撤销" X T X X^T X XTX 对某个向量所做的变换,从而找到原始参数向量 θ \theta θ。
总结
在求导过程中,我们使用了矩阵微积分的规则,特别是关于二次型和线性项的导数。通过仔细展开和组合这些项,我们得到了损失函数关于 θ \theta θ 的导数,并令其等于零来找到最优解。
以上过程通过提问文心一言获得,目前在这方面最好用的大模型。