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

大数据-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 什么是自动装配&#xff1f; 自动装配是指 Spring Boot 在启动时&#xff0c;根据类路径上的依赖项自动配置应用程序。例如&#xff0c;如果你的应用程序依赖于 Spring Data JPA&#xff0c;Spring Boot 会自动配置一个 DataSource、EntityManagerFactory 和其他必…...

【实战篇】requests库 - 有道云翻译爬虫 【附:代理IP的使用】

目录 〇、引言一、目标二、请求参数分析三、响应分析四、编写爬虫脚本【隧道代理的使用】 〇、引言 无论是学习工作、旅游出行、跨境电商、日常交流以及一些专业领域都离不开翻译工具的支持。本文就带大家通过爬虫的方式开发一款属于自己的翻译工具~ 一、目标 如下的翻译接口…...

法语动词变位

法语动词变位是法语语法的核心内容之一&#xff0c;因为法语动词的形式会根据人称&#xff08;谁做某事&#xff09;、时态&#xff08;动作发生的时间&#xff09;、语气&#xff08;说话人的态度&#xff09;和语态&#xff08;动作的执行者和接受者&#xff09;发生变化。接…...

Excel:vba实现批量插入图片

实现的效果&#xff1a; 实现的代码&#xff1a; Sub InsertImageNamesAndPictures()Dim PicPath As StringDim PicName As StringDim PicFullPath As StringDim RowNum As IntegerDim Pic As ObjectDim Name As String 防止表格里面有脏数据Cells.Clear 遍历工作表中的每个图…...

Vue3的router和Vuex的学习笔记整理

一、路由的基本搭建 1、安装 npm install vue-router --registryhttps://registry.npmmirror.com 2、配置路由模块 第一步&#xff1a;src/router/index.js创建文件 第二步&#xff1a;在src/view下面创建两个vue文件&#xff0c;一个叫Home.vue和About.vue 第三步&#x…...

设置JAVA以适配华为2288HV2服务器的KVM控制台

华为2288HV2服务器比较老旧了&#xff0c;其管理控制台登录java配置比较麻烦&#xff0c;华为的ibmc_kvm_client_windows客户端测试了几个版本&#xff0c;连接控制台也有问题&#xff0c;最终安装JDK解决。 一、测试环境 主机为WindowsServer2012R2,64位系统 二、Java软件包…...

掌握Qt调试技术

文章目录 前言一、Qt调试的基本概念二、Qt调试工具三、Qt调试实践四、Q调试技巧五、总结前言 在软件开发中,调试是一个至关重要的环节。Qt作为一个广泛使用的跨平台C++图形用户界面应用程序开发框架,其调试技术也显得尤为重要。本文将深入探讨Qt调试技术,帮助读者更好地掌握…...

使用NVM自由切换nodejs版本

一、NVM介绍 在日常开发中&#xff0c;我们可能需要同时进行多个不同NodeJS版本的项目开发&#xff0c;每个项目所依赖的nodejs版本可能不一致&#xff0c;我们如果只安装一个版本的nodejs&#xff0c;就可能出现node版本冲突问题&#xff0c;导致项目无法启动。这种情况下&am…...

同三维T610UHK USB单路4K60采集卡

USB单路4K60HDMI采集卡,支持1路4K60HDMI输入和1路4K60HDMI环出&#xff0c;1路MIC输入1路Line IN音频输入和1路音频输出&#xff0c;录制支持4K60、1080P120,TYPE-C接口&#xff0c;环出支持1080P240 HDR 一、产品简介&#xff1a; 同三维T610UHK是一款USB单路4K60HDMI采集卡,…...

Git超详细笔记包含IDEA整合操作

git超详细笔记 文章目录 git超详细笔记第1章Git概述1.1、何为版本控制1.2、为什么需要版本控制1.3、版本控制工具1.4 、Git简史1.5、Git工作机制1.6 、Git和代码托管中心 第2章Git安装第3章Git常用命令3.1、设置用户签名3.2、初始化本地库本地库&#xff08;Local Repository&a…...

摩尔线程嵌入式面试题及参考答案(2万字长文)

说一下你对 drm 框架的理解。 DRM(Direct Rendering Manager)是 Linux 系统中用于管理图形显示设备的一个重要框架。 从架构层面来讲,它处于内核空间,主要目的是为用户空间的图形应用程序提供一个统一的接口来访问图形硬件。DRM 包括内核态的驱动模块和用户态的库。内核态的…...