python sklearn 梯度下降法_Python与机器学习:梯度下降

2023-10-26

梯度下降(Gradient Descent)

梯度下降法不是一个机器学习算法,是一种基于搜索的最优化算法,目的是最小化一个损失函数,同样,梯度上升法用于最大化一个效用函数

求解损失函数的最小值有两种方法:

1.正规方程求解

上一章已经讲使用线性回归正规方程求解,即让

求极值,求得:
Mr.喵:机器学习(一):线性回归​zhuanlan.zhihu.com

2.梯度下降法

但很多情况下对于更复杂的函数,我们的机器学习模型是求不到这样的数学解的,那么我们就需要一种基于搜索的最优化策略,来在一定程度上逼近这样的解,梯度下降法就是这样一种在机器学习中最小化损失函数的最为常用的方法

在曲线方程中,导数代表切线斜率,导数的方向就代表

变化的方向,那么对于高维度的方程,就是偏导的方向就代表
变化的方向,而梯度就是最大的一个偏导,梯度的方向就代表
变化最快的方向

我们的目标是使损失函数

尽可能小,所以梯度的方向是负方向,同时我们引入一个学习率

我们希望根据学习率 一步一步的逼近

的最小值,并找到与之对应的

repeat until convergence {

}

梯度求得:

我们在第一章讲过,使用线性回归正规方程求解不需要对数据进行归一化

但是由于梯度下降法的最优化搜索原理,为了保证梯度下降法的稳定性,我们需要对数据归一化再使用梯度下降法

学习率

  • 的是梯度下降法的一个超参数
  • 的取值影响梯度下降法获得损失函数
    最优解的速度
  • 如果
    太小梯度下降法的收敛速度会十分缓慢,如果
    太大甚至会导致不收敛
  • 而更为常见的情况是,损失函数
    并不会在每次迭代都下降,为此我们在运行梯度下降法时通常会选择尝试一系列
    值,来找到合适的

关于梯度下降法存在的问题

由于并不是所有函数都有唯一的极值点,我们使用梯度下降法进行搜索,有可能找到的只是局部最优解,而不是全局最优解

解决方法:

  • 多次运行梯度下降法,随机化初始点
  • 梯度下降法的初始点也是一个超参数

比较梯度下降和正规方程

梯度下降:

  • 需要选择学习率
  • 需要进行迭代
  • 当数据量大的时候,运行效果很好

正规方程:

  • 不需要选择学习率
  • 不需要进行迭代
  • 当数据量大的时候,运行速度很慢,通常
    更倾向于选择梯度下降

上述求出的梯度的过程用到了所有的样本进行计算,这样的方法又称为

批量梯度下降法(Batch Gradient Desent)

repeat until convergence {

}

特点:

批量梯度下降法由于使用到所有的样本,很容易得到最优解,但是过程非常耗时的。

基于这样的问题,我们在求梯度的过程中是不是可以随机的取一个样本的梯度,作为我们收敛的方向,经过不断的迭代求得损失函数

的最小值,这样的方法又称为

随机梯度下降法(Stochastic Gradient Desent)

repeat until convergence {

}

特点:

随机梯度下降法具有不确定性,每次取一个样本来进行迭代,但不能保证求的梯度方向就是损失函数

减小的方向,更不能保证是减小速度最快的方向,即便如此,我们通常还是能够求得损失函数
的最小值得近似值,也就是说牺牲一定精确度来获取更少的时耗(更快的迭代速度)

鉴于随机梯度下降法的随机性,学习率

的取值就尤其的重要,为了避免由于随机性而错过最优解,我们希望学习率
随着迭代次数的逐渐增大而逐渐减少,于是我们想到了

但如果我们的迭代次数太少,那么下降速度就会太快,于是我们引入常数

来进行优化

a,b是SGD的两个超参数

scikit-learn中linear_model的SGD代码示例

from 

Wall time: 0 ns

0.7784799948330545

sgd_reg 

Wall time: 14.1 ms

0.8004299348713204

那么,我们把上述两种梯度下降法的特点相结合呢?于是产生了

小批量梯度下降法(Mini-Batch Gradient Descent)

repeat until convergence {

}

特点:

小批量梯度下降法每次取一小部分k个样本来进行迭代,既能减少一定的时耗,又能保证一定的收敛方向稳定性。一般情况下,小批量梯度下降法比较的实用,当然三种方法还是要看实际的情况来使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python sklearn 梯度下降法_Python与机器学习:梯度下降 的相关文章

  • 反汇编 之thiscall约定

    thiscall是C 中的非静态类成员函数的默认调用约定 对象的每个函数隐含接收this参数 采用thiscall约定时 函数的参数按照从右到左的顺序入栈 被调用的函数在返回前清理传送参数的栈 include
  • jetson orin+livox mid-70+imu+云台相机联合标定和数据采集

    将之前无人机上的x86多源数据采集和联合标定算法重建在新板子jetson orin上 解决之前多传感器采集数据时间戳没对齐的问题 1 准备工作 安装ros环境 推荐小鱼 http fishros com fish home 大佬的包避免了自
  • 王昊奋:大规模知识图谱技术

    主讲嘉宾 王昊奋 主持人 阮彤 承办 中关村大数据产业联盟 嘉宾简介 王昊奋 华东理工大学讲师 上海交通大学计算机应用专业博士 对语义搜索 图数据库以及Web挖掘与信息抽取有浓厚的兴趣 在博士就读期间发表了30余篇国际顶级会议和期刊论文 长
  • TCP&UDP测试工具的使用

    一 TCP服务测试 1 在电脑上打开测试工具 2 该测试工具分为客户端和服务器两类 首先创建一个服务端 3 默认端口号点击确定 4 点击启动服务器 此时我们可以通过外部客户端与该服务器相连 5 在此 我们重新打开一次软件 模拟客户端并与服务
  • pandas基础入门之数据修改与基本运算

    1 数据复制 直接赋值 直接赋值的话 只是复制的元数据 行列索引 但是元素还是存储在相同内存位置 对元素进行修改会影响另外一个 import pandas as pd import numpy as np df pd DataFrame n
  • 偏微分方程 基础知识(线性偏微分方程+常系数线性偏微分方程)

    偏微分方程 指含有多元未知函数 u u x x
  • python爬虫connection error报错time read out

    TOC python 爬虫 ConnectionError HTTPConnectionPool host port 80 Read timed out python 爬虫 ConnectionError HTTPConnectionPoo
  • RocketMQ 安装和启动

    一 前言 系统环境 CentOS Linux release 7 9 2009 Core RocketMQ版本 4 7 1 我们会部署一套 RocketMQ 最小化的单机环境 包括一个 RocketMQ Namesrv 和 Broker 服
  • 【Transformer系列(1)】encoder(编码器)和decoder(解码器)

    前言 这个专栏我们开始学习transformer 自推出以来transformer在深度学习中占有重要地位 不仅在NLP领域 在CV领域中也被广泛应用 尤其是2021年 transformer在CV领域可谓大杀四方 在论文的学习之前 我们先
  • 第二章:25+ Python 数据操作教程(第十四节PYTHON 中的循环通过示例进行解释)持续更新中

    本教程通过几个实际示例介绍了在 python 中执行循环的各种方法 阅读本教程后 您将熟悉循环的概念 并将能够在现实世界的数据整理任务中应用循环 目录 什么是循环 现实世界中的循环示例 For 循环 Python 语法和示例 带 else
  • user-cf的理解-初衷

    使用user cf的初衷 以前的推荐算法 往往是基于内容标签的推荐 比如 用户喜欢了 数据挖掘导论 这本书 而这本书有 数据挖掘 这个标签 那么就给这个用户推荐 其他的 数据挖掘 类的图书 标签就像媒介一样 即是物品 即item 的属性 又
  • 互联网晚报

    今日看点 哪吒汽车第10万台量产车下线 仅用42个月 2022年首家银行理财子公司 浦银理财正式开业 京东成全国首批支持第三方商家接入数字人民币的企业 亚虹医药在科创板挂牌上市 A股迎来 泌尿生殖肿瘤第一股 刘慈欣 三体 英文版权以125万
  • 骚操作-CSDN浏览器助手已上线(就是个Chrome插件...)

    目录 概述 一 插件安装 1 进入csdn插件官网 2 本地下载csdn插件测试包 3 安装csdn插件测试包 4 解压csdn插件测试包并上传 5 开启csdn插件 6 查看插件信息 7 在新标签页中打开插件 二 功能测试 2 1 功能测
  • 图解!2023年国家社科基金年度项目

    9月4日 全国哲学社会科学工作办公室公示了2023年国家社科基金年度项目 其中重点项目有397项 一般项目有3185项 学术点滴 将重点项目和一般项目合并 利用DIKW软件统计和可视化 在国家社科基金年度项目中华东师范大学 中国人民大学 四
  • TCP/IP详解 卷1:协议 学习笔记 第二十三章 TCP的保活定时器

    一个TCP连接建立 然后经过任意时间 且中间路由器可以崩溃和重启 电话线可以挂断再接通 而连接依然保持 只要两端主机没有被重启 这意味着两端不交换任何信息 然而许多时候一个服务器希望知道客户主机是否崩溃 许多实现提供的保活定时器可提供这种能
  • Arthas监控java程序

    安装 1 解压缩arthas的压缩包 unzip arthas packaging bin zip 2 安装Arthas cd arthas install local sh 启动 以脚本的方式启动as sh 如图为启动成功 监控命令使用
  • 01. Windows基础:Dos命令

    文章目录 本文中的命令示例统一使用 来代表可以替换的内容 在使用时请不要真的输入 谢谢 0 Dos简介 1 目录相关 1 1 进入目录 1 2 进入另一个磁盘分区 1 3 列出当前目录下所有文件及文件夹 2 文件操作 2 1 浏览文件 2
  • 华为OD机试 - 相对开音节(Java)

    题目描述 相对开音节构成的结构为 辅音 元音 aeiou 辅音 r除外 e 常见的单词有bike cake等 给定一个字符串 以空格为分隔符 反转每个单词中的字母 若单词中包含如数字等其他非字母时不进行反转 反转后计算其中含有相对开音节结构

随机推荐

  • 【自然语言处理】潜在语义分析【下】概率潜在语义分析

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 由于字数限制 分成两篇博客 自然语言处理 潜在语义分析 上 潜在语义分析 自然语言处理 潜在语义分析 下 概率潜在语义分析 2 概率潜在语义分析 概率潜在语义分析 probabili
  • FreeRTOS(任务管理的创建、删除、挂起、恢复)

    目录 一 任务的基本概念 二 任务状态的概念 1 Running 运行态 2 Ready 就绪态 3 Blocked 阻塞态 4 Suspended 挂起态 三 任务状态的切换 四 系统启动 1 vTaskStartScheduler 函数
  • IOS数据管理

    在 iOS 中 没有直接与 Android 中的 SharePreference 相对应的概念 而是使用不同的机制来处理应用程序的持久化数据 在 iOS 中 你可以使用以下几种方法来保存和读取应用程序的数据 UserDefaults 用户默
  • Halcon (64位)无法卸载或者卸载不彻底,没法再次安装?

    以管理员身份 切换到cmd 1 删除安装目录 rmdir S HALCONROOT 2 查询安装的Halcon版本 reg query HKLM SOFTWARE Wow6432Node MVTec HALCON Windows x64 3
  • 面试常用算法归纳

    面试常用算法归纳 算法时间复杂度 二叉查找树的时间复杂度 递归和分治 递归思维 汉诺塔问题 排序算法 最长子串 子序列 一维dp 有断层 最长递增子序列 最大子数组和 无重复字符的最长子串 买卖股票的最佳时机 二维dp 组合 子集 和排列
  • YOLOv5改进算法之添加CA注意力机制模块

    目录 1 CA注意力机制 2 YOLOv5添加注意力机制 送书活动 1 CA注意力机制 CA Coordinate Attention 注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制 CA 注意力机制的核心思想是引
  • Atmel Studio 7.0 快速上手指南(基于ASF)

    Atmel Studio 7 0 快速上手指南 基于ASF 程序员大本营 pianshen com
  • 【Kubernetes部署篇】K8s图形化管理工具Dasboard部署及使用

    文章目录 一 Dashboard简介 二 Dashboard部署安装 三 配置Dashboard登入用户 1 通过Token令牌登入 2 通过kubeconfig文件登入 四 Dashboard创建容器 五 扩展 一 Dashboard简介
  • switch...case...和if...else...区别

    switch 和 if 都是用来处理分支语句的 那么使用的时候 考虑到代码效率问题 就必须先来了解他们有什么区别 先来看看这两个语句的使用格式 if else if 表达式1 语句1 else if 表达式2 语句2 else if 表达式
  • Altium Designer (AD) 元器件出现绿色叉叉报错的解决办法

    出现报错的原因 元器件的安全间距小于设定的安全间距 但通常情况下 这个问题并不严重 可以理解为是一个警告 不去处理也可以 解决办法 点击菜单栏的工具 T 再点击复位错误标志 M 即可解决报错
  • 一个爬虫代码价值 7000 万

    一个爬虫代码价值 7000 亿 这样的代码你听说过吗 这是一个爬取比特币密钥的代码 比特币相信大家都有听说过 尤其最近比特币价格还突破了 5 万美元大关 现在1 枚比特币就价值 35 万人民币 难怪有句说 币圈一天 人间一年 最近朋友圈关于
  • 登录,注册HTML页面,详细过程

    1 页面说明 登录和注册切换按钮 当点击登录按钮时 显示登录表单 当点击注册按钮时 显示注册表单 每个表单都有对应的 JavaScript 校验函数 校验用户名 邮箱和密码是否为空 如果为空 会弹出警告框 2 效果图展示 3 代码部分 3
  • 手把手教你快速上手人体姿态估计(MMPose)

    最近在研究如何快速实现图像中人体姿态的估计 也就是常见的pose estimation任务 花了些时间 实际对比了AlphaPose BlazePose和MMPose BlazePose主要为移动端设计 AlphaPose安装配置比较麻烦
  • 服务器显卡驱动重装系统,windows7旗舰版系统重装显卡驱动的方法

    在windows7旗舰版电脑中 我们都是需要安装显卡驱动 但是如果显卡驱动安装不合适的话 就会容易导致电脑出现问题 所以如果有碰到安装到不合适的显卡驱动的话我们可以通过重装显卡驱动来解决 那么该怎么操作呢 为此小编这就给大家讲解一下wind
  • 图片 url blob base64 互转

    待补充 url to blob export const urlToBlob async url string gt return new Promise resolve gt fetch url then res gt res blob
  • Nginx

    HTTP和反向代理web服务器 Nginx是一个高性能的HTTP和反向代理web服务器 同时也提供了IMAP POP3 SMTP服务 Nginx是一款轻量级的Web服务器反向代理服务器及电子邮件 IMAP POP3 代理服务器 nginx反
  • 结合 服务器+后端+前端,完成 vue项目 后台管理系统

    目录 以上是项目的服务器php 后端 前端 已经可以正常运行 一 登录 登录页进度条 戳这里Vue项目电商后台管理系统 nprogress 进度条 活在风浪里的博客 CSDN博客 二 侧导航 三 列表页源码 四 角色分配 五 权限页面开发
  • 多线程实现Runable接口和Callable接口的区别

    先看源码callable接口 返回泛型v 可以抛出异常 Runable接口是抽象方法run 没有返回值 不能抛出异常 有异常在run方法内部处理 总结 区别1 两者最大的区别 实现Callable接口的任务线程能返回执行结果 而实现Runn
  • 交换机电口、光口、网络速率的基本概念总结

    电口和光口 千兆网 万兆网 POE 包转发率 背板带宽 交换容量 光纤跳线 电口和光口 电口 电口也即RJ45口 插双绞线的端口 网线 一般速率为10M或100M 即为百兆工业交换机 部分支持1000M 即为千兆交换机 光口 工业以太网交换
  • python sklearn 梯度下降法_Python与机器学习:梯度下降

    梯度下降 Gradient Descent 梯度下降法不是一个机器学习算法 是一种基于搜索的最优化算法 目的是最小化一个损失函数 同样 梯度上升法用于最大化一个效用函数 求解损失函数的最小值有两种方法 1 正规方程求解 上一章已经讲使用线性