机器学习:正规方程(Normal Equation)的推导

在coursera上看了Andrew Ng的《Machine Learning》课程,里面讲到了正规方程(Normal Equation),现在在此记录一下推导过程。
假设函数(Hypothesis Function)为:

hθ(x)=θ0+θ1x1+θ2x2++θnxn h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n

此处我们可以令 x0=1 x 0 = 1 .
代价函数(Cost Function):
J(θ)=J(θ0,,θn)=12mi=1m(hθ(x(i))y(i))2 J ( θ ) = J ( θ 0 , … , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2

我们想要代价函数的最小解,对代价函数进行求导。因为对于向量我们有 zTz=iz2i z T z = ∑ i z i 2 ,所以:
J(θ)=12m(Xθy)T(Xθy) J ( θ ) = 1 2 m ( X θ − y ) T ( X θ − y )

因为 12m 1 2 m 部分对最终的解没影响,为了便于书写和计算,我们可以先将这部分舍去。对方程的转置进行化简:
J(θ)=(θTXTyT)(Xθy) J ( θ ) = ( θ T X T − y T ) ( X θ − y )

J(θ)=θTXTXθ(Xθ)TyyTXθ+yTy J ( θ ) = θ T X T X θ − ( X θ ) T y − y T X θ + y T y

因为 xθy x θ 和 y 都是矢量,所以这两者相乘先后顺序没有关系,所以可以化简成:
J(θ)=θTXTXθ2(Xθ)Ty+yTy J ( θ ) = θ T X T X θ − 2 ( X θ ) T y + y T y

接着方程 J(θ)θ J ( θ ) 对 θ 进行求导:
θJ(θ)=2XTXθ2XTy=0 ∂ ∂ θ J ( θ ) = 2 X T X θ − 2 X T y = 0
1
θJ(θ)=0θ ∂ ∂ θ J ( θ ) = 0 时 , 得 到 最 合 适 θ
XTXθ=XTy X T X θ = X T y

两边同时乘以 XTX X T X 的逆矩阵,得:
θ=(XTX)1XTy θ = ( X T X ) − 1 X T y

此即为正规方程。当 θ=(XTX)1XTy θ = ( X T X ) − 1 X T y 时,代价方程有最优解。


  1. 关于矩阵、向量、标量的一些求导https://blog.csdn.net/xidianliutingting/article/details/51673207
### 机器学习正规方程推导过程 在机器学习领域,特别是线性回归问题中,目标是最小化预测值与真实值之间的差距。为了实现这一目标,可以采用梯度下降方法迭代更新参数,也可以通过解析方式一次性计算最优参数解——这就是所谓的正规方程。 #### 矩阵运算基础知识 对于后续推导过程中涉及的一些基本概念和公式: - **矩阵转置**:如果有一个大小为$m\times n$ 的矩阵 $A=[a_{ij}]$ ,那么它的转置就是$n\times m$ 维的新矩阵 ${\bf A}^\top =[a_{ji}]$ 。这意味着原始矩阵中的每一行变成了新矩阵的一列[^3]。 - **求导法则**:给定一个关于向量 $\theta$ 的函数$f(\theta)$ , 对于该函数相对于$\theta_i$ 进行偏微分得到的结果构成一个新的向量形式${{\partial f}\over {\partial \theta}}=(f'_1,f'_2,\cdots,f'_n)^T$ 。 #### 构建代价函数并求解最优点 定义假设函数$h_\theta(x)=X\cdot\theta$,其中$X$表示输入特征组成的样本集矩阵,$\theta$代表待估计权重系数向量;再设定损失函数$L=\frac{1}{2}(y-X\theta)(y-X\theta)^T$来衡量模型输出与实际标签间的偏差程度。这里乘以因子$\frac{1}{2}$是为了简化之后可能出现的二次项系数[^4]。 对上述表达式按照变量$\theta_j(j=0,...,p)$分别做偏导数操作可得: $$J'(\theta)=-X^{T}(Y-X\theta)+C$$ 为了让这个导数值等于零从而获得局部极小值点,则有: $$ X^{T}(Y-X\theta)=0 $$ 进一步整理得出最终结论即为我们所熟知的正规方程形式: $$ \hat{\theta} =(X^{T}X)^{-1}X^{T}Y $$ 这表明只要能获取到训练数据对应的自变量矩阵及其因变量向量就可以直接算出最佳拟合直线斜率以及截距等参数而无需像随机梯度下降那样逐步逼近全局最优解了。 ```python import numpy as np def normal_equation(X, y): theta_hat = np.linalg.inv(X.T @ X) @ X.T @ y return theta_hat ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烤粽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值