最小二乘法与梯度下降(原理)

一、最小二乘法 

损失函数矩阵形式: 

loss=[(h_1(x)-y_1)^2+(h_2(x)-y_2)^2+...(h_n(x)-y_n)^2]/n\\=\frac{1}{n} \textstyle\sum_{i=1}^{n}(h(x_{i})-y_{i})^{2}\\=\frac{1}{n}||(XW-y)||^2\\=\frac{1}{2}||(XW-y)||^2 

令导数loss'=0 ,可解得:W = (X^TX)^{-1}X^Ty 

API :

sklearn.linear_model.LinearRegression()
功能: 普通最小二乘法线性回归, 权重和偏置是直接算出来的,对于数量大的不适用,因为计算量太大,计算量太大的适合使用递度下降法参数:
fit_intercept	bool, default=True是否计算此模型的截距(偏置)。如果设置为False,则在计算中将不使用截距(即,数据应中心化)。
属性:	 
coef_ 回归后的权重系数
intercept_ 偏置print("权重系数为:\n", estimator.coef_)  #权重系数与特征数一定是同样的个数。
print("偏置为:\n", estimator.intercept_)

 二、梯度下降法

正规方程是一种用于求解线性回归模型参数的方法,它通过直接求解使误差平方和最小化的参数值来拟合数据。以下是其优缺点:

  • 优点
    • 无需迭代:与梯度下降等迭代算法不同,正规方程通过直接计算解析解来求解模型参数。它不需要设置学习率、迭代次数等超参数,也不需要多次迭代逼近最优解,从而节省了计算时间和资源,尤其对于小规模数据集,能够快速得到精确的最优解。
    • 全局最优解:正规方程得到的解是基于最小二乘法的全局最优解。只要数据满足一定的条件(如设计矩阵满秩),就能保证得到的参数估计值是使损失函数(误差平方和)最小化的唯一解,不存在陷入局部最优的问题,这在理论上保证了模型的最优性。
    • 数学原理清晰:正规方程的推导基于明确的数学原理,即最小化误差平方和。通过对损失函数求导并令导数为零,得到关于参数的线性方程组,然后求解该方程组得到参数估计值。这种数学原理清晰明了,易于理解和推导,有助于深入理解线性回归模型的本质和求解过程。
  • 缺点
    • 计算复杂度高:正规方程的计算涉及到矩阵的求逆运算,当特征数量较大时(例如),计算矩阵的逆的计算量非常大,时间复杂度为,并且对内存的要求也很高。这使得在处理大规模数据或高维特征数据时,计算成本高昂,甚至可能导致计算无法进行。
    • 对数据条件要求严格:正规方程要求设计矩阵的列向量线性无关,即是满秩矩阵。如果数据中存在多重共线性问题,即某些特征之间存在线性相关关系,那么就不是满秩的,此时矩阵不可逆,无法直接使用正规方程求解。即使接近奇异(行列式接近零),也会导致计算不稳定,参数估计值的误差较大。
    • 缺乏灵活性:正规方程只能用于线性回归模型,并且要求损失函数是平方损失。对于其他类型的模型(如逻辑回归、非线性回归等)或非平方损失函数,正规方程的方法不再适用。相比之下,梯度下降等方法可以通过适当的调整和扩展应用于各种不同的模型和损失函数,具有更强的通用性和灵活性。

 原理:

  • 梯度下降的核心思想是基于函数的梯度信息来寻找函数的最小值。对于一个多元函数,其中是函数的参数向量,梯度表示函数在处变化最快的方向。梯度下降算法通过不断沿着梯度的反方向更新参数,来逐步降低函数的值,直到达到一个局部最小值或全局最小值。

步骤: 

1、Random随机数生成初始W,随机生成一组成正太分布的数值w_0,w_1,w_2....w_n,这个随机是成正太分布的

2、求梯度g,梯度代表曲线某点上的切线的斜率,沿着切线往下就相当于沿着坡度最陡峭的方向下降.

3、if g < 0,w变大,if g >0,w变小(目标左边是斜率为负右边为正 )

4、判断是否收敛,如果收敛跳出迭代,如果没有达到收敛,回第2步再次执行2~4步收敛的判断标准是:随着迭代进行查看损失函数Loss的值,变化非常微小甚至不再改变,即认为达到收敛

5.上面第4步也可以固定迭代次数

 公式:

学习率:

作用

  • 控制参数更新的速度。较大的学习率会使参数更新步伐较大,可能加快模型训练速度,但也可能导致模型无法收敛,甚至使损失函数值上升;较小的学习率能保证算法的稳定性,使模型逐渐收敛到较优解,但训练时间可能会很长。

选择方法

  • 经验值:对于一些常见的模型和数据集,有一些经验性的学习率可供参考。例如,在神经网络中,初始学习率通常设置为 0.1、0.01 或 0.001 等。但这些值并非适用于所有情况,需要根据具体问题进行调整。
  • 网格搜索:通过在一定范围内设置多个不同的学习率值,然后分别用这些学习率训练模型,比较模型在验证集上的性能表现,选择使性能最优的学习率作为最终的学习率。
  • 学习率调整策略
    • 固定学习率:在整个训练过程中,学习率保持不变。这种方法简单,但可能无法适应不同训练阶段的需求。
    • 动态调整学习率:根据训练过程中的某些指标或条件来调整学习率。常见的策略有指数衰减、步长衰减、自适应学习率等。例如,指数衰减会按照一定的指数规律逐渐降低学习率;步长衰减是每隔一定的训练步数或轮数,将学习率乘以一个小于 1 的因子;自适应学习率算法(如 Adagrad、Adadelta、RMSProp、Adam 等)会根据每个参数的梯度历史信息来自动调整学习率,使得不同参数可以有不同的学习率,从而更灵活地适应模型的训练。

影响

  • 对收敛速度的影响:合适的学习率能使模型在较少的迭代次数内收敛到较优解。学习率过大,模型可能会在最优解附近来回振荡甚至发散,无法收敛;学习率过小,模型收敛速度过慢,浪费大量计算资源和时间。
  • 对模型性能的影响:如果学习率选择不当,可能导致模型无法达到最优性能。过大的学习率可能使模型错过最优解,得到一个较差的局部最小值;过小的学习率可能使模型陷入局部最小值,无法跳出到更好的解。

选择合适的学习率对于模型的训练和性能至关重要,需要通过不断的实验和调整来找到最适合具体问题的学习率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24559.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2025全网最新最全】前端Vue3框架的搭建及工程目录详解

文章目录 安装软件Node.js搭建Vue工程创建Vue工程精简Vue项目文件 Vue工程目录的解读网页标题的设置设置全局样式路由配置 安装软件Node.js 下载地址&#xff1a;https://nodejs.org/zh-cn/ 安装完成后&#xff0c;打开cmd,查看环境是否准备好 node -v npm -vnpm使用之前一定…

Java 之集成 DataX 数据同步工具

1、官网下载 DataX https://github.com/alibaba/DataX 2、将依赖添加到本地&#xff08;DataX没有maven坐标&#xff0c;需要自己安装&#xff09; mvn install:install-file -Dfile"datax-common-0.0.1.jar" "-DgroupIdcom.datax" "-DartifactIdda…

OpenEuler学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…

pikachu

暴力破解 基于表单的暴力破解 【2024版】最新BurpSuit的使用教程&#xff08;非常详细&#xff09;零基础入门到精通&#xff0c;看一篇就够了&#xff01;让你挖洞事半功倍&#xff01;_burpsuite使用教程-CSDN博客 登录页面&#xff0c;随意输入抓包&#xff0c;发送到攻击…

Springboot基础篇(3):Bean管理

前言&#xff1a;Spring 通过扫描类路径&#xff08;Classpath&#xff09;来查找带有特定注解&#xff08;如 Component、Service、Repository 等&#xff09;的类&#xff0c;并将它们注册为 Spring 容器中的 Bean。 1 Bean扫描 Bean 扫描是 Spring 框架的核心功能之一&…

VidSketch:具有扩散控制的手绘草图驱动视频生成

浙大提出的VidSketch是第一个能够仅通过任意数量的手绘草图和简单的文本提示来生成高质量视频动画的应用程序。该方法训练是在单个 RTX4090 GPU 上进行的&#xff0c;针对每个动作类别使用一个小型、高质量的数据集。VidSketch方法使所有用户都能使用简洁的文本提示和直观的手绘…

Vulhub靶机 Apache APISIX Dashboard RCE(CVE-2021-45232)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动docker ps 查看开放的端口 影响范围 2.7 ≤ Apache APISIX Dashboard < 2.10.1 二、访问靶机IP 9080端口 1、下载利用脚本&#xff0c;并利用 https://github.com/wuppp/apisix_dashboard_rce 这里需要注意IP的端口为9000…

Python - Python连接数据库

Python的标准数据库接口为&#xff1a;Python DB-API&#xff0c;Python DB-API为开发人员提供了数据库应用编程接口。 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个实现库&#xff0c;Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范&…

Windows 11【1001问】Windows 11 都有哪些版本?

随着Windows 11的普及&#xff0c;越来越多的用户开始关注其不同版本及其分支版本之间的差异。在此之前&#xff0c;我们已经通过一系列文章详细介绍了Windows 11的基本概念、硬件配置要求、系统镜像下载方法以及多种安装方式。从使用Rufus和UltraISO软碟通制作Windows 11系统安…

【Kimi】自动生成PPT-并支持下载和在线编辑--全部免费

【Kimi】免费生成PPT并免费下载 用了好几个大模型&#xff0c;有些能生成PPT内容&#xff1b; 有些能生成PPT&#xff0c;但下载需要付费&#xff1b; 目前只有Kimi生成的PPT&#xff0c;能选择模板、能在线编辑、能下载&#xff0c;关键全部免费&#xff01; 一、用kimi生成PP…

【Java项目】基于Spring Boot的旅游管理系统

【Java项目】基于Spring Boot的旅游管理系统 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;旅游管理系统是一个基于Web的在线平台&#xff0c;主要分为前台和后台两大功能模块。前台功能模块包括&#xff08;1&#xff09;首…

Deepseek开源周第三天:DeepGEMM发布

Deepseek开源周第三天&#xff1a;DeepGEMM发布 前言 上周deepseek宣布&#xff0c;将在本周陆续发布五个开源项目&#xff0c;这些库已经在生产环境中经过了记录、部署和实战测试。 今天是deepseek开源周的第三天&#xff0c;deepseek发布了一个名为 DeepGEMM 的项目&#x…

ALM研发管理:全新甘特图,让项目管理更高效

在软件开发领域&#xff0c;甘特图一直是项目管理的重要工具。通过可视化的任务时间线&#xff0c;清晰地展示项目的进度和关键时间节点&#xff0c;帮助团队成员快速理解项目状态&#xff0c;协调工作进度&#xff0c;从而有效提升项目管理的效率。无论是需求分析、设计、开发…

mac os 使用 root 登录

打开系统偏好设置。进入“用户与群组”面板。点按锁按钮输入密码&#xff0c;再点最下面的登录选项。在右边面板的下方你会看见一行字&#xff1a;”网络账户服务器&#xff1a;加入 ”&#xff0c;点击加入&#xff0c;就可以打开目录实用工具了。 添加Root用户 正常情况下目…

【C++笔记】C++11智能指针的使用及其原理

【C笔记】C11智能指针的使用及其原理 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】C11智能指针的使用及其原理前言1.智能指针的使用场景分析2. RAII和智能指针的设计思路3. C标准库智能指针的使用4. 智能指针的原…

SQL命令详解之操作数据库

操作数据库 SQL是用于管理和操作关系型数据库的标准语言。数据库操作是SQL的核心功能之一&#xff0c;主要用于创建、修改和删除数据库对象&#xff0c;如数据库、表、视图和索引等。以下是SQL中常见的数据库操作命令及其功能简介&#xff1a; 1. 查询数据库 查询所有的数据库…

轨迹控制--odrive的位置控制---负载设置

轨迹控制 此模式使您可以平滑地使电机旋转&#xff0c;从一个位置加速&#xff0c;匀速和减速到另一位置。 使用位置控制时&#xff0c;控制器只是试图尽可能快地到达设定点。 使用轨迹控制模式可以使您更灵活地调整反馈增益&#xff0c;以消除干扰&#xff0c;同时保持平稳的运…

mysql.gtid_executed表、gtid_executed变量、gtid_purged变量的修改时机

1.2 mysql.gtid_executed表、gtid_executed变量、gtid_purged变量的修改时机 1.2.1 定义 mysql.gtid_executed表&#xff1a;GTID持久化的介质&#xff0c;GTID模块初始化的时候会读取这个表作为获取gtid_executed变量的基础。 gtid_executed变量&#xff1a;表示数据库中执行…

CONTACT 在 Ubuntu 系统中的安装与使用

CONTACT 概述 CONTACT 是研究三维摩擦接触问题的高级仿真程序&#xff0c;如轮轨之间、滚动轴承的接触问题。CONTACT 提供了完整且详细的解决方案&#xff0c;可集成到多体仿真软件中。其计算质量可与有限元分析相近&#xff0c;但计算时间仅为后者的千分之一。CONTACT 采用半…

C#连接sql server

连接时&#xff0c;出现如下提示&#xff1a; ERROR [IM014] [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中&#xff0c;驱动程序和应用程序之间的体系结构不匹配 原因是odbc的驱动和应用程序的架构不一致。我的odbc如下所示&#xff1a; 显示为64位&#xff0c;而c#程序显…