大数据-209 数据挖掘 机器学习理论 - 梯度下降 梯度下降算法调优
点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
- Hadoop(已更完)
- HDFS(已更完)
- MapReduce(已更完)
- Hive(已更完)
- Flume(已更完)
- Sqoop(已更完)
- Zookeeper(已更完)
- HBase(已更完)
- Redis (已更完)
- Kafka(已更完)
- Spark(已更完)
- Flink(已更完)
- ClickHouse(已更完)
- Kudu(已更完)
- Druid(已更完)
- Kylin(已更完)
- Elasticsearch(已更完)
- DataX(已更完)
- Tez(已更完)
- 数据挖掘(正在更新…)
章节内容
上节我们完成了如下的内容:
- 岭回归原理
- Lasso 算法原理

概述
分类技术是机器学习和数据挖掘应用中的重要组成部分,在数据学科中,约70%的问题属于分类问题。解决分类的算法也有很多,如:KNN,使距离计算来实现分类;决策树,通过构建直观易懂的树来实现分类。
这里我们要展开的是Logistic回归,它是一种很常见的用来解决二元分类问题的回归方法,它主要是通过寻找最优参数来正确的分类原始数据。
基本原理
逻辑回归(Logistic Regression 简称LR),其实是一个很有误导性的概念,虽然它的名字中带有回归二字,但是它最擅长的方法是分类问题。LR分类器适用于各项广义上的分类任务,例如:评论信息的正负情感分析(二分类)、用户点击率(二分类)、用户违约信息预测(二分类)、垃圾有检预测(二分类)、疾病预测(二分类)、用户等级分类(多分类)等场景。

在最小二乘法求最优解以及条件不满足的情况系原始算法的修正方法,但是实际上,线性回归只是机器学习类算法中最简单的用调整预测标签数值的回归算法,满足线性规律的真实场景并不是很多,因此标准线性回归应用面有限。
为了解决该问题,线性回归实际应用中引入了诸多变化形式,而这些变化形式可统一规整为如下形式:

其中g()为可微函数,而这类模型也被称为广义线性模型(generalized linear model),其中函数被称为联系函数(link function),现如今被广为人知的逻辑回归就是诸多广义回归算法的其中一种。
在逻辑回归中,我们使用对数几率函数(Logistic Function)作为 g的-1次(),对数几率函数表示形式如下:

能够看出,对数几率函数是一个Sigmod函数,Sigmod函数是形似S的函数,对率函数是Sigmod函数的重要代表,在感知机理论中也发挥着重大作用。

利用对数函数,我们可将Z转换为一个(0,1)区间内的值,除此之外,g(Z)还有一个很好的导数性质:

带入对率函数,得到逻辑回归表达式:

进一步可得:

由于y和1-y的和为1,因此可将y和1-y视为一堆正反列的可能性,即y视作样本x为正例的可能性,则1-y为x为反例的可能性,二者比例:

被称为几率(odds),反映了样本x为正例的相对可能性,对几率取对数则得到“对数几率”(logodds 亦称 logit):

因此看出,上式实际上是在用线性回归模型的预测结果取逼近真实标记的对数几率。因此,其对应的模型被称为“对数几率回归”(Logistic Regression)。需要注意的是,虽然其名字包含回归二字,但本质上是一种分类学习方法。
这种方法有很多优点,例如它是直接对分类可能性进行建模,因此它不仅预测出类别,而且得到的近似概率预测,这对许多需要利用概率辅助决策的任务很有用。同时,对率函数是任意阶可导的凸函数,有很多的数学性质,现有的很多数值优化算法都可以直接用于求取最优解。接下来我们将采用梯度下降的方法对其进行求解,首先我们将对梯度下降理论进行简单介绍。
梯度下降
Gradient Descent
在求解机器算法的模型参数,即无约束优化问题时,梯度下降是最常用的方法之一。
梯度
在微积分里面,对多元函数的参数求偏导数,把求得的各个参数的偏导以向量的形式写出来,就是梯度。那么梯度向量求出来有什么意义,它的意义就是从几何意义上,就是函数变化增加最快的地方,沿着梯度向量的方向,更加容易找到函数的最大值,反过来说,沿着梯度向量的反方向,梯度减少最快,也就是更容易找到函数的最小值。
梯度下降 梯度上升
在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升来迭代了。梯度下降和梯度上升是可以相互转换的,比如我们需要求解的损失函数最小值,这时我们需要用梯度下降来迭代求解,但是实际上,我们可以反过来求解损失函数的最大值,这时梯度上升法就用上了。
算法详解
首先来看梯度下降的一个直观的解释,比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是绝对走一步算一步,也就是每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负面方向,也就是最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。
这样一步一步走下去,一直走到觉得已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。
从上面的解释可以看出,梯度下降不一定能够找到全局最优解,有可能是一个局部最优解,当然,如果损失函数是凸函数,梯度下降法得到的一定是一个全局最优的。

相关概念
在详细了解梯度下降的算法之前,我们先看看相关的一些概念:
- 步长(Leanring rate):步长决定了梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。
- 假设函数(hypothesis function):在监督学习,为了拟合输入样本,而使用的假设函数记为y^,比如对于单个特征的m个样本,可以采用拟合函数为 y = w0 + w1z。
- 损失函数(loss function):为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数,在线性回归中,损失函数通常为样本输出和假设函数的差去平方。对于m个样本,采用线性回归,损失函数为:

梯度下降的算法用矩阵表示,更加简洁,且由于使用了矩阵,实现逻辑更加一目了然,这一节要求有一定的矩阵分析的基础知识,尤其是矩阵求导的知识。 - 先决条件:需要确认优化模型的假设函数和损失函数,对于线性回归,假设函数 y^ = w0 + w1x1 + … + wnxn,矩阵表达式为:

其中,假设函数为 mx1的向量,w是(n+1)x1的向量,里面有n个模型参数,X为m x (n + 1)维的矩阵。m代表样本的个数,n+1代表样本的特征数。
损失函数的表达式为:

其中Y是样本的输出向量,维度 m x 1
- 算法相关的参数初始化:w向量可以初始化为默认值,或者调优后的值,算法终止距离c,步长a初始化为1,在调优时再进行优化。
梯度算法下降算法调优
在使用梯度算法时,需要进行调优,哪些地方需要调优呢?
- 算法的补偿选择:在前面的算法描述中,提取到步长为1,但是实际上取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。
- 算法参数的初始值选择:初始值不同,获得的最小值也有可能不同,因此梯度下降求得只是局部最小值,当然如果损失函数是凸函数则一定是最优解。由于局部最优解的风险,需要多次用不同的初始值运行算法,观测损失函数的最小值,选择损失函数最小化的初始值。
- 标准化:由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据标准化,也就是对于每个特征Z,求出它的期望和标准差std(x),然后转化为:

这样特征的新期望是0,新方差是1,且无量纲,收敛速度可以大大加快。
相关文章:
大数据-209 数据挖掘 机器学习理论 - 梯度下降 梯度下降算法调优
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...
粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测
粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现PSO-BiTCN-BiGRU-Attention粒子…...
排序算法简介
直接插入排序: 将第一个元素视为已排序的序列,其余元素视为未排序序列。 逐个处理:从第二个元素开始,逐个将当前元素插入到已排序序列的适当位置,直到所有元素都被插入。 插入过程:对于每个待…...
(没有跳过联网激活)导致使用微软账号激活电脑---修改为本地账户和英文名字
修改为本地账户和英文名字 前言微软账号,本地账号与用户名基本知识账户管理方式一方式2 查看账户的sid并且修改文件夹名字和系统变量修改注册表和建立软件路径超链接注意事项总结 前言 当没有联网激活新买的电脑时候,这个就不用看了 当你是联网激活的时…...
[论文粗读][REALM: Retrieval-Augmented Language Model Pre-Training
引言 今天带来一篇检索增强语言模型预训练论文笔记——REALM: Retrieval-Augmented Language Model Pre-Training。这篇论文是在RAG论文出现之前发表的。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 语言模型预训练…...
flink 内存配置(五):网络缓存调优
flink 内存配置(一):设置Flink进程内存 flink 内存配置(二):设置TaskManager内存 flink 内存配置(三):设置JobManager内存 flink 内存配置(四)…...
set和map的使用
目录 1.关联式容器 2.键值对 3.set 3.1set的模版参数列表 3.2对set的修改 3.2.1insert 3.2.2 erase 3.2.3clear 3.2.4swap 3.2.5 find 3.3set的迭代器 3.4set的容量 4.map 4.1对map的修改 4.1.1insert 4.1.2erase 4.1.3swap 4.1.4clear 4.2map的迭代器 4.3opera…...
LCL三相并网逆变器simulink仿真+说明文档
背景描述: 详细解析了LCL三相并网逆变器的工作原理,强调了准PR比例谐振控制的重要性,讨论了电感、电容参数选择及保护电路设计。通过仿真结果展示了逆变器性能优化的方法,以提升系统效率和稳定性。 模型介绍: 整体模…...
从0开始深度学习(24)——填充和步幅
1 填充 在上一节中,我们的卷积步骤如下: 可以发现输入是 3 3 3\times3 33,输出是 2 2 2\times2 22,这样可能会导致原始图像的边界丢失了许多有用信息,如果应用多层卷积核,累积丢失的像素就更多了&#…...
CPU Study - Instructions Fetch
参考来源:《超标量处理器设计》—— 姚永斌 N-Way CPU 取指问题 如果CPU可以在每个周期内同时解码N条指令,则此类CPU为N-Way超标量处理器。 N-Way超标量处理器需要每个周期从I-Cache中至少取得N条指令,这N条指令成为一组Fetch Group。 为了…...
GJ Round (2024.9) Round 1~7
前言: 点此返回 GJ Round 目录 博客园可能食用更佳 Round 1 (9.10) A 洛谷 P10059 Choose 不难发现结论:记长度为 L L L 时对应的 X X X 最大值为 f ( L ) f(L) f(L),则 f ( L ) f(L) f(L) 单调不降 那么就可以考虑使用二分求出最小的…...
【CMCL】多模态情感识别的跨模态对比学习
abstract 近年来,多模态情感识别因其能够通过整合多模态信息来提高情感识别的准确性而受到越来越多的关注。然而,模态差异导致的异质性问题对多模态情感识别提出了重大挑战。在本文中,我们提出了一个新的框架——跨模态对比学习(…...
输入/输出系统
一、I/O 系统基本概念(了解即可) 1. 输入/输出系统 【总结】: “I/O” 就是 “输入 / 输出”(Input/Output),I/O 设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备。 输…...
asp.net+uniapp养老助餐管理系统 微信小程序
文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 以往流浪猫狗的救助网站相关信息的管理,都是工作人员手工统计。这种方式不但时效性低,而且需要查…...
部署istio应用未能产生Envoy sidecar代理
1. 问题描述及原因分析 在部署Prometheus、Grafana、Zipkin、Kiali监控度量Istio的第2.2章节,部署nginx应用,创建的pod并没有产生Envoy sidecar代理,仅有一个应用容器运行中 故在随后的prometheus中也没有产生指标istio_requests_total。通…...
使用YOLO 模型进行线程安全推理
使用YOLO 模型进行线程安全推理 一、了解Python 线程二、共享模型实例的危险2.1 非线程安全示例:单个模型实例2.2 非线程安全示例:多个模型实例 三、线程安全推理3.1 线程安全示例 四、总结4.1 在Python 中运行多线程YOLO 模型推理的最佳实践是什么&…...
ABAP 增强
一、增强 基于SAP源代码的增强:对SAP所预留的空的子过程进行编码,用户可以编辑此子过程,并在这个子过程中添加自定义的代码,以增加SAP标准程序的控制功能 PERFORM 基于函数的增强:SAP为此类出口提供了相应的函数&am…...
vue使用方法创建组件
vue 中 创建 组件 使用 方法创建组件 vue2 中 import vueComponent from xxxx function createFn(){const creator Vue.extend(vueComponent);const instance new creator();document.appendChild(instance.$el); }vue3 中 import { createApp } from "vue"; im…...
HTML 基础标签——链接标签 <a> 和 <iframe>
文章目录 1. `<a>` 标签属性详细说明示例2. `<iframe>` 标签属性详细说明示例注意事项总结链接标签在HTML中是实现网页导航的重要工具,允许用户从一个页面跳转到另一个页面或嵌入外部内容。主要的链接标签包括 <a> 标签和<iframe> 标签。本文将深入探…...
@SpringBootApplication源码解析
1 简介 1.1 什么是自动装配? 自动装配是指 Spring Boot 在启动时,根据类路径上的依赖项自动配置应用程序。例如,如果你的应用程序依赖于 Spring Data JPA,Spring Boot 会自动配置一个 DataSource、EntityManagerFactory 和其他必…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
Python异步编程:深入理解协程的原理与实践指南
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…...
