输入“/”快速插入内容

Task2:时间序列挖掘+ABM构建学习

2024年7月17日创建
2890
4736
6
0
本文讨论了AI for Science(AI+经济)比赛相关内容,包括深入理解赛题的EDA方法、Baseline代码解读,还介绍了基于Mesa库构建ABM的实战。关键要点包括:
1.
赛题提分关键:比赛既可用时间序列解决,也可尝试ABM。关键涨分点在对数据的理解和构造强特征,Task2运行后需根据EDA信息优化代码上分。
2.
EDA分析:通过对比赛数据的统计指标、分时统计、负电价与高电价等分析,发现总负荷近似正态分布,出清价格有大量负价和异常高价;用电有早晚高峰和低谷期,受新能源影响大;气象、节假日对出清价格影响显著,总负荷与出清价格呈分段线性关系。
3.
Baseline解读:导入必要库读取数据,构建时间序列DataFrame,模拟市场生成出清电价,用线性回归转换报价到现实出清价格,最后预测并提交。
4.
ABM构建:基于Mesa库构建ABM,以玻尔兹曼财富模型为例,介绍了构建环境、定义agent的方法。模拟发现财富趋向两极分化,基尼系数稳定在0.6左右。还可调整参数尝试其他模型,模拟更多经济现象 。
💡
教程贡献者说:
前面我们介绍了基本的赛题理解和背景知识,以及一些ABM基础概念,并提供了一键可运行的Baseline。相信大家都已经跑出了自己的第一个分数,并且急切想提分冲刺前排了。
本次比赛具有自身的特殊性,既可以用时间序列解决,也可以尝试使用赛方推荐的ABM,因此在这里我们尝试挖掘更多时序上的信息,帮助找到更多提分点。
此外,这里还会深入介绍ABM模型的构建方法,借助实际的案例和代码实践,让大家感受到ABM的有趣之处,最后手把手带大家跑通一个经典ABM模型:玻尔兹曼财富模型:模拟现实中的财富不平等
话不多说,开始今天的学习吧( ^∇^)
深入理解赛题——探索性数据分析
📌
首先我们先介绍一下什么是EDA:
探索性数据分析(Exploratory Data Analysis, EDA)是一组数据分析技术,旨在总结其主要特征,通常通过可视化手段来实现。EDA 的目标是通过数据的统计摘要和图形展示来发现数据的结构、异常值、模式、趋势、关系以及变量之间的相互作用
现在的数据挖掘类比赛中,模型和方法选择空间往往很小,同时存在不少自动机器学习框架(如AutoGulon、AutoSKLearn)会基于一定规则,自动构造特征,采用尽可能多的模型组合来获得好分数。因此最后的关键涨分点落在了对数据的理解上,并由此构造的强特征(对结果有关键影响的变量)。
因此在拿到一个数据集后,需要对数据做尽可能多的探索,了解数据所在的领域先验知识,数据本身的特性等,并总结为一系列有用的信息。
下面,就让我们对本次比赛的数据做进一步的探索吧(ง •̀_•́)ง。
Task2运行完不会输出submit,只提供了上分关键信息,需要根据EDA信息优化自己代码上分
由于篇幅限制没有黏贴代码在这里,但提供了EDA的代码和数据,可在下方下载:
请将electricity_price_parsed放在EDA.ipynb同级的data文件夹路径
EDA.ipynb
1.61MB
50%
electricity_price_parsed.csv
2.68MB
50%
基本信息
数据基本介绍已经在💹从零入门AI for Science(AI+经济)中,这里不再赘述。
进一步查看数据我们可以发现,出清价格在一小时中是保持不变的,也就是实际上交易时间是1小时而不是15分钟,但总负荷会在一小时中变化。
统计指标分析
其次我们从单变量数值关系入手,探究其统计指标的表现。具体来说可以关注(其中df是pandas的dataframe,df[feature]能够选中一行):
数据的集聚趋势
均值:df[feature].mean()
中位数 df[feature].median()
最大值 df[feature].max()
最小值 df[feature].min()
众数 df[feature].mode()