Scikit-Learn线性回归(四)

news2024/11/18 20:27:51

Scikit-Learn线性回归四:梯度下降

    • 1、梯度下降
      • 1.1、梯度下降概述
      • 1.2、梯度下降及原理
      • 1.3、梯度下降的实现
    • 2、梯度下降法求解线性回归的最优解
      • 2.1、梯度下降法求解的原理
      • 2.2、梯度下降法求解线性回归的最优解
      • 2.3、梯度下降法求解线性回归案例(波士顿房价预测)
    • 3、Scikit-Learn梯度下降法
      • 3.1、随机梯度下降
      • 3.2、Scikit-Learn梯度下降法API
      • 3.3、Scikit-Learn梯度下降法案例(波士顿房价预测)
      • 3.4、Scikit-Learn梯度下降法与Pipeline



1、梯度下降

1.1、梯度下降概述


在第一篇文章 Scikit-Learn线性回归(一) 中,我们给出了线性回归的损失函数的定义:
L = ∑ i = 1 m ( y i − f ( x i ) ) 2 L=\sum_{i=1}^m(y_i-f(x_i))^2 L=i=1m(yif(xi))2

回忆一下,损失函数主要用于评估模型拟合的好坏,损失函数衡量了我们构造的模型的预测值与真实值的差异,因此,我们希望我们的预测结果与真实值的差异越小越好。也就是我们希望损失函数取得最小值

损失函数取得最小值是我们构建模型的本质要求,求解模型的特征向量 ω \omega ω是我们构建模型的核心问题

根据损失函数(最小二乘法),我们的求解目标可以转换为求解误差平方和(残差平方和)的最小值:
m i n ω = ∣ ∣ Y − X ω ∣ ∣ 2 2 min_\omega={||Y-X\omega||_2}^2 minω=∣∣YXω22

而根据数学知识,当我们的误差平方和取得最小值时,线性回归模型特征 ω \omega ω就是最优解

最优解的求解方法主要有两种:最小二乘法(数学方式)和梯度下降法。最小二乘法通过数学求导的方式求函数的极值进而推导出线性回归的解;而梯度下降采用近似逼近,是一种迭代方法

在线性回归(详见:传送门)一文中,我们已经通过最小二乘法推导了线性回归的解析解的正规方程:
ω = ( X T X ) − 1 X T Y \omega=(X^TX)^{-1}X^TY ω=(XTX)1XTY

然而,很多模型通过这种数学方式求解是推导不出解析解的,所以就需要使用梯度下降法来搜索最优解。基于梯度下降我们可以推导出线性回归的最优解析解。梯度下降法是使用最广泛的一种优化方法

梯度下降法不是机器学习专属的算法,它是一种基于搜索的优化方法,也就是通过不断的搜索然后找到损失函数的最小值

1.2、梯度下降及原理


观察我们的损失函数转换后的求解目标,根据数学知识,误差平方和(函数)为二次函数形式,且函数开口向上,因此,函数一定有唯一最小值。当函数取得最小值时的 ω \omega ω就是最优解

在这里插入图片描述

上图中,纵坐标表示损失函数L的值,横坐标表示系数 ω \omega ω,每一个 ω \omega ω都会对应一个损失函数L的值,我们希望损失函数收敛,即找到一个 ω \omega ω值,使得损失函数L的值最小

根据数学知识,要判断一个点A是否是损失函数L的最小值,即求该点的导数。点A的导数就是该点切线的斜率,所以导数描述了一个函数在某一点附近的变化率,并且导数大于零时,函数在区间内单调递增,导数小于零时函数在区间内单调递减

所以, ∂ L ∂ ω \frac{\partial L}{\partial\omega} ωL表示损失函数L增大的变化率,- ∂ L ∂ ω \frac{\partial L}{\partial\omega} ωL表示损失函数L减小的变化率

再在曲线上定义一点B,B点的 ω \omega ω就是A点的 ω \omega ω值加上损失函数L递减变化率- η ∂ L ∂ ω \eta\frac{\partial L}{\partial\omega} ηωL
ω B = ω A − η ∂ L ∂ ω = ω A + ∇ J ( ω ) \omega^B=\omega^A-\eta\frac{\partial L}{\partial\omega}=\omega^A+\nabla J(\omega) ωB=ωAηω

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何提高3D渲染速度

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 1、3D渲染快慢和什么有关? 渲染时间受项目的CPU和项目各类…

SpringDoc注解解析

一、什么是SpringDoc SpringDoc注解的使用,它是基于OpenAPI 3和Swagger 3的现代化解决方案,相较于旧版的Swagger2(SpringFox),SpringDoc提供了更简洁、更直观的注解方式。 二、SpringDoc的注解分类 2.1 作用于类的注解 1. Tag 用于说明…

ssm基于java web 的QQ村旅游网站的设计+vue论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统旅游信息管理难度大,容错率低,管理…

深度解析分布式算法:构建高效稳定的分布式系统

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

频率域滤波图像复原之逆滤波的python实现——数字图像处理

逆滤波原理 逆滤波是一种在频率域进行的图像复原技术,常用于修复由运动模糊等因素引起的图像退化。具体步骤如下: **频率域表示:**首先,将退化的图像通过傅里叶变换从空间域转换到频率域。这使得图像的频率成分变得明显&#xf…

metaSPAdes,megahit,IDBA-UB:宏基因组装软件安装与使用

metaSPAdes,megahit,IDBA-UB是目前比较主流的宏基因组组装软件 metaSPAdes安装 GitHub - ablab/spades: SPAdes Genome Assembler #3.15.5的预编译版貌似有问题,使用源码安装试试 wget http://cab.spbu.ru/files/release3.15.5/SPAdes-3.15.5.tar.gz tar -xzf SP…

STM32 JLINK SWD调试器手动复位才能烧写的问题

STM32 JLINK SWD调试器手动复位才能烧写的问题 Chapter1 STM32 JLINK SWD调试器手动复位才能烧写的问题 Chapter1 STM32 JLINK SWD调试器手动复位才能烧写的问题 原文链接:https://blog.csdn.net/denghuajing/article/details/121649667 问题 只有手动复位的情况下…

小游戏实战丨基于PyGame的俄罗斯方块小游戏

文章目录 写在前面PyGame五子棋注意事项系列文章写在后面 写在前面 本期内容:基于pygame的俄罗斯方块小游戏 下载地址:https://download.csdn.net/download/m0_68111267/88700182 实验环境 python3.11及以上pycharmtkinter PyGame Pygame是一个非常…

优化|PLSA理论与实践

PLSA又称为概率潜在语义分析,是一种利用概率生成模型对文本集合进行话题分析的无监督学习方法。该模型最大的特点是加入了主题这一隐变量,文本生成主题,主题生成单词,从而得到单词-文本共现矩阵。本文将对包含物理学、计算机科学、…

PHP进阶-实现网站的QQ授权登录

授权登录是站点开发常见的应用场景,通过社交媒体一键授权可以跳过注册站点账户的繁琐操作。本文将讲解如何用PHP实现QQ授权登录。首先,我们需要申请QQ互联开发者账号获得APPID和密钥;接着,我们下载QQ官方SDK:PHP SDK v…

分布式数据之复制(Replication)

1.简介 1.1简介——使用复制的目的 在分布式系统中,数据通常需要被分散在多台机器上,主要为了达到以下目的: 扩展性,数据量因读写负载巨大,一台机器无法承载,数据分散在多台机器 上可以有效地进行负载均衡…

【无标题】MySQL8修改非root用户密码

首先查看修改的用户信息,我这里用户名是demo,host是**%** 然后使用alter命令修改密码 这里USER后的参数是第一步里查询得到的user与host的组合。ALTER USER demo% IDENTIFIED WITH mysql_native_password BY 新密码;可能会出现的错误: 如果百…

故障诊断 | 基于FFT频谱与小波时频图的双流CNN轴承故障诊断模型(matlab +python)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 故障诊断 | 基于FFT频谱与小波时频图的双流CNN轴承故障诊断模型(matlab python) 基于FFT频谱与小波时频图的双流CNN轴承故障诊断模型 特征拼接 python(pytorch) 基于2D-…

【Unity】 HTFramework框架(四十七)编辑器日志中使用超链接的技巧

更新日期:2024年1月3日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 日志中使用超链接超链接-网络地址超链接-本地地址超链接-项目资源文件超链接-脚本对象 日志中使用超链接 在编辑器控制台Console中的日志是支持富文本的&…

SpringSecurity集成JWT实现后端认证授权保姆级教程-环境搭建篇

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥网站…

HTML 使用 ruby 给汉字加拼音

使用 ruby 给汉字加拼音 兼容性 使用 ruby 给汉字加拼音 大家有没有遇到过要给汉字头顶上加拼音的需求? 如果有的话, 你是怎么解决的呢? 如果费尽心思, 那么你可能走了很多弯路, 因为 HTML 原生就有这样的标签来帮我们实现类似的需求. <ruby> ruby 本身是「红宝石」…

详解Keras3.0 Callbacks API : TensorBoard(可视化工具)

TensorBoard TensorBoard是TensorFlow提供的可视化工具。需要安装TensorFlow才能使用此回调。此回调记录TensorBoard的事件&#xff0c;包括&#xff1a;度量汇总图、训练图可视化、重量直方图、采样剖面。 keras.callbacks.TensorBoard(log_dir"logs",histogram_…

spring之推断构造方法

目录 源码流程(属于Bean生命周期中的实例化阶段) 1. AbstractAutowireCapableBeanFactory类中的createBeanInstance()方法去创建Bean 实例 2. 根据BeanDefinition加载类得到Class对象 3. 如果BeanDefinition绑定了一个Supplier,那就调用Supplier的get方法得到一个对象并直接…

【java爬虫】首页显示沪深300指数走势图以及前后端整合部署方法

添加首页 本文我们将在首页添加沪深300指数成立以来的整体走势数据展示&#xff0c;最后的效果是这样的 单独贴一张沪深300整体走势图 我感觉从总体上来看指数还是比较稳的&#xff0c;没有特别大的波动&#xff0c;当然&#xff0c;这只是相对而言哈哈。 首先是前端页面 &l…

Vue新手村(一)

目录 1、Vue简介——Vue的特点 2、Vue的第一个页面 3.Vue的简单使用介绍 3.1、{{ }}的使用 3.2、v-text和v-html 3.2.1、v-text和{{ }}的区别 3.2.2、v-html和v-text的区别 3.3、v-on【事件绑定】 3.3.1、绑定事件的语法 3.3.2、语法简化 3.3.3、传参 3.4、v-show和…