电力需求预测挑战赛(机器学习)
进阶代码详解
(1)导入模块
此部分包含代码所需的模块
简单介绍一下各个库的作用:
1.LightGBM是一个实现GBDT算法的框架,主要内涵为梯度上升的树算法,支持高效率的并行训练,并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。LightGBM 框架中还包括随机森林和逻辑回归等模型。通常应用于二分类、多分类和排序等场景。
2.GBDT 的主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。
3.TQDM应用类似于一个快速的、可伸展的进度条。
(2)探索性数据分析(EDA)
在数据准备阶段,主要读取训练数据和测试数据,并进行基本的数据展示。
数据简单介绍:
- 其中id为房屋id,
- dt为日标识,训练数据dt最小为11,不同id对应序列长度不同;
- type为房屋类型,通常而言不同类型的房屋整体消耗存在比较大的差异;
- target为实际电力消耗,也是我们的本次比赛的预测目标。
下面进行简单的可视化分析,帮助我们对数据有个简单的了解。
- 不同type类型对应target的柱状图
基本代码:
figure()函数用于创建画布;
bar()函数用于绘制条形柱状图(括号内为条形图内部参数);
label()函数用于设定图像的纵横坐标;
title()函数用于指定图像标题;
- id为00037f39cf的按dt为序列关于target的折线图
plot()函数用于绘制二维统计图象。
(3)特征工程
这里主要构建了 历史平移特征 和 窗口统计特征;每种特征都是有理可据的,具体说明如下:
- 历史平移特征:通过历史平移获取上个阶段的信息;如下图所示,可以将d-1时间的信息给到d时间,d时间信息给到d+1时间,这样就实现了平移一个单位的特征构建。
- 窗口统计特征:窗口统计可以构建不同的窗口大小,然后基于窗口范围进统计均值、最大值、最小值、中位数、方差的信息,可以反映最近阶段数据的变化情况。如下图所示,可以将d时刻之前的三个时间单位的信息进行统计构建特征给我d时刻。
reset_index()函数的作用是将行索引重置为列数据。
(4)模型训练与测试集预测
这里选择使用Lightgbm模型,也是通常作为数据挖掘比赛的基线模型,在不需要过程调参的情况的也能得到比较稳定的分数。 另外需要注意的训练集和验证集的构建:因为数据存在时序关系,所以需要严格按照时序进行切分,
- 这里选择原始给出训练数据集中dt为30之后的数据作为训练数据,之前的数据作为验证数据,
- 这样保证了数据不存在穿越问题(不使用未来数据预测历史数据)。
训练与验证精度: