在开始了task3的任务前。我阅读了一下优秀大佬的task2的学习笔记和官方提供的《数据竞赛入门讲义》。发现自己缺少了数据清洗这一步。
数据清洗是很重要的,对于异常的数据要进行修正。在我读数据的时候,以target降序的方式看,发现了一些异常:
不同type的情况下,都会出现target<0的情况,也就是用电量小于0。这似乎和题目所处的条件不符合,用电量怎么会小于零呢。所以也许是需要清洗的数据。
数据清洗有两种方式:1.删除异常数据。2.替换异常数据。如果删除了异常数据,那么dataframe里面将会丢失这一天的数据,对于历史平移和窗口平移的算法来说,不好说这是不是一个好的方法。
我参考了
这位大佬的笔记:Datawhale AI夏令营第二期——机器学习 基于神经网络stack融合策略的多模型融合-优快云博客
我试图把负数的点更改成前后项的平均值:
经过漫长的数据清洗后,得到了如下分数:
好的,看来方法不对,不整活了
在对负数数据进行替换后,training‘s l2一直在下降,valid l2一直在上升。根据网络资料可知; 关于 train loss、val loss训练时遇到的问题_trainloss下降 val loss上升-优快云博客
应该是过拟合了!
慎之又慎后,我决定放弃了数据清洗。
开始task3的内容:
在进行时间序列分析时,特征提取是一个至关重要的步骤,因为它直接影响到模型的性能。
时序相关特征:
-
- 历史平移:将过去的值作为当前值的函数,例如,使用前一天的值来预测后一天的值。
- 滑窗统计:使用时间窗口内的统计数据(如平均值、中位数、标准差等)作为特征,这有助于捕捉局部时间范围内的数据特性。
特征优化
这里主要构建了历史平移特征、差分特征、和窗口统计特征;每种特征都是有理可据的,具体说明如下:
(1)历史平移特征:通过历史平移获取上个阶段的信息;
(2)差分特征:可以帮助获取相邻阶段的增长差异,描述数据的涨减变化情况。在此基础上还可以构建相邻数据比值变化、二阶差分等;
(3)窗口统计特征:窗口统计可以构建不同的窗口大小,然后基于窗口范围进统计均值、最大值、最小值、中位数、方差的信息,可以反映最近阶段数据的变化情况。
# 合并训练数据和测试数据
data = pd.concat([train, test], axis=0).reset_index(drop=True)