时间存在的意义就是就是任何事都不可能立刻实现——阿尔伯特•爱因斯坦
序言
第三次打卡开启,第三弹笔记随之而至~
还是老朋友,更多详情可以看Datawhale的baseline文档:https://linklearner.com/activity/12/2/14
看到baseline中的强化学习和时间序列挖掘比较感兴趣,接下来将针对这两个方法做一些简单的分析。
时间序列挖掘
什么是时间序列挖掘?
第14章 挖掘时间序列数据 - 《Data Mining》中文版 (dm-trans.github.io)
时间序列挖掘是数据挖掘的一个分支,它专注于从时间序列数据中提取有价值的信息和知识。大部分模型都可以分为以下两种类型:
实时分析:在实时分析中,实时分析一个或多个序列中的数据点,进行预测。 通常,在不同的数据流上使用近期历史的小窗口进行分析。 这种分析的例子包括预测,偏差检测或事件检测。 当多个系列可用时,通常以时间同步的方式分析它们。 即使在诸如聚类的数据挖掘应用被应用于这些问题的情况下,分析通常也是实时进行的。
回顾性分析:在回顾性分析中,时间序列数据已经可用,随后进行分析。 数据库中不同时间序列的分析有时不会随时间同步。 例如,在ECG读数的时间序列数据库中,数据可能已经在不同时期记录。
当然,Task2中使用的EDA并不属于以上两种类型的任何一种。它可以被视为一个预处理步骤或一种探索性技术,帮助分析师更好地理解和熟悉时间序列数据的特点。
Baseline中对数据做了一些预处理,其中比较重要的就是特征工程,附代码:
train_data["hour"] = electricity_price.index.hour
train_data["day"] = electricity_price.index.day
train_data["month"] = electricity_price.index.month
train_data["year"] = electricity_price.index.year
train_data["weekday"] = electricity_price.index.weekday
# 根据月份信息,判断是否为风季(1-5月和9-12月),创建布尔型 "is_windy_season" 列
train_data["is_windy_season"] = electricity_price.index.month.isin([1, 2, 3, 4, 5, 9, 10, 11, 12])
# 根据小时信息,判断是否为低谷时段(10-15点),创建布尔型 "is_valley" 列
train_data["is_valley"] = electricity_price.index.hour.isin([10, 11, 12, 13, 14, 15])
train_data["quarter"] = electricity_price.index.quarter
# 对时间特征进行独热编码(One-Hot Encoding),删除第一列以避免多重共线性
train_data = pd.get_dummies(
data=train_data, # 需要进行独热编码的 DataFrame
columns=["hour", "day", "month", "year", "weekday"], # 需要独热编码的列
drop_first=True # 删除第一列以避免多重共线性
)
强化学习
如果大家对强化学习懵懵懂懂,也欢迎查看datawhale的教程:https://github.com/datawhalechina/easy-rl
ABM与强化学习的理念非常相像,agent通过策略与环境数据的交互进行分析,生成更精准的判断。当然,这也是本次赛题最困难的地方之一。需要分析的数据时间量太长,涉及的分析体量过大,仅靠task1中的边际定价很难实现复杂的行为分析。在baseline中也提到了两种算法:
-
Wolf-PHC(Win or Learn Fast - Policy Hill Climbing)
-
A3C(Asynchronous Advantage Actor-Critic)
欢迎大家自行查阅(真的是有点复杂)
最后简单写点总结~
这次的赛道虽然可以是说和我的专业领域完全不搭嘎,涉及到很多经济学领域的模型和思路,但是也坚持到了最后,对ABM与时间序列有着更深刻的了解
标签:index,AI,price,Datawhale,electricity,train,序列,data,夏令营 From: https://blog.csdn.net/acknowledgment/article/details/140898221