当前位置: 首页 > news >正文

十分钟机器学习之--------------线性回归

线性回归(linear regression)是一种基于数学模型的算法,首先假设数据集与标签之间存在线性关系,然后简历线性模型求解参数。在实际生活中,线性回归算法因为其简单容易计算,在统计学经济学等领域都有广泛的应用,所以也作为工业界常用的模型。下面按照目录的顺序介绍:

1线性回归的三要素

1线性映射\hat{y} = \mathbf{w}^\top \mathbf{x} + b

2损失函数 J(\mathbf{w}, b) = \frac{1}{2m} \sum_{i=1}^{m} \left( \hat{y}^{(i)} - y^{(i)} \right)^2 = \frac{1}{2m} \sum_{i=1}^{m} \left( \mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)} \right)^2

3优化目标---将损失函数(MSE,mean squared error)最小化

2两种常用的求解方法

话不多说,这里我们使用实例代码介绍正规方程梯度下降

1正规方程(Normal Equation)

                                         

                                                   \boldsymbol{\theta} = \left( X^\top X \right)^{-1} X^\top \mathbf{y} 

theta = np.linalg.inv(X.T @ X) @ X.T @ y_train

  • X 是特征矩阵(包含所有样本的特征数据)。

  • X⊤ 是矩阵 X 的转置。

  • X⊤X是特征矩阵的内积。

这个公式表示的是通过正规方程直接计算最优回归系数 θ 的方法。

2梯度下降(gradient descent)

                                                    \boldsymbol{\theta} := \boldsymbol{\theta} - \alpha \cdot \nabla J(\boldsymbol{\theta})

  • α 是学习率,决定每次更新的步长。

  • ∇J(θ)  是损失函数 J(θ) 对 θ的梯度,表示损失函数在当前参数点的变化率。

这个公式表示的是 梯度下降算法 中的参数更新步骤,通过反向传播梯度,逐步调整模型的参数,以最小化损失函数。

Q&A环节:

1.MSE 对比下 RMSE 区别和用法?

两者非常接近,但是对RMSE平方后开方的操作使其与y有相同的量纲,从直观角度易于比较。我们可以简单认为RMSE作为模型的评价指标 ,MSE则是作为损失函数用在训练的时候。

2关于梯度下降,选取什么样式的梯度下降?

不论是MBGD(小批量梯度下降) SGD (随机梯度下降)其实都可以叫做SGD ,虽然理论上两种算法不一样,SGD不如MBGD稳健(B是关键点哈哈)一般情况不怎么做严格的分别。

3学习率对于训练影响

显然,选择合适的学习率非常重要哈,步子太小会赶不上时代,太大会伤到自己。

4啥时候使用正规方程以及梯度下降法?

正规方程优雅简洁,适合理论;梯度下降灵活万用,适合实战。有点类似于正规方程是优雅的数学系,不需要学习率设置,更不需要去迭代,最最最nb的是得出的就是最优解。梯度下降法是工程师以及生活中更加通用的方法(那谁说局部最优不是最优解!!!达不到想要的那就从头再试一下嘛哈哈哈)哈哈哈。

5回归系数有几个啊?

一般来说是特征数加上一个偏置项。

6线性回归的标准化重要么如果不标准化对结果是否有很大改变呢?

http://www.dtcms.com/a/123263.html

相关文章:

  • 关于 Spring Boot 后端项目使用 Maven 打包命令、JAR/WAR 对比、内嵌服务器与第三方服务器对比,以及热部署配置的详细说明
  • 雷池WAF身份认证 - CAS
  • 数码视讯TR100系列/TR100-G1/TR100-G4/数码视讯F7-国科GK6323V100C芯片-刷机固件包
  • 如何优雅使用 ReentrantLock 进行加解锁:避免常见坑点,提高代码可维护性
  • ADI的BF561双核DSP怎么做开发,我来说一说(十一)NANDFLASH的读写
  • 十三届蓝桥杯Java省赛 B组(持续更新..)
  • YOLO 8 入坑(持续更新)
  • 【含文档+PPT+源码】基于Android家政服务系统的开发与实现
  • 【python】yield关键字的使用及执行步骤分析
  • HTTP 1.0 时代,第一次优化
  • antv x6使用(支持节点排序、新增节点、编辑节点、删除节点、选中节点)
  • ThinkpPHP生成二维码
  • 【C++初阶】--- vector容器功能模拟实现
  • STM32硬件IIC+DMA驱动OLED显示——释放CPU资源,提升实时性
  • Keras简介
  • AI 赋能 DBA:如何用 DeepSeek 等大模型简化数据库管理工作
  • 【每日随笔】丛林法则 ( 弱肉强食 | 适者生存 | 资源有限稀缺 | 没有道德约束 | 自发性与无序性 | 丛林法则映射 - 资源分配 与 社会分层 )
  • C++23新特性:显式对象形参与显式对象成员函数
  • Unity AssetBundle依赖树可视化分析工具开发指南
  • BeagleBone Black笔记
  • 传感器篇(二)——激光雷达
  • Prompt-to-prompt image editing with cross attention control
  • 网络通讯协议UDP转发TCP工具_UdpToTcpRelay_双向版
  • 蓝桥杯c ++笔记(含算法 贪心+动态规划+dp+进制转化+便利等)
  • 食堂采购系统源码模块化开发详解:管理、订单、入库、对账一体化方案
  • 游戏引擎学习第214天
  • module错误集合
  • SAP Business One系统标准功能之外的不允许负库存控制
  • 使用 react-three-fiber 快速重构 Three.js 场景⚛️
  • 为什么ChatGPT选择SSE而非WebSocket?