大数据-209 数据挖掘 机器学习理论 - 梯度下降 梯度下降算法调优

news2024/11/24 2:05:53

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • 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,且无量纲,收敛速度可以大大加快。

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

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

相关文章

模拟实现strcat函数

1.strcat的作用 char * strcat ( char * destination, const char * source ); 作用:将源字符串的附加到目标字符串中。目标字符串中的终止空字符将被源字符串的第一个字符替换,并且在将两个字符串连接形成的新字符串的末尾将包含一个空字符。 destina…

c++多线程QThreadpool调用Python脚本时崩溃报错的解决方案二

问题 还是c Qt多线程调用Python脚本时的问题。使用QthreadPool的方式调用,按照上次的解决方案也可以实现,虽然可能不出现崩溃问题。但是仍然有很大可能会出现死锁。即调入函数后,再无输出,变成一个黑洞… 解决方案 因为我使用的…

知从科技受邀出席ARM日产技术日

10月29日,上海知从科技有限公司受 ARM 之邀,参与了由其主办的日产技术日活动。此次活动在日本神奈川县厚木市的日产技术中心盛大举行,这一活动汇聚了行业内的前沿技术与精英人才,成为科技创新技术交流的重要平台。 知从科技积极参…

设计模式讲解02—责任链模式(Chain)

1. 概述 定义:责任链模式是一种行为型模式,在这个模式中,通常创建了一个接收者对象的链来处理请求,该请求沿着链的顺序传递。直到有对象处理该请求为止,从而达到解耦请求发送者和请求处理者的目的。 解释:责…

Vue项目引入侧边导航栏

Vue项目引入侧边导航栏 侧边导航栏能够非常方便进行信息检索,这一款不错的侧边导航栏:vue-side-catalog,基本上能满足快速检索的需求 安装 官网 首先需要进入** vue-side-catalog**的官网,然后下载对应的源码,下载…

【大数据学习 | kafka】kafka的偏移量管理

1. 偏移量的概念 消费者在消费数据的时候需要将消费的记录存储到一个位置,防止因为消费者程序宕机而引起断点消费数据丢失问题,下一次可以按照相应的位置从kafka中找寻数据,这个消费位置记录称之为偏移量offset。 kafka0.9以前版本将偏移量信…

专业 UI 设计公司:为您开启交互设计新征程

在当今数字化时代,UI设计不仅是产品外观的呈现,更是用户体验的核心组成部分。专业的UI设计公司凭借其深厚的设计底蕴、前沿的设计理念以及丰富的项目经验,能够为企业开启全新的交互设计征程,提升产品的市场竞争力。以下是对一家专…

【神经科学学习笔记】基于分层嵌套谱分割(Nested Spectral Partition)模型分析大脑网络整合与分离的学习总结

一、前言 1.学习背景 最近在学习脑网络分析方法时,笔者偶然读到了一篇发表在Physical Review Letters上的文章,文章介绍了一种名为嵌套谱分割(Nested-Spectral Partition, NSP)的方法,用于研究大脑功能网络的分离和整合特性。 传统的脑网络分…

初识C++(上) -- C++的关键字、命名空间、缺省参数以及函数的重载

目录 一、C的关键字(C98) 二、命名空间 1、命名冲突 2、命名空间 2.1 命名空间的定义 (1). 命名空间定义的例子以及命名空间的嵌套: (2). 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中: 2…

计算机网络socket编程(1)_UDP网络编程实现echo server

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(1)_UDP网络编程实现echo server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交…

[安洵杯 2019]easy_web 详细题解

知识点: 编码转换 命令执行 linux空格_关键字绕过 打开页面 发现url 是 /index.php?imgTXpVek5UTTFNbVUzTURabE5qYz0&cmd 有img参数和cmd参数 cmd参数是没赋值的,随便赋值为123456 页面没有反应 鼠标移动到图片下面时发现有东西,当然直接查看页面源代码也可以发现 尝…

免费,基于React + ECharts 国产开源 IoT 物联网 Web 可视化数据大屏

文末查看开源项目地址 Light Chaser 是一款国产开源免费的基于 React18、Vite5、TypeScript5 技术栈实现的 Web 可视化大屏设计工具,支持Docker方式部署,支持MySQL、PostgreSQL、SQL Server、Oracle 数据源。 你可以简单快速地搭建数据可视化展示、数据报…

Linux服务管理-DHCP

DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,它允许服务器自动地将IP地址和其他网络配置参数分配给网络中的计算机。DHCP极大地简化了网络管理,尤其是当大量设备需要接入…

如何使用Netdata部署高性能的服务器监控平台

简介 Netdata 是一个开源的、实时的性能和健康监控工具,专为系统、应用程序、SNMP 设备等而设计。它以其高度交互的 Web 仪表板和极低的资源开销而闻名。 主要特点:实时监控、全面监控、零配置、轻量级、交互式仪表板、可扩展性、警报和通知、分布式监…

【MySQL】深度学习与解析 : 库的操作知识整合

前言:本节内容是MySQL库的操作, 内容较少, 大体内容为创建库、删除库、修改库、库备份操作。 ps:本节内容适合安装了MySQL的友友们进行观看, 实操更有利于记住哦。 目录 创建数据库 查看数据库列表 创建数据库 删除数据库 …

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01目录1. A Perspective for Adapting Generalist AI to Specialized Medical AI Applications and Their Challenges2. Synergi…

白杨SEO:百度在降低个人备案类网站搜索关键词排名和流量?怎样应对?【参考】

很久没有写百度或者网站这块内容了,一是因为做百度网站朋友越来越少,不管是个人还是企业;二是百度上用户搜索与百度给到网站的流量都越来越少。 为什么想到今天又来写这个呢?因为上个月有个朋友来咨询我说网站百度排名全没了&…

5分钟科普:AI网关是什么?应用场景是什么?有没有开源的选择?

AI网关的功能及其定义 AI网关位于企业应用与内外部大模型调用的交汇点,能够灵活地将请求转发给内部自建模型或外部大模型服务提供商,甚至海外的服务商。它管理着企业所有的AI出口流量,为企业内的不同团队提供了多方面的优势。 对于开发团队…

Java学习Day60:微服务总结!(有经处无火,无火处无经)

1、技术版本 jdk&#xff1a;17及以上 -如果JDK8 springboot&#xff1a;3.1及其以上 -版本2.x springFramWork&#xff1a;6.0及其以上 -版本5.x springCloud&#xff1a;2022.0.5 -版本格林威治或者休斯顿 2、模拟springcloud 父模块指定父pom <parent><…

登录功能设计(php+mysql)

一 登录功能 1. 创建一个登录页面&#xff08;login.php&#xff09;&#xff0c;包含一个表单&#xff0c;用户输入用户名和密码。 2. 在表单的提交事件中&#xff0c;使用PHP代码处理用户输入的用户名和密码。 3. 首先&#xff0c;连接MySQL数据库。然后&a…