数据分析---最小二乘法和梯度下降法

本文详细介绍了最小二乘法与梯度下降法的基本概念及其在数据分析中的应用。最小二乘法通过最小化误差平方和来寻找数据的最佳函数匹配,而梯度下降法则是一种迭代优化算法,用于求解函数的极小值。

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

       最近在整理数据优化方面的知识,看的多了最小二乘法和梯度下降法之类的词语经常出现,很多算法都有用到类似方法,或者很多算法看起来和这些似曾相识,比如BP神经网络,支持向量机,等等分类回归方法。可见这最小二乘法和梯度下降法是很基础的方法,很值得好好复习下,不然很多东西剪不断,理还乱。

        首先科普下,这两个基本的慨念,怕自己忘记了。

       最小二乘法(又称最小平方法)是一种数学优化技术或者说优化准则,所以也有叫做最小二乘准则。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

       梯度下降法是一个最优化算法,通常也称为最速下降法。最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽然现在已经不具有实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的。最速下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。


      最小二乘法原理(下面摘自网上,具体可百度,公式未一一推导)

在物理实验中经常要观测两个有函数关系的物理量。根据两个量的许多组观测数据来确定它们的函数曲线,这就是实验数据处理中的曲线拟合问题。这类问题通常有两种情况:一种是两个观测量x与y之间的函数形式已知,但一些参数未知,需要确定未知参数的最佳估计值;另一种是x与y之间的函数形式还不知道,需要找出它们之间的经验公式。后一种情况常假设x与y之间的关系是一个待定的多项式,多项式系数就是待定的未知参数,从而可采用类似于前一种情况的处理方法。

 

在两个观测量中,往往总有一个量精度比另一个高得多,为简单起见把精度较高的观测量看作没有误差,并把这个观测量选作x,而把所有的误差只认为是y的误差。设xy的函数关系由理论公式

y=fx;c1,c2,……cm          (0-0-1)

给出,其中c1,c2,……cm是m个要通过实验确定的参数。对于每组观测数据(xi,yii=1,2,……,N。都对应于xy平面上一个点。若不存在测量误差,则这些数据点都准确落在理论曲线上。只要选取m组测量值代入式(0-0-1),便得到方程组

                   yi=fx;c1,c2,……cm                   (0-0-2)

式中i=1,2,……,m.求m个方程的联立解即得m个参数的数值。显然N<m时,参数不能确定。在N>m的情况下,式(0-0-2)成为矛盾方程组,不能直接用解方程的方法求得m个参数值,只能用曲线拟合的方法来处理。设测量中不存在着系统误差,或者说已经修正,则y的观测值yi围绕着期望值<fx;c1,c2,……cm> 摆动,其分布为正态分布,则yi的概率密度为

,

式中是分布的标准误差。为简便起见,下面用C代表(c1,c2,……cm)。考虑各次测量是相互独立的,故观测值(y1,y2,……cN)的似然函数

.

取似然函数L最大来估计参数C,应使


取最小值:对于y的分布不限于正态分布来说,式(0-0-3)称为最小二乘法准则。若为正态分布的情况,则最大似然法与最小二乘法是一致的。因权重因子,故式(0-0-3)表明,用最小二乘法来估计参数,要求各测量值yi的偏差的加权平方和为最小。

根据式(0-0-3)的要求,应有


解方程组(0-0-4),即得m个参数的估计值,从而得到拟合的曲线方程。

然而,对拟合的结果还应给予合理的评价。若yi服从正态分布,可引入拟合的x2量,


可以证明,服从自由度v=N-mx2分布,由此可对拟合结果作x2检验。

x2分布得知,随机变量的期望值为N-m。如果由式(0-0-6)计算出接近N-m(例如),则认为拟合结果是可接受的;如果,则认为拟合结果与观测值有显著的矛盾。


很多公式没有显示出来,后面再补上。

有了这个基础,我们很容易知道曲线拟合中最基本和最常用的是直线拟合。设xy之间的函数关系由直线方程

y=a0+a1x                         (0-0-7)

给出。式中有两个待定参数,a0代表截距,a1代表斜率。对于等精度测量所得到的N组数据(xi,yi),i=1,2……,N,xi值被认为是准确的,所有的误差只联系着yi。可以使用最小二乘法把观测数据拟合为直线。


最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。


        梯度下降法原理

       顾名思义,梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)。
其迭代公式为,其中代表梯度负方向,表示梯度方向上的搜索步长。梯度方向我们可以通过对函数求导得到,步长的确定比较麻烦,太大了的话可能会发散,太小收敛速度又太慢。一般确定步长的方法是由线性搜索算法来确定,即把下一个点的坐标ak+1看做是的函数,然后求满足f(ak+1)的最小值的 即可。
因为一般情况下,梯度向量为0的话说明是到了一个极值点,此时梯度的幅值也为0.而采用梯度下降算法进行最优化求解时,算法迭代的终止条件是梯度向量的幅值接近0即可,可以设置个非常小的常数阈值。

那么神马事梯度呢?哈哈,这个可是大有来头。具体的我也不copy了,网上有很多这类慨念,如:http://deepfuture.iteye.com/blog/1593259

里面复习了导数,微分,梯度等等慨念,勾起了很多学习高数的往事,不堪回首啊。


在线性回归中,前提假设是y服从正态分布,而逻辑回归则是服从二项分布的,因为y是逻辑值。所以一定要记住不同的模型,采用不同的方法来处理。

这里摘下 知乎上一段话,挺有意思的:为什么用最小二乘(求残差平方和最小值)来拟合函数?残差可以理解,那为什么是平方和,而不是绝对值或者四次方和?对此,极大似然可以完美解释。
为大量独立样本线性拟合,根据中心极限定理可知,其残差呈高斯分布。也就是说,X确定时,y的可能性呈高斯分布。这时,对于给定的参数θ,我们可以求出P(y|X;θ),表示使用这组θ的情况下,给定一组X,得出这组y的可能性。而关于θ的似然函数可以写为L(θ)=P(y|X;θ),表示已知(X,y)的情况下,θ值出现的可能性。明显的,当L(θ)最大时,θ为最佳拟合参数。求L(θ)最大值时,我们会在结果中发现残差平方和的式子,并且残差平方和最小L(θ)最大。
梯度下降法,是先给定一组系数θ,根据最小二乘法构造一个损失函数J(θ)。然后不断迭代以找出新的θ来使J(θ)更小。最终确定最合适的θ。
   

       综上所述,这两个东西是两个不同方面的东西,最小二乘是通过某种规则,来衡量测量结果和期望值之间的差异,求解模型最优化的过程转为最优化目标函数的过程,这个过程存在的前提就是假设噪声的分布是正态分布。在数据分析的过程中,建立了模型,怎么来求解模型,采用什么方法来优化求解的过程,就是数值优化的方法了,而梯度下降法就是其中之一,其他的还有牛顿法,以及拟牛顿法,等等。

  



### 最小二乘法梯度下降法的区别及其使用场景 #### 方法概述 最小二乘法是一种解析方法,通过直接求解目标函数的极值来获得最优参数。其核心思想是最小化预测值与实际值之间的平方误差总[^1]。而梯度下降法则是一种迭代优化算法,通过对损失函数关于参数的偏导数逐步调整参数直至收敛到局部或全局最优点[^2]。 --- #### 数学表达形式 对于线性回归问题 \( y = X\beta \),其中 \( y \) 是观测值向量,\( X \) 是特征矩阵,\( \beta \) 是待估计参数: - **最小二乘法** 参数可以通过闭式解得到: \[ \hat{\beta} = (X^\top X)^{-1}X^\top y \] 这种方式无需迭代即可一次性得出结果,前提是矩阵 \( X^\top X \) 可逆。 - **梯度下降法** 初始设置随机权重 \( \beta_0 \),然后按照以下更新规则不断逼近最佳解: \[ \beta_{t+1} = \beta_t - \eta \nabla L(\beta_t) \] 其中 \( \eta \) 表示学习率,\( \nabla L(\beta_t) \) 是当前步长下损失函数相对于参数的梯度。 --- #### 计算复杂度分析 - **最小二乘法** 主要涉及矩阵运算,时间复杂度通常为 \( O(n^3) \)(取决于矩阵分解的具体实现)。当样本数量较大或者维度较高时,这种方法可能变得不可行[^4]。 - **梯度下降法** 时间复杂度主要依赖于每次迭代的成本以及达到收敛所需的迭代次数。单次迭代的时间复杂度大约为 \( O(nd) \),其中 \( n \) 是样本数目,\( d \) 是特征维数。因此,在大规模数据集上表现更优。 --- #### 局限性适应范围 - **最小二乘法** 虽然简单高效,但它存在一些明显的局限性: - 当训练集中含有大量噪声点时容易受到干扰; - 对内存需求高,因为需要存储整个设计矩阵并对其进行操作; - 如果 \( X^\top X \) 接近奇异,则可能导致数值不稳定甚至无法求解[^3]。 - **梯度下降法** 相较之下更加灵活通用,但也有一些需要注意的地方: - 存在超参调优问题,比如如何选取合适的学习速率; - 收敛速度受初始条件影响很大; - 在某些情况下可能会陷入鞍点而非真正的最低点。 --- #### 实际应用场景对比 | 特征 | 最小二乘法 | 梯度下降法 | |------|-------------|--------------| | 数据规模 | 小型至中型数据集更适合 | 大型稀疏数据集首选 | | 内存消耗 | 较大 | 更低 | | 执行效率 | 单次运行速度快但不支持增量学习 | 需多次迭代才能完成最终拟合过程 | | 结果精度 | 假设满足正态分布前提下的精确解 | 渐进接近真实值 | 综上所述,选择哪种技术应基于具体任务特点权衡利弊之后决定。 ```python import numpy as np # Example of Least Squares Method Implementation def least_squares(X, y): beta_hat = np.linalg.inv(X.T @ X) @ X.T @ y return beta_hat # Example of Gradient Descent Method Implementation def gradient_descent(X, y, learning_rate=0.01, iterations=1000): m, n = X.shape theta = np.zeros((n,)) for _ in range(iterations): gradients = (-2/m)*np.dot(X.T,(y-np.dot(X,theta))) theta -= learning_rate * gradients return theta ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值