正规方程

本文探讨了机器学习中两种求解最优参数的方法:梯度下降法和正规方程。梯度下降通过迭代逐步逼近最优解,而正规方程能够直接计算出最优解。文章还讨论了在不同场景下选择合适方法的策略。

区别与使用迭代的梯度下降法,正规方程可以一次性求出最有解(基本只需要一步),
在这里插入图片描述
到目前为止,我们一直使用梯度下降法求最优解,为了最小化代价函数,使用了迭代算法,经过梯度下降的多次迭代来收敛到全局最优解,相反,正规方程提供了一种求θ的解析解法,所以可以一次性求出最优解
先举个例子
J(θ)=aθ2+bθ+c
吧θ看成一个数字而不是一个向量,不用解一元二次的知识,学过微积分的我们想的是对j(θ)求导,导数=0,解得θ。
可是,θ不是一个数字,它代表一个向量,J是关于向量的函数,学过偏导数后,我们知道了要对每一个方向求偏导,这样令各个偏导后的式子都为0,借得所有的值,
在这里插入图片描述
这就是θ得最优解
换一种方法
在这里插入图片描述
在这里插入图片描述

怎么理解这个函数呢?
首先(xT*x)-1是(xT*x)的逆矩阵(不是转置,这不一样),
在这里插入图片描述
用python语言实现矩阵的转置和逆。

在以前,特征缩放和特征变量在相似范围内,如果你使用正规方程,那么就不需要特征缩放。
最后,何时用梯度下降,何时用正规方程。假如你拥有m个训练样本,n个特征变量,梯度下降的缺点是你需要选择学习速率α,这通常表示你需要运行多次尝试不同的学习速率α,找到运行效果最好的那个,梯度下降的另一个缺点是你需要经过更多次的迭代,计算会变慢。可是梯度下降法在特诊变量很多的情况下,也能运行的相当好,至于特征方程,要有这么一步运算(xTx)-1,这是一个nn维度的运算,并且在求解逆矩阵时,通常只比nnn快一点,所以在特征量多的时候,正规方程会变得很慢,比梯度下降慢。所以当特征变量n上万时,便开始考虑使用梯度下降更有优势。

### 正规方程法在机器学习与数学优化中的应用 #### 1. 正规方程法概述 正规方程是一种用于求线性回归问题的析方法,它通过矩阵运算直接计算出最优参数值。这种方法的核心在于通过对代价函数 \( J(\theta) \) 的偏导数设置为零来获得参数的最佳估计[^1]。 在线性回归中,假设输入数据集表示为矩阵 \( X \),目标变量为向量 \( y \),那么可以通过以下公式得到最佳参数 \( \theta \): \[ \theta = (X^T X)^{-1} X^T y \] 此公式的推导基于最小化均方误差的目标函数,并利用了矩阵微分的知识[^5]。 --- #### 2. 正规方程法的应用场景 正规方程法适用于小型至中型的数据集,在这些情况下,矩阵操作的时间复杂度是可以接受的。然而,当特征数量较大时(例如超过几万),由于需要计算逆矩阵 \( (X^T X)^{-1} \),时间复杂度会显著增加,因此不建议在这种情形下使用正规方程法[^4]。 以下是正规方程的一些典型应用场景: - **数据分析**:快速获取线性关系下的模型参数。 - **科学研究**:构建简单的因果关系模型。 - **工程实践**:处理低维空间内的预测任务。 --- #### 3. 正规方程的推导过程 正规方程的推导依赖于以下几个关键步骤: 1. 定义代价函数 \( J(\theta) \) 表达式: \[ J(\theta) = \frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})^2 \] 这里 \( h_\theta(x) = \theta^T x \)[^3]。 2. 将代价函数改写成矩阵形式: \[ J(\theta) = \frac{1}{2m} \|X\theta - y\|^2_2 \][^5]。 3. 对 \( J(\theta) \) 关于 \( \theta \) 求导并令其等于零: \[ \nabla_\theta J(\theta) = \frac{1}{m} X^T(X\theta - y) = 0 \][^5]。 4. 得最终的正规方程表达式: \[ \theta = (X^T X)^{-1} X^T y \][^5]。 这一过程中涉及到了矩阵转置、矩阵乘法以及矩阵求逆等基本概念。 --- #### 4. 实现代码示例 下面是一个 Python 中实现正规方程法的小例子: ```python import numpy as np def normal_equation(X, y): theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y) return theta # 示例数据 X = np.array([[1, 1], [1, 2], [1, 3]]) y = np.array([1, 2, 3]) # 调用正规方程法 theta = normal_equation(X, y) print("Optimal parameters:", theta) ``` 这段代码展示了如何通过 NumPy 库完成正规方程的计算[^1]。 --- #### 5. 局限性和改进方向 尽管正规方程具有简单直观的优点,但它也存在一些局限性: - 当样本数量较多或维度较高时,\( (X^T X)^{-1} \) 的计算成本可能过高。 - 如果 \( X^T X \) 是奇异矩阵,则无法直接求逆,需采用正则化手段加以修正。 针对这些问题,梯度下降算法通常被作为一种替代方案提出,尤其是在大规模数据集中表现更为优越。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值