《Datawhale AI 夏令营学习笔记》电力需求预测挑战赛

2024年7月17日

星期三

       在这个充满热情与探索的夏天,我有幸参加了 DataWhale 组织的 AI 夏令营。这段学习之旅不仅让我深入了解了人工智能的奇妙世界,更激发了我对这一领域的无限热爱和追求。以下是我在夏令营中的学习笔记总结。

Task 1

     目标:跑通baseline,体验机器学习解决问题的流程,基本了解赛题要求,理解赛题场景

一、知识点

1.时间序列问题的定义

2.传统时序模型

 二、了解时间序列预测问题

 常见的时间序列场景有:

  1.金融领域、气象领域、销售预测、库存管理、能源领域、医疗领域

 时间序列问题的数据往往有如下特点:

  1.时间依赖性:数据点之间存在时间上的连续性和依赖性。

  2.非平稳性:数据的统计特性(如均值、方差)随时间变化。

  3.季节性:数据表现出周期性的模式,如年度、月度或周度。

  4.趋势:数据随时间推移呈现长期上升或下降的趋势。

  5.周期性:数据可能存在非固定周期的波动。

  6.随机波动:数据可能受到随机事件的影响,表现出不确定性。

时间序列预测问题可以通过多种建模方法来解决,包括传统的时间序列模型、机器学习模型和深度学习模型。

三、精读代码

1.导入库:首先,代码导入了需要用到的库,包括 pandas(用于数据处理和分析)。

2.读取数据:代码通过使用 pd.read_csv 函数从文件中读取训练集和测试集数据,并将其存储在 train.csvtest.csv 两个数据框中。

3.计算最近时间的用电均值

  - 计算训练数据最近11-20单位时间内对应id的目标均值,可以用来反映最近的用电情况。

4.将用电均值直接作为预测结果

- 这里使用merge函数根据'id'列将testtarget_mean两个DataFrame进行左连接,这意味着测试集的所有行都会保留。

5.保存结果文件到本地:

- 使用to_csv()函数将测试集的'id''dt''target'列保存为CSV文件,文件名为'submit.csv'index=None参数表示在保存时不包含行索引。

6.详细代码

# 1. 导入需要用到的相关库

# 导入 pandas 库,用于数据处理和分析

import pandas as pd

# 导入 numpy 库,用于科学计算和多维数组操作

import numpy as np

# 2. 读取训练集和测试集

# 使用 read_csv() 函数从文件中读取训练集数据,文件名为 'train.csv'

train = pd.read_csv('./data/data283931/train.csv')

# 使用 read_csv() 函数从文件中读取测试集数据,文件名为 'train.csv'

test = pd.read_csv('./data/data283931/test.csv')

# 3. 计算训练数据最近11-20单位时间内对应id的目标均值

target_mean = train[train['dt']<=20].groupby(['id'])['target'].mean().reset_index()

# 4. 将target_mean作为测试集结果进行合并

test = test.merge(target_mean, on=['id'], how='left')

# 5. 保存结果文件到本地

test[['id','dt','target']].to_csv('submit.csv', index=None)

四、心得体会

通过Task 1 的学习感受到ai的强大,一步到位。用ai解决实际问题的快捷,但是作为完完全全的小白还是有很多不懂的地方会继续加油的!最后附上自己的分数。

Task 2 入门lightgbm,开始特征工程

       目标:通过baseline代码和进阶代码分析数据、学习特征构建方式,分数初步提高,入门机器学习建模

一、知识点

1.竞赛通用流程

2.数据分析

3.构建特征的方式

4.机器学习模型如何选择、建模

二、基础概念入门

GBDT

GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。

GBDT不仅在工业界应用广泛,通常被用于多分类、点击率预测、搜索排序等任务;在各种数据挖掘竞赛中也是致命武器,据统计Kaggle上的比赛有一半以上的冠军方案都是基于GBDT

LightGBM

LightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架,支持高效率的并行训练,并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。

LightGBM 框架中还包括随机森林和逻辑回归等模型。通常应用于二分类、多分类和排序等场景。

例如:在个性化商品推荐场景中,通常需要做点击预估模型。使用用户过往的行为(点击、曝光未点击、购买等)作为训练数据,来预测用户点击或购买的概率。根据用户行为和用户属性提取一些特征,包括:

      类别特征(Categorical Feature):字符串类型,如性别(男/女)。

      物品类型:服饰、玩具和电子等。

      数值特征(Numrical Feature):整型或浮点型,如用户活跃度或商品价格等。

三、进阶代码详解

完整代码如下:

(1)导入模块

此部分包含代码所需的模块

(2)探索性数据分析(EDA)

在数据准备阶段,主要读取训练数据和测试数据,并进行基本的数据展示。

数据简单介绍:

id为房屋id,

dt为日标识,训练数据dt最小为11,不同id对应序列长度不同;

type为房屋类型,通常而言不同类型的房屋整体消耗存在比较大的差异;

target为实际电力消耗,也是我们的本次比赛的预测目标。

不同type类型对应target的柱状图

id为00037f39cf的按dt为序列关于target的折线图

(3)特征工程

1.历史平移特征:通过历史平移获取上个阶段的信息;

2.窗口统计特征:窗口统计可以构建不同的窗口大小,然后基于窗口范围进统计均值、最大值、最小值、中位数、方差的信息,可以反映最近阶段数据的变化情况。

(4)模型训练与测试集预测

       这里选择使用Lightgbm模型,也是通常作为数据挖掘比赛的基线模型,在不需要过程调参的情况的也能得到比较稳定的分数。另外需要注意的训练集和验证集的构建:因为数据存在时序关系,所以需要严格按照时序进行切分,这里选择原始给出训练数据集中dt为30之后的数据作为训练数据,之前的数据作为验证数据,这样保证了数据不存在穿越问题(不使用未来数据预测历史数据)。

四、心得体会

通过Task 2 的学习理解了竞赛通用流程,精读baseline代码,与竞赛流程一一对应,学习进阶代码并实践,对赛题数据进行分析,了解如何构建特征,了解如何选择机器学习模型、建模。

代码修改好几次仍然没有实现上分,通过Task 3继续学习实现上分。

Task 3  尝试使用深度学习方案

        目标:通过进阶代码入门深度学习建模,持续提分

知识点:1.特征优化            2.模型优化与融合         3.深度学习模型

一、时间序列预测特征提取和分析方法

1、日期变量:时间序列数据通常包含日期或时间信息。这可以细分为不同的时间尺度,如年、月、周、日、小时、分钟等。在特征提取时,可以将这些日期变量转换为数值型特征,以便于模型处理。

2、周期性:许多时间序列数据表现出周期性,例如,一天中的小时数、一周中的天数、一年中的月份等。识别并利用这些周期性特征可以帮助模型捕捉数据的内在规律。

3、趋势性:趋势性是指时间序列数据随时间推移呈现的上升或下降的总体模式。这可以通过诸如移动平均或线性回归等方法来提取,并作为特征输入模型。

4、距离某天的时间差:这涉及到从特定日期(如产品发布日、重要事件日等)计算时间差。这种特征可以帮助模型了解数据点与特定事件的相对位置。

5、时间特征组合:将不同的时间单位组合起来(如年和周、月和日)可以提供更丰富的时间上下文信息,有助于揭示数据中的复杂模式。

6、特殊日期:识别时间序列中的特殊日期或事件(如节假日、促销活动等)并将其作为特征,可以帮助模型解释与这些事件相关的数据波动。

7、异常点:时间序列中可能存在异常点,这些点与其他数据点显著不同。正确识别并处理这些异常点对于提高预测精度至关重要。

8、时序相关特征

历史平移:将过去的值作为当前值的函数,例如,使用前一天的值来预测后一天的值。

滑窗统计:使用时间窗口内的统计数据(如平均值、中位数、标准差等)作为特征,这有助于捕捉局部时间范围内的数据特性。

9、强相关特征:识别与目标变量强烈相关的特征,并利用这些特征来构建预测模型。

二、特征优化

这里主要构建了历史平移特征、差分特征、和窗口统计特征;每种特征都是有理可据的,具体说明如下:

(1)历史平移特征:通过历史平移获取上个阶段的信息;

(2)差分特征:可以帮助获取相邻阶段的增长差异,描述数据的涨减变化情况。在此基础上还可以构建相邻数据比值变化、二阶差分等;

(3)窗口统计特征:窗口统计可以构建不同的窗口大小,然后基于窗口范围进统计均值、最大值、最小值、中位数、方差的信息,可以反映最近阶段数据的变化情况。

参考代码如下:

三、总结

时间序列预测是一个不断发展的领域,随着技术的进步,我们可以期待更多的优化方法和模型的出现。深度学习模型,特别是LSTM和其变体,已经在许多时间序列预测任务中显示出了优越的性能。未来的研究可能会集中在以下几个方面:

  • 更复杂的模型结构:如引入注意力机制的LSTM模型,以更好地捕捉时间序列中的长期依赖关系。

  • 多模态数据融合:结合时间序列数据和其他类型的数据,如文本或图像,以提供更全面的分析。

  • 模型解释性:提高模型的可解释性,以便更好地理解预测结果。

  • 自动化特征工程:开发自动化的特征工程工具,以减少手动特征提取的工作量。

  • 实时预测:提高模型在实时数据流上的预测能力。

  • 模型鲁棒性:提高模型对异常值和噪声的鲁棒性。

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值