作为平时搞数据分析的,这次电力预测竞赛踩了不少坑,总结一些特别重要的经验,全是实打实踩出来的教训,分享给大家:
-
作为平时搞数据分析的,这次电力预测竞赛踩了不少坑,也总结了一些官方没说但特别重要的经验,全是实打实踩出来的教训,分享给大家:
- 数据集一定要提前切好,不然训练的时候真的挡手挡脚
1.1 我主要看三个指标:MAE看整体均值准不准,RMSE看极端值的偏差大不大,最重要的是平均日收益,这个直接对应比赛分数
1.2 训练阶段绝对不能用全量数据,一定要自己切一份验证集出来
训练时的划分:
样本内:2025年1-10月(专门用来训模型)
样本外:2025年11-12月(自己留的测试集)
目的就是用已知的真实数据测模型效果,调参数改代码
最后提交成绩的时候再用整个2025年的数据训,预测2026年1-2月的结果就行
1.3 滚动预测这个大坑我踩得最深!最后发现直接预测效果反而更好
先给没踩过的人解释下:比如你要预测1月20号的负荷,但没有1月19号的真实数据,就只能用19号的预测值当特征,再去推20号的,一步步往后滚
理论上这个方法是对的,能让模型一直看到最新的趋势,但实际跑下来误差会一天一天累计,越往后越离谱
我试过完全正确的滚动预测写法,结果还不如直接一次性预测未来两个月的效果好,这个真的反直觉,但亲测有效
1.4 一定要小心验证集的数据泄露!这个是最致命的坑
很多人验证集分数很高,一提交就崩,90%都是这个原因
错误做法:算验证集的滚动均值、滞后特征的时候,用了未来的真实数据。比如算11月1号的24小时滚动均值,把11月1号到2号的真实电价都算进去了,这相当于考试提前看了答案
正确做法:验证集里所有的滞后特征、滚动特征,都只能用预测值来算,绝对不能碰真实数据
这个一定要一行一行仔细检查,差一个字符结果就天差地别
1.5 预测精度会随着时间越来越差,一定要动态调整策略
时间序列预测有个铁律:越远的未来越不准
所以我做交易策略的时候,会根据预测的远近动态调整可成交的范围:
刚预测的前3天:精度最高,可以看3天内的高低价差
中间的几天:精度中等,只看2天内的
最后面的十几天:精度已经很低了,只看当天的价差
别贪心,越往后越要保守,不然很容易踩坑
1.6 滞后特征的权重也要动态调整
和上面那个道理一样,滞后特征虽然好用,但越往后越不准
可以设计成:预测前几天的时候,多用一些近期的滞后特征;预测越远的未来,就慢慢减少滞后特征的权重,多靠时间特征和趋势特征
1.7 别偷懒按天预测!一定要按最细的粒度来
比如官方给的是15分钟一个点,就老老实实按15分钟预测
粒度越细,能捕捉到的峰谷就越准,最后算出来的收益差很多
1.8 所有能拿到的数据都别浪费
除了历史负荷数据,气象数据(温度、湿度、风速)、节假日信息、工作日周末这些,能加的都加上
每加一个有用的特征,分数就能涨一点,积少成多
1.9 这次最大的收获:时序预测根本不用搞什么复杂的神经网络
用最普通的GBDT(比如LightGBM)效果反而最好
虽然决策树本身不懂什么是时间顺序,但你只要通过特征工程,把时间信息(滞后、滚动、时间特征)明明白白喂给它,它学出来的效果比那些专门的时序网络还好,还快还稳
这个真的颠覆了我之前的认知
1.10 最后一定要做多模型融合
哪怕是两个参数不一样的LightGBM,融合之后效果也会比单个模型好
不同的模型会犯不同的错误,融合之后就能互相抵消偏差,结果更稳定,泛化能力也更强


1.11指数加权移动平均:近期数据权重更大,平滑短期波动
1.12尝试端对端的各种进化路线中,感觉有效,进一步要摸索,反正还有时间
2.关于思考题,我也发现一些很有必要要记录的心得:
-
气象数据到底怎么用才最有效我没有硬塞给模型,而是先理清楚逻辑:气象是通过影响用电负荷,间接影响电价的。1.1 我整理了这么几类特征,亲测都有用温度相关:原始温度、当天和前一天的温度差、每小时的温度变化率风速相关:风速、风速变化率光照相关:光照强度、当天的光照时长还有几个组合特征:温度 × 风速、温度 × 光照,这两个效果特别好1.2 一定要分时段建模,不要一锅煮白天的时候,光照和温度的影响最大晚上的时候,风速和温度的影响更大不同季节也要分开看,夏天和冬天温度对电价的影响程度完全不一样
-
历史电价的滞后特征到底有没有用?答案是:非常有用,但要看预测的时间长度。2.1 短期预测(1-3 天)滞后特征是所有特征里最重要的,没有之一这时候预测也相对准确,可以放心大胆地用历史信息2.2 长期预测(超过 7 天)滞后特征的作用就会明显下降而且误差会越滚越大,在错误的基础上再预测,只会错得更离谱这时候应该更多地依赖时间特征和周期特征
-
跑了几百轮实验,总结出真正有用的核心特征其他乱七八糟的特征加进去反而会引入噪声,拖慢速度还降低效果。真正能打的就这几个:lag_1、lag_24、lag_96rolling_mean_24、rolling_std_24hour、dayofweek还有 ewm_12,这个指数加权平均的效果比普通的滚动平均好很多
-
充放电策略有没有更高效的方法?这个才是最后拉开分数的关键,模型预测准只是基础。4.1 滚动优化是对的,但绝对不能滚动预测可以每天根据最新的真实数据,重新优化接下来的充放电计划但千万不要用前一天的预测值当特征,再去预测后一天的,误差累积太可怕了4.2 一定要根据预测的把握程度调整策略预测把握大的时候,可以主动进攻,争取更高的收益预测误差大的时候,就保守操作,少赚点没关系,别亏了就行
经过上述努力,我的分数已经从一般变得挺高的了,看到了信心,但感觉还有不少可以优化的地方,继续加油,争取再往上冲一冲。