鲸鱼算法优化Transformer+KAN网络并应用于时序预测任务
😊😊😊欢迎来到本博客😊😊😊
本次博客内容将聚焦于深度学习的相关知识与实践
🎉作者简介:⭐️⭐️⭐️主要研究方向涵盖深度学习、计算机视觉等方向。
📝目前更新:🌟🌟🌟利用深度学习相关知识执行时序预测任务。
💛💛💛本文摘要💛💛💛
🌟前言
文章代码及数据链接:https://mbd.pub/o/bread/Z56clJ1u
KAN 与 Transformer 进行了结合,用于构建一个混合模型 KAN_Transformer 来完成共享单车租赁数量的预测任务。
KAN_Transformer 模型将 Transformer 编码器层和 KAN 网络层进行了串联,使得模型能够同时利用 Transformer 的序列处理能力和 KAN 网络的特性进行数据处理和预测。具体通过以下几个步骤来实现:
- 数据输入与嵌入
- Transformer 编码器层处理
- 全局平均池化
- KAN 网络层处理
通过以上步骤,KAN 网络与 Transformer 进行了有效的结合。Transformer 编码器层负责对输入数据进行序列特征提取和信息交互,而 KAN 网络层则在 Transformer 处理的基础上,进一步对数据进行特征变换和预测,从而充分发挥了两者的优势,提高了模型的性能。
该算法不仅仅可以应用于共享单车租赁数量的预测任务,还可以应用于其他单维度的预测任务。例如:电网产电预测,天气预测等等。
🌟鲸鱼算法
鲸鱼算法(Whale Optimization Algorithm, WOA)是由澳大利亚格里菲斯大学的 Mirjalili 等人在 2016 年提出的一种新型元启发式优化算法,其灵感来源于座头鲸的狩猎行为。以下从原理、数学模型、算法步骤、优缺点等方面详细介绍鲸鱼算法。
原理
座头鲸在捕食时会采用一种独特的策略,即螺旋式气泡网捕食法。鲸鱼先在猎物周围形成一个螺旋形的气泡网,然后逐渐收紧这个网,将猎物困在其中,最终完成捕食。鲸鱼算法就是模拟了座头鲸的这种捕食行为来进行优化搜索。
数学模型
鲸鱼算法主要包含三种行为模式:包围猎物、螺旋更新位置和搜索猎物,下面分别介绍其数学模型。
- 包围猎物
座头鲸能够识别猎物的位置并进行包围,在算法中,我们假设当前最优解就是猎物的位置。其他鲸鱼个体根据最优解的位置来更新自己的位置。 - 螺旋更新位置
座头鲸在捕食时会沿着螺旋形路径靠近猎物。 - 搜索猎物
鲸鱼会随机选择一个鲸鱼个体作为目标进行搜索,而不是直接朝着当前最优解移动,这样可以扩大搜索范围,避免算法陷入局部最优。其数学模型与包围猎物时类似,只是将替换为随机选择的一个鲸鱼个体的位置。
优点:
原理简单:算法的原理基于座头鲸的捕食行为,易于理解和实现。
全局搜索能力强:通过随机搜索和螺旋更新位置的策略,能够在搜索空间内进行广泛的探索,避免陷入局部最优。
参数较少:只需要设置种群数量、最大迭代次数等少数几个参数,降低了参数调整的难度。
缺点:
收敛速度较慢:在某些复杂问题上,算法的收敛速度可能较慢,需要较多的迭代次数才能找到最优解。
局部搜索能力不足:在接近最优解时,算法的局部搜索能力相对较弱,可能无法进一步优化解的质量。
鲸鱼算法是一种简单有效的元启发式优化算法,在许多领域都有广泛的应用,如函数优化、神经网络参数优化等。

🌟时序预测任务
时序预测任务是指基于时间序列数据,对未来某个时间点或时间段内的数值或事件进行预测的过程。下面将从定义、特点、应用场景、常见方法以及面临的挑战等方面详细介绍时序预测任务。
定义
时间序列数据是按时间顺序排列的一系列观测值,这些观测值可以是数值型(如温度、股票价格等),也可以是分类型(如每天的天气状况)。时序预测任务就是利用历史的时间序列数据,构建合适的模型,挖掘数据中蕴含的模式、趋势和规律,进而对未来的时间点或时间段的数值或事件状态进行预估。
特点
时间依赖性:时间序列数据中的每个观测值都与之前的观测值存在一定的关联,即数据具有自相关性。例如,今天的股票价格往往受到昨天以及过去一段时间内股票价格走势的影响。
趋势性:数据可能呈现出长期的上升或下降趋势。如随着科技的发展,电子产品的性能通常会呈现出逐年提升的趋势。
季节性:数据会按照一定的时间周期重复出现相似的模式。例如,冰淇淋的销售量在每年夏季会出现高峰,冬季则会下降,呈现出明显的季节性特征。
周期性:除了季节性周期外,数据可能还存在其他更长或更短的周期。比如,经济周期通常会经历繁荣、衰退、萧条和复苏四个阶段,呈现出一定的周期性波动。
噪声和不确定性:时间序列数据中往往包含噪声和随机波动,这些因素会增加预测的难度。例如,股票市场受到各种突发消息和市场情绪的影响,价格波动具有很大的不确定性。
应用场景
金融领域
股票价格预测:帮助投资者制定投资策略,预测股票未来的走势,评估投资风险。
汇率预测:对于跨国企业和外汇交易者来说,准确预测汇率变化可以降低外汇风险,优化资金配置。
信用风险评估:通过分析客户的历史信用数据时间序列,预测客户未来违约的可能性。
气象领域
天气预报:预测未来的气温、降水、风速等气象要素,为农业生产、交通出行、能源供应等提供决策依据。
气候预测:研究长期的气候变化趋势,如全球气温变化、海平面上升等,为应对气候变化提供科学支持。
交通领域
交通流量预测:预测道路、桥梁、地铁等交通设施的流量,帮助交通管理部门优化交通信号控制,缓解交通拥堵。
出行需求预测:对于共享出行平台和公共交通运营商来说,准确预测出行需求可以合理调配车辆资源,提高运营效率。
能源领域
电力负荷预测:预测未来的电力需求,帮助电力公司合理安排发电计划,优化电网调度,降低能源成本。
可再生能源发电预测:如太阳能、风能发电预测,有助于提高可再生能源的消纳能力,保障电网的稳定运行。
医疗领域
疾病发病率预测:预测传染病的发病率和传播趋势,为公共卫生部门制定防控策略提供依据。
医疗资源需求预测:预测医院的床位需求、药品消耗等,合理分配医疗资源,提高医疗服务质量。
🌟核心代码
def woa(fitness_function, lb, ub, dim, N, Max_iter):
# 初始化鲸鱼种群
Positions = np.random.uniform(lb, ub, (N, dim))
Convergence_curve = np.zeros(Max_iter)
t = 0
while t < Max_iter:for i in range(N):# 检查边界Positions[i] = np.clip(Positions[i], lb, ub)# 计算适应度值fitness = fitness_function(Positions[i])if i == 0:Leader_score = fitnessLeader_pos = Positions[i]elif fitness < Leader_score:Leader_score = fitnessLeader_pos = Positions[i]a = 2 - t * ((2) / Max_iter) # 线性减少 a 从 2 到 0for i in range(N):r1 = np.random.rand()r2 = np.random.rand()A = 2 * a * r1 - aC = 2 * r2l = (np.random.rand() - 0.5) * 2p = np.random.rand()for j in range(dim):if p < 0.5:if np.abs(A) < 1:D = np.abs(C * Leader_pos[j] - Positions[i][j])Positions[i][j] = Leader_pos[j] - A * Delse:rand_leader_index = np.random.randint(0, N)D = np.abs(C * Positions[rand_leader_index][j] - Positions[i][j])Positions[i][j] = Positions[rand_leader_index][j] - A * Delse:D1 = np.abs(Leader_pos[j] - Positions[i][j])Positions[i][j] = D1 * np.exp(l) * np.cos(2 * np.pi * l) + Leader_pos[j]Convergence_curve[t] = Leader_scoret = t + 1
return Leader_pos, Leader_score
🌟具体实验结果


🔎支持:🎁🎁🎁谢谢各位支持!
相关文章:
鲸鱼算法优化Transformer+KAN网络并应用于时序预测任务
😊😊😊欢迎来到本博客😊😊😊 本次博客内容将聚焦于深度学习的相关知识与实践 🎉作者简介:⭐️⭐️⭐️主要研究方向涵盖深度学习、计算机视觉等方向。 📝目前更新&#x…...
一维差分算法篇:高效处理区间加减
那么在正式介绍我们的一维差分的原理前,我们先来看一下一维差分所应用的一个场景,那么假设我们现在有一个区间为[L,R]的一个数组,那么我要在这个数组中的某个子区间比如[i,m] (L<i<m<R)进行一个加k值或者减去k值的一个操作ÿ…...
export关键字
注意点: 使用 export 和 import 时,确保你的JavaScript环境支持ES6模块 在JavaScript中,export 关键字主要用于模块化编程,允许你将代码的不同部分导出,使得其他模块可以通过 import 关键字来引入这些部分。这是ES6&a…...
【C++】基础入门(详解)
🌟 Hello,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 目录 输入&输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in…...
【快速入门】Unity 常用组件(功能块)
欢迎关注 、订阅专栏 【unity 新手教程】谢谢你的支持!💜💜 文章目录 Unity 常用组件(功能块):Transform - 变换:坐标、朝向、大小Mesh Filter - 加载网格数据Mesh Renderer- 渲染网格Camera - …...
Nessus 工具使用全攻略
目录 一、Nessus:网络安全的坚固防线 二、Nessus 安装指南 (一)获取安装包 (二)安装流程 三、初次配置:开启 Nessus 的第一步 (一)账号注册 (二)激活 …...
1441. 用栈操作构建数组 中等
1441. 用栈操作构建数组 给你一个数组 target 和一个整数 n。每次迭代,需要从 list { 1 , 2 , 3 ..., n } 中依次读取一个数字。 请使用下述操作来构建目标数组 target : "Push":从 list 中读取一个新元素, 并将其推入…...
【Springboot知识】从零开始配置springfox
文章目录 配置过程1. 添加依赖2. 创建Swagger配置类3. 配置Swagger UI4. 自定义Swagger配置(可选)4.1 添加全局请求参数4.2 配置响应消息 5. 运行项目并访问Swagger UI6. 其他注意事项7. 使用Springfox 3.x(可选)总结 忽略登录验证…...
PHP代驾系统小程序
🚗 代驾系统 —— 安全、便捷、智能的出行新选择 🔧 一款基于先进ThinkPHPUniapp技术架构,匠心独运的代驾软件横空出世,微信小程序端率先登场,为您的出行之旅增添前所未有的便捷与安全。它不仅是您贴心的出行助手&…...
pg认证需要培训机构吗
认证类型决定是否需要培训机构 官方认证 PostgreSQL社区认证:PostgreSQL社区并未强制要求通过培训机构才能参加认证考试。例如,PostgreSQL Professional Certification(由社区认可的机构提供)通常允许考生自学后直接报名考试。 Po…...
网络安全扫描--基础篇
前言 1、了解互联网安全领域中日趋重要的扫描技术 2、了解在不同网络场景下扫描技术手段 3、熟悉linux下系统内核防护策略并能大件一个有效的系统防护体系 4、增强工作安全意识,并能有效的实践于工作场景中 目录 1、熟悉主机扫描工具(fping,…...
【MySQL数据库】Ubuntu下的mysql
目录 1,安装mysql数据库 2,mysql默认安装路径 3,my.cnf配置文件? 4,mysql运用的相关指令及说明 5,数据库、表的备份和恢复 mysql是一套给我们提供数据存取的,更加有利于管理数据的服务的网络程序。下…...
GPQA (Graduate-Level Google-Proof QA Benchmark) 数据集
标题:挑战人类与AI的极限:GPQA——一个面向未来的高难度科学问答基准 引言 在人工智能快速发展的今天,大型语言模型(如GPT-4)已能在许多任务中媲美甚至超越人类表现。然而,当面对需要高度专业知识的问题时&…...
WebRTC与EasyRTC:开启智能硬件音视频通讯的全新旅程
在当今数字化时代,音视频通讯技术正以前所未有的速度革新着我们的生活与工作方式。WebRTC与EasyRTC作为这一领域的佼佼者,正携手为智能硬件的音视频通讯注入强大动力,开启全新的篇章。 一、WebRTC与智能硬件融合的崭新趋势 WebRTC技术&…...
利用ffplay播放udp组播视频流
ffplay -fs -fflags nobuffer -flags low_delay -analyzeduration 0 -probesize 32 -framedrop -sync ext -strict experimental udp://224.1.1.1:5001 -fs : 全屏显示 -fflags nobuffer : 禁用输入缓冲(减少100-200ms缓冲延迟) -an…...
基于Ceedling的嵌入式软件单元测试
Ceedling 如果你使用 Ceedling(一个针对 C 代码单元测试的构建管理器),可以更方便地管理测试。Ceedling 会自动处理 Unity 和 CMock 的集成,无需手动编写 Makefile。 1.环境搭建 1.1 Ruby环境 sudo apt-get install ruby1.2 安…...
一文深入了解DeepSeek-R1:模型架构
本文深入探讨了 DeepSeek-R1 模型架构。让我们从输入到输出追踪 DeepSeek-R1 模型,以找到架构中的新发展和关键部分。DeepSeek-R1 基于 DeepSeek-V3-Base 模型架构。本文旨在涵盖其设计的所有重要方面。 📝 1. 输入上下文长度 DeepSeek-R1的输入上下文长…...
机试题——快乐时间
题目描述 小明在工作之余喜欢在电子书城阅读不同的书籍并且获得最大的满足感,因此根据书城针对每本书籍的评分收集了 n 个书籍的打分清单 books,例如第一本书的打分 books[0]5 代表该书的满意程度为 5,第二本书 books[1]-2 代表该书的满意程…...
2024年终总结和2025年规划
2024年的主线是AI基础的学习和读书,虽然AI学习花费了更多的时间,但是读书长久看来于我是更重要的事情,哈哈哈,因此先简单回顾一下读书记忆,回顾我的2024,再展望一下我的2025. 我的2024年记忆 读万卷书&am…...
5 .TCP传输 文件/数据
文件传输 本质:客户端通过标准IO或者文件IO,读取文件中的信息 然后将读取到的信息,通过套接字发送给服务器 服务器接收到后,立刻通过标准IO或者文件IO写到文件 这个过程,服务器要知道2件事 1:客户端发来的文件名字 …...
哈希表(典型算法思想)—— OJ例题算法解析思路
目录 一、1. 两数之和 - 力扣(LeetCode) 算法代码: 1. 问题描述 2. 核心思路 3. 代码实现思路 (1)初始化哈希表 (2)遍历数组 (3)返回结果 4. 时间复杂度分析 …...
CloudberryDB(七)二级索引
在CloudberryDB中,二级索引的概念与PostgreSQL中的类似。但是,由于分布式特性,创建和使用二级索引需要考虑一些额外的因素。以下是关于二级索引的一些要点: 1. **创建索引**:在Greenplum中,可以使用CREATE…...
学习web数据埋点
什么是埋点,以及为什么需要埋点 通过代码主动收集用户行为数据(如点击、浏览、停留时长等),用于数据分析驱动产品优化。 一、前端埋点 在客户端(浏览器、移动端应用)直接采集用户行为数据,通…...
Next.js【详解】CSS 样式方案
全局样式 Global CSS 默认已创建,即 src\app\globals.css,可根据需要修改 默认在全局布局中导入 src\app\layout.tsx import "./globals.css";组件样式 CSS Modules 新建文件 src\app\test\styles.module.css .red {color: red;}导入目标页面…...
HCIA项目实践--RIP相关原理知识面试问题总结回答
9.4 RIP 9.4.1 补充概念 什么是邻居? 邻居指的是在网络拓扑结构中与某一节点(如路由器)直接相连的其他节点。它们之间可以直接进行通信和数据交互,能互相交换路由信息等,以实现网络中的数据转发和路径选择等功能。&am…...
无人机信号调制技术原理
一、调制技术的必要性 频谱搬移:将低频的基带信号搬移到高频的载波上,便于天线辐射和传播。 信道复用: 利用不同的载波频率或调制方式,实现多路信号同时传输,提高信道利用率。 抗干扰: 通过选择合适的调…...
Qt——连接MySQL数据库之编译数据库驱动的方法详细总结(各版本大同小异,看这一篇就够了)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》 《实用硬件方案设计》 《结构建模设…...
leetcode-495.提莫攻击
leetcode-495.提莫攻击 文章目录 leetcode-495.提莫攻击一.题目描述二.代码提交三.解释 一.题目描述 二.代码提交 #include <vector> using namespace std;int findPoisonedDuration(vector<int>& timeSeries, int duration) {int total 0;for (int i 0; i …...
计算机网络知识速记 :HTTP多个TCP连接的实现方式
计算机网络知识速记 :HTTP多个TCP连接的实现方式 在当今互联网高速发展的背景下, web 应用程序对性能的要求日益增加。在众多网络协议中,HTTP (超文本传输协议) 的性能优化显得尤为重要,尤其是在多个TCP连接的管理和实现上。 引…...
5、《Spring Boot自动配置黑魔法:原理深度剖析》
Spring Boot自动配置黑魔法:原理深度剖析 一、引言:为什么Spring Boot能“开箱即用”? Spring Boot的核心理念是**“约定优于配置”,开发者只需引入一个spring-boot-starter-web依赖,就能直接编写RESTful API…...
