机器学习-使用 XGBoost 时间序列预测能源消耗

简而言之,时间序列预测是根据以前的历史数据预测未来值的过程。目前使用时间序列预测的最热门领域之一是加密货币市场,人们希望预测比特币或以太坊等流行加密货币的价格在未来几天甚至更长时间内将如何波动。另一个现实世界的案例是能源消耗预测。尤其是在能源成为主要讨论焦点之一的当今世界,能够准确预测能源消耗需求对于任何电力公司来说都是至关重要的工具。在本文中,

问题

我们将重点关注能源消耗问题,给定一个城市中不同家庭日常能源消耗的足够大的数据集,我们的任务是尽可能准确地预测未来的能源需求。出于本教程的目的,我选择了伦敦能源数据集,其中包含英国伦敦市 5,567 个随机选择的家庭在 2011 年 11 月至 2014 年 2 月期间的能源消耗。为了改进我们的预测,我们将此数据集与伦敦天气数据集结合起来,以便在此过程中添加天气相关数据。

这是这个迷你系列的第一部分。阅读完本文后,请务必检查下一部分,该部分通过合并滞后特征显着改善了结果。

预处理

在每个项目中我们要做的第一件事就是充分了解数据并在需要时对其进行预处理。要使用 pandas 查看数据,我们可以执行以下操作:

“LCLid”是标识每个家庭的唯一字符串,“Date”是不言自明的,“KWH”是该日期消耗的千瓦时总数,并且根本没有缺失值。由于我们想要以一般方式而不是每个家庭来预测消耗量,因此我们需要按日期对结果进行分组并平均千瓦时。

在这一点上,如果我们能够了解这些年来消费的变化方式,那就太好了。线图可以揭示这一点:

整个数据集的能耗图

季节性特征十分明显。在冬季,我们观察到能源需求较高,而在整个夏季,能源消耗处于最低水平。这种行为在数据集中每年都会重复,具有不同的高值和低值。为了可视化一年内的波动,我们可以这样做:

年能源消耗

为了训练像 XGBoost 和 LightGB 这样的模型,我们需要自己创建特征。目前,我们只有一项功能:完整日期。我们可以根据完整日期提取不同的特征,例如星期几、一年中的某一天、月份等。为了实现这一目标,我们可以这样做:

因此,“日期”功能目前是多余的。在删除它之前,我们将使用它将数据集拆分为训练集和测试集。与传统的训练相反,在时间序列中,我们不能只是以随机的方式分割集合,因为数据的顺序非常重要,而且我们只能合并以前的数据。否则,我们可能会被提示预测一个值,同时也考虑到未来的值!该数据集包含近 2.5 年的数据,因此对于测试集,我们将仅使用最近 6 个月的数据。如果训练集更大,我们会使用去年全年作为测试集。

为了再次可视化训练集和测试集之间的分割和区分,我们可以绘制:

可视化训练-测试分离

现在我们可以删除“日期”功能并创建训练和测试集:

训练模型

超参数优化将通过网格搜索来完成。网格搜索采用参数和一些值作为配置,并尝试每种可能的组合。达到最佳结果的参数配置将是形成最佳估计器的参数配置。网格搜索也利用交叉验证,因此提供适当的分割机制至关重要。同样,由于问题的性质,我们不能只使用简单的 k 折交叉验证。Scikit learn 提供了TimeSeriesSplit方法,该方法以尊重连续性的方式增量地分割数据。

对于 LightGB 模型,我们可以通过提供不同的参数来完成相同的操作:

评估

为了评估测试集上的最佳估计器,我们将计算一些指标。它们是平均绝对误差 (MAE)、均方误差 (MSE) 和平均绝对百分比误差 (MAPE)。其中每一个都提供了对训练模型的实际性能的不同视角。此外,我们将绘制线图以更好地可视化模型的性能。

最后,为了评估上述任何模型,我们必须运行以下命令:

XGBoost 结果

LightGBM 结果

尽管 XGBoost 可以更准确地预测冬季的能耗,但为了严格量化和比较性能,我们需要计算误差指标。通过查看下表,很明显 XGBoost 在所有情况下都优于 LightGBM。

预处理天气数据

该模型表现相对较好,但是有没有办法进一步改进呢?答案是肯定的。有许多不同的提示和技巧可以用来获得更好的结果。其中之一是使用与能耗直接或间接相关的辅助功能。例如,天气数据在预测能源需求时可以发挥决定性作用

首先我们看一下数据的结构:

需要填写的缺失数据有多种。填充缺失数据并非易事,取决于具体情况。由于我们的天气数据每天都取决于前几天和后几天,因此我们将通过插值来填充这些值。此外,我们将把“date”列转换为“datetime”,然后合并两个数据帧以获得一个增强的数据帧。

请记住,生成增强集后,我们必须重新运行拆分过程并获取新的“training_data”和“testing_data”。不要忘记也包含新功能。

无需更新训练步骤。在新数据集上训练模型后,我们得到以下结果:

XGBoost 根据天气结果进行增强

LightGBM 根据天气结果进行增强

天气数据显着提高了两个模型的性能。特别是,在 XGBoost 场景中,MAE 降低了近 44%,而 MAPE 从 19% 升至 16%。对于 LightGBM,MAE 下降了 42%,MAPE 从 19.8% 下降到 16.7%。

结论和未来的步骤

集成模型是非常强大的机器学习工具,可用于时间序列预测问题。在本文中,我们了解了在能源消耗的情况下这是如何完成的。首先,我们仅使用日期因素来训练模型。后来,我们在训练过程中考虑了与手头任务相关的其他数据,以便显着提高结果。

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

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

相关文章

智能井盖传感器,物联网智能井盖系统

随着城市人口的不断增加和城市化进程的不断推进,城市基础设施的安全和可靠性变得愈发重要,城市窨井盖作为城市基础设施重要组成部分之一,其安全性事关城市安全有序运行和居民生产生活安全保障。 近年来,各地都在加强城市窨井盖治理…

【2023新教程】树莓派定时自动拍照并上传腾讯云对象存储COS

1 换源 仅适用于Release date: May 3rd 2023、Debian version: 11 (bullseye)这个树莓派OS版本,其他版本不保证有效。 首先使用如下命令,查看自己树莓派的架构。 uname -a结果如下: 如果红圈处显示为aarch64,使用命令sudo na…

【TypeScript】声明文件

在 TypeScript 中,声明文件(Declaration Files)用于描述已有 JavaScript 代码库的类型信息,以便在 TypeScript 项目中使用这些代码库时获得类型支持。 当你在 TypeScript 项目中引用外部 JavaScript 模块或库时,可能会…

设计模式之组合模式(Composite)的C++实现

1、组合模式的提出 在软件开发过程中,使用者Client过多依赖所操作对象内部的实现结构,如果对象内部的实现结构频繁发生变化,则使用者的代码结构将要频繁地修改,不利于代码地维护和扩展性;组合模式可以解决此类问题。组…

【IDEA配置创建类注释模板和方法模板教程】

IDEA配置创建类注释模板和方法模板教程 废话不多说直接上干货 废话不多说直接上干货 先看效果: 类: 方法: IDEA类注释模板 ,配置步骤; 直接用模板: /*** description: ${description}* author: Lynn.OuYang* create: ${YEAR}-${MONTH}-${DAY} ${HOU…

期权分仓开户资金是否安全?具体保障措施有哪些?

网上关于期权分仓系统的真假一直都没有定论,两方人的争论也让很多没有接触过期权分仓系统的人摸不着头脑,那么期权分仓靠谱吗?资金在里面安全吗?下文为大家科普期权分仓开户资金是否安全?具体保障措施有哪些? 一、期权…

LLMs领域适应的预训练Pre-training for domain adaptation

到目前为止,我强调了在开发应用程序时,您通常会使用现有的LLM。这为您节省了大量时间,并可以更快地得到一个工作原型。 但是,有一种情况下,您可能会发现有必要从头开始预训练自己的模型。如果您的目标领域使用的词汇和…

开源容灾备份软件,开源cdp备份软件

数据的安全性和完整性面临着硬件问题、黑客攻击、人为错误等各种威胁。在这种环境下,开源容灾备份软件应运而生,通过提供自动数据备份和恢复,有效地保证了公司的数据安全。 一、开源容灾备份软件的定义和作用 开源容灾备份软件是一种基于开源…

Python Opencv实践 - 直方图显示

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#图像直方图计算 #cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate) #images&…

C语言刷题(16)

第一题 第二题 注意 Printf()可以直接在里面放字符指针进行打印 第三题 第四题 第五题 第六题 第七题 或者

edge浏览器使用jupyter notebook删除快捷键没有用?

按快捷键删除没有用,出现一个黑色方框,里面的数字不断在加 解决方法: 在扩展中将Global Speed控制视频速度的插件关掉,或者将控制速度的快捷键改一下 可以在浏览器设置 》扩展 》管理扩展 里面关掉该插件 可以在Global Speed 的…

论文解读:Image-Adaptive YOLO for Object Detection in Adverse Weather Conditions

发布时间:2022.4.4 (2021发布,进过多次修订) 论文地址:https://arxiv.org/pdf/2112.08088.pdf 项目地址:https://github.com/wenyyu/Image-Adaptive-YOLO 虽然基于深度学习的目标检测方法在传统数据集上取得了很好的结果&#xf…

C++设计模式之适配器模式

一、适配器模式 适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换成另一个类所期望的接口,以便两个类能够协同工作。 适配器模式可以解决现有类接口与所需接口不匹配的问题,使得原本因接口不…

Mesa 23.2 开源图形栈现已可供下载

导读作为 Mesa 23 系列的第二个重要版本,Mesa 23.2 开源图形栈现已可供下载,它为 AMD GPU 的 RADV Vulkan 驱动程序带来了新功能,改进了 Linux 游戏,并新增了 Asahi 功能。 Mesa 23.2 的亮点包括 Asahi 上的 OpenGL 3.1 和 OpenGL…

Springboot 实践(8)springboot集成Oauth2.0授权包,对接spring security接口

此文之前,项目已经添加了数据库DAO服务接口、资源访问目录、以及数据访问的html页面,同时项目集成了spring security,并替换了登录授权页面;但是,系统用户存储代码之中,而且只注册了admin和user两个用户。在…

3DXML在线查看与转换工具

3DXML 由软件巨头达索系统推出,是 3D 设计和工程中的关键文件格式,提供了封装和共享 3D 数据的系统方法。 为了将简单性与丰富的数据表示相结合,3DXML 在与 STEP 等其他文件格式相比时展现出其独特的优势,特别是在数据丰富性和紧凑…

DAY24

题目一 啊 看着挺复杂 其实很简单 第一种方法 就是纵轴是怪兽编号 横轴是能力值 看看能不能打过 逻辑很简单 看看能不能打得过 打过的就在花钱和直接打里面取小的 打不过就只能花钱 这种方法就导致 如果怪兽的能力值很大 那么我们就需要很大的空间 所以引出下一种做法 纵…

GPT4模型架构的泄漏与分析

迄今为止,GPT4 模型是突破性的模型,可以免费或通过其商业门户(供公开测试版使用)向公众提供。它为许多企业家激发了新的项目想法和用例,但对参数数量和模型的保密却扼杀了所有押注于第一个 1 万亿参数模型到 100 万亿参…

视频监控平台EasyCVR视频汇聚平台档案库房图书馆等可视化管理平台应用场景全面解析

档案是一种特殊的记录留存文献,具有珍贵的精神财富价值。它们是人类活动的真实见证,是辉煌时刻的历史记录,在社会发展和经济建设中发挥着至关重要的作用。 随着市场经济的不断发展和人类文明的飞速推进,档案的价值和作用变得越来…

K8S如何部署Redis(单机、集群)

在今天的讨论中,我们将深入研究如何将Redis数据库迁移到云端,以便更好地利用云计算的优势提高数据管理的灵活性。 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多…