比赛官网 :https://competition.ai4s.com.cn/

能源电力赛题解读 :https://ailc.datawhale.cn/hall/group/76/task/164

针对比赛的经验

AI算法赛的核心不是一次性做出最优方案,而是建立一套“实验—评估—提交—反馈—优化”的闭环迭代流程。


一、理解比赛评价体系

在开始优化前,首先明确比赛的目标指标。

1. 官方评分指标

需要明确:

  • 排行榜依据什么评分
  • 分数越大越好还是越小越好
  • 线上评分与线下评分是否一致

例如(电力方向):

任务类型 常见指标
回归预测 RMSE、MAE
分类任务 Accuracy、F1
排序推荐 NDCG、MAP
策略优化 总收益、收益率

2. 建立本地评估体系

任何改动都必须先经过本地验证。

常见本地指标:

  • 验证集 RMSE
  • 验证集 MAE
  • F1 Score
  • AUC
  • 平均收益

原则:

  • 误差类指标越小越好
  • 准确率类指标越大越好
  • 收益类指标越大越好

例如:

原模型:

1
2
RMSE = 0.648
平均收益 = 11618

改进后:

1
2
RMSE = 0.592
平均收益 = 12340

说明该改动值得进一步验证。


二、从 Baseline 开始建立基准线

不要直接大改模型。

第一步应该:

1
2
3
4
5
6
7
运行官方 Baseline

获得本地指标

提交一次

记录线上得分

建立:

1
Baseline= 本地指标 + 官方得分

这是一切优化的参照物。

如果没有基准线,后续无法判断改进是否有效。


三、单变量实验原则

每次只修改一个因素。

错误做法:

1
2
3
4
5
同时:
+ 新特征
+ 新模型
+ 新参数
+ 新策略

最终涨分或掉分时无法定位原因。

正确做法:

1
2
3
4
5
6
7
8
实验1:
只增加滞后特征

实验2:
只增加气象特征

实验3:
只更换模型

四、建立“本地指标 → 线上得分”的映射关系

比赛中最重要的事情之一:

判断本地指标是否可信。

理想情况:

1
2
3
本地RMSE下降

线上分数提高

连续多次成立:

1
2
RMSE ↓
线上得分 ↑

说明:

1
本地验证集有效

后续可以放心依据本地指标优化。


警惕指标失效

出现情况:

1
2
RMSE下降很多
但线上得分下降

连续出现数次后说明:

1
验证集与测试集分布不一致

此时不能继续盲目优化 RMSE。

需要重新思考:

  • 数据划分方式
  • 验证集构造方式
  • 是否发生过拟合

五、合理利用提交次数

提交次数本质上是一种资源。

不要一次性全部用完。

推荐流程:

第一次提交

验证当天最有把握的方案。

例如:

1
2
RMSE最低
收益最高

优先提交。


第二次提交

验证存在争议的改动。

例如:

1
增加气象特征

本地略有提升:

1
2
RMSE:
0.592 → 0.585

不确定是否真实有效。

此时可以通过线上得分验证。


第三次提交

根据前两次结果决定。

情况一:

1
两个改动都涨分

则尝试融合:

1
方案A + 方案B

情况二:

1
两个改动都掉分

则退回稳定版本重新尝试。


六、完整记录实验过程

所有实验必须留痕。

建议记录:

内容 说明
日期 实验时间
版本号 v1、v2、v3
改动内容 修改了什么
本地指标 RMSE、MAE等
策略收益 收益指标
线上得分 提交结果
结论 是否保留

示例:

版本 改动
v1 Baseline
v2 增加滞后特征
v3 删除无效特征
v4 引入气象数据

长期来看:

1
2
3
实验记录
=
比赛期间最重要的资产

很多高分方案并非来自灵感,而是来自实验积累。


七、优化顺序:从简单到复杂

第一层:特征工程

优先级最高。

常见方向:

历史特征

例如:

1
2
3
昨天同一时刻价格
前1小时价格
前24小时均价

滚动统计特征

例如:

1
2
3
过去24小时均值
过去24小时最大值
过去24小时标准差

时间特征

例如:

1
2
3
4
小时
星期几
月份
节假日

外部特征

例如:

1
2
3
4
天气
温度
风速
降雨量

通常特征工程带来的收益最大。


第二层:模型优化

在特征稳定后再考虑模型。

常见路线:

1
2
3
4
5
6
7
8
9
GBDT

Random Forest

XGBoost

LightGBM

CatBoost

进一步可以:

1
2
3
4
模型融合
模型集成
Stacking
Blending

第三层:参数优化

固定模型后调整参数。

例如:

1
2
3
4
树深度
学习率
树数量
叶子数

采用:

1
2
3
Grid Search
Random Search
Bayesian Optimization

进行搜索。


第四层:策略优化

许多比赛不仅比预测,还比决策。

不要简单:

1
2
预测高就买
预测低就卖

而应该增加:

风险控制

例如:

1
2
预测差值小于阈值
不操作

置信度控制

例如:

1
2
预测越确定
仓位越大

保守机制

例如:

1
极端预测时限制最大操作量

提升策略稳健性。


八、形成迭代闭环

最终应形成如下工作流:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
运行 Baseline

建立本地指标

设计单一改动

本地验证

记录结果

提交验证

分析线上反馈

保留有效改动

继续下一轮优化

高分往往不在于模型更复杂,而在于实验流程更规范、验证体系更可靠、迭代效率更高。持续进行小步快跑、可验证的优化,通常比一次性进行大规模改造更容易取得稳定提升。

以电力等预测类题材为例

提示词总结

目的:快速理解 Baseline,找到第一批可优化方向

提示词:

我正在参加一个时间序列预测算法竞赛,请分析我的 Baseline 项目代码。从以下几个方面进行系统审查:

  1. 当前使用了哪些特征;
  2. 哪些特征可能贡献较低或属于噪声;
  3. 哪些重要特征可能被遗漏;
  4. 当前模型结构和训练流程是什么;
  5. 当前验证方式是否合理;
  6. 给出按投入产出比排序的优化建议;
  7. 区分哪些属于特征工程、模型优化、数据处理和策略优化。

请按照“问题发现 → 原因分析 → 修改建议 → 预期收益”格式输出。


目的:分析特征重要性并筛选有效特征

提示词:

请基于我的训练代码和数据结构,帮我设计一套特征筛选方案。

要求:

  1. 输出特征重要性分析方法;
  2. 比较 Feature Importance、Permutation Importance 和 SHAP 的优缺点;
  3. 给出删除低价值特征的实验流程;
  4. 设计消融实验表格;
  5. 告诉我如何判断某个特征应该保留还是删除。

请给出具体执行步骤和实验记录模板。


目的:设计时间序列滞后特征

提示词:

我正在做时间序列预测任务,请帮我系统设计 Lag 特征方案。

要求:

  1. 分析当前数据的周期性;
  2. 推荐适合的 Lag 特征;
  3. 推荐日周期、周周期和长周期特征;
  4. 说明每种 Lag 特征可能带来的收益;
  5. 给出避免数据泄漏的方法;
  6. 说明测试集无法获取未来真实值时的处理策略。

请按照“特征名称 → 构造逻辑 → 风险 → 优先级”输出。


目的:设计滚动统计特征

提示词:

请作为高级特征工程专家,帮我为时间序列预测任务设计 Rolling 特征体系。

要求覆盖:

  • Rolling Mean
  • Rolling Std
  • Rolling Max
  • Rolling Min
  • Rolling Median
  • EWMA(指数加权均值)

请分析:

  1. 每种特征的意义;
  2. 适合哪些场景;
  3. 推荐窗口长度;
  4. 如何避免未来数据泄漏;
  5. 如何验证特征有效性。

最后给出优先级排序。


目的:发现外部数据价值

提示词:

请从领域知识角度分析我的预测目标。

要求:

  1. 画出影响目标变量的因果链;
  2. 找出可能的上游数据源;
  3. 分析哪些外部数据最值得引入;
  4. 按预期收益排序;
  5. 给出引入后的特征构造思路。

请重点关注能够提前影响目标变量的先行指标。


目的:分析气象数据利用方案

提示词:

我有一批 NetCDF(.nc)格式气象数据。

请帮我设计完整的特征工程流程:

  1. 如何查看变量;
  2. 哪些变量最值得使用;
  3. 如何进行空间聚合;
  4. 如何进行时间对齐;
  5. 如何处理缺失值;
  6. 如何构造可用于机器学习的特征;
  7. 如何验证气象特征是否有效。

请按照数据处理流水线输出。


目的:设计系统化实验方案

提示词:

请帮我建立算法竞赛实验管理体系。

要求:

  1. 设计版本命名规则;
  2. 设计实验记录表;
  3. 设计提交记录表;
  4. 设计消融实验模板;
  5. 设计对照实验流程;
  6. 告诉我如何判断一次实验是否成功。

目标是避免重复试验,提高迭代效率。


目的:判断本地指标是否可信

提示词:

请帮助我评估本地验证集指标与线上排行榜分数之间的关系。

要求:

  1. 分析验证集划分方式;
  2. 判断是否存在数据泄漏;
  3. 判断是否存在分布偏移;
  4. 设计线上线下相关性验证方法;
  5. 给出改进验证体系的建议。

请从时间序列预测竞赛角度分析。


目的:升级树模型方案

提示词:

请帮我将当前 Baseline 模型升级为竞赛级方案。

要求比较:

  • GBDT
  • Random Forest
  • XGBoost
  • LightGBM
  • CatBoost

分析:

  1. 优缺点;
  2. 训练速度;
  3. 调参难度;
  4. 时间序列适用性;
  5. 推荐参数范围。

最后给出优先尝试顺序。


目的:自动调参

提示词:

请帮我基于 LightGBM 设计 Optuna 自动调参方案。

要求:

  1. 推荐关键参数;
  2. 给出搜索空间;
  3. 给出调参顺序;
  4. 避免过拟合;
  5. 提高搜索效率。

请说明哪些参数最值得优先优化。


目的:分析 SHAP 解释结果

提示词:

请作为机器学习解释性专家,教我如何利用 SHAP 分析模型。

要求:

  1. 解释 SHAP 原理;
  2. 解释 Summary Plot;
  3. 解释 Dependence Plot;
  4. 识别无效特征;
  5. 发现潜在新特征方向;
  6. 给出竞赛中特征优化流程。

请结合时间序列预测场景说明。


目的:设计稳健策略优化方案

提示词:

我的任务最终得分与决策策略有关。

请帮我设计稳健策略体系。

要求:

  1. 分析预测误差对收益的影响;
  2. 设计阈值过滤机制;
  3. 设计风险控制机制;
  4. 设计保守策略与激进策略;
  5. 分析不同市场环境下的表现;
  6. 设计参数敏感性实验。

目标是提升策略鲁棒性,而非单纯追求理论最优收益。


目的:设计模型融合方案

提示词:

请作为 Kaggle Grandmaster 级别选手,帮我设计模型融合方案。

要求:

  1. 分析哪些模型适合融合;
  2. 设计 Averaging;
  3. 设计 Weighted Averaging;
  4. 设计 Stacking;
  5. 分析过拟合风险;
  6. 给出验证方案。

请按照从简单到复杂的顺序推荐。


目的:评估是否值得上深度学习

提示词:

请根据我的数据规模、特征数量、时间跨度和当前 LightGBM 效果,评估是否值得引入深度学习模型。

请分析:

  1. LSTM;
  2. GRU;
  3. Transformer;
  4. TFT;
  5. NHiTS;

分别说明:

  • 适用条件;
  • 预期收益;
  • 开发成本;
  • 调参成本;
  • 失败风险。

最后给出是否值得尝试的结论。


目的:获得下一步最优提分路线

提示词:

假设你是一名 Kaggle Grandmaster 和算法竞赛冠军。

根据我当前项目情况:

  • 当前特征体系;
  • 当前模型;
  • 当前验证指标;
  • 当前线上成绩;

请帮我制定未来 10 次实验的详细计划。

要求:

  1. 每次实验只改变一个变量;
  2. 给出实验目的;
  3. 给出预期收益;
  4. 给出成功判定标准;
  5. 给出失败后的下一步方案。

最终输出一个按照优先级排序的竞赛提分路线图。


赛题提分分析

第一档:低成本高收益优化(优先完成)

这一阶段的目标是在不改变整体框架的情况下,通过特征工程快速提升模型效果。

1. 分析现有特征价值

不要默认官方 Baseline 中的所有特征都有效,需要重点回答两个问题:

  • 是否存在遗漏的重要特征?
  • 是否存在贡献极低甚至带来噪声的特征?

实施流程:

  1. 输出模型特征重要性。
  2. 对特征按重要性排序。
  3. 找出贡献接近于零的特征。
  4. 删除低价值特征重新训练。
  5. 对比验证集指标和收益指标变化。

重点关注时间类特征,例如:

  • Month(月)
  • Dayofweek(星期)
  • Minute(分钟)

部分特征在特定任务中可能几乎不起作用,删除后反而能够降低噪声。


2. 增加历史信息(滞后特征)

时间序列任务普遍存在历史依赖关系。

核心思想是:

未来往往是历史规律的延续。

常见滞后特征包括:

  • 1天前同一时刻数据
  • 2天前同一时刻数据
  • 1周前同一时刻数据

实施流程:

  1. 构造历史目标值特征。
  2. 加入训练集。
  3. 重新训练模型。
  4. 验证指标变化。

滞后特征通常是时间序列比赛中最容易获得收益的改进方向之一。


3. 增加滚动统计特征

单个历史点容易受到随机波动影响,因此可以引入历史窗口统计信息。

常见统计量包括:

  • 过去1天均值
  • 过去1天标准差
  • 过去1天最大值
  • 过去1天最小值

其目的在于让模型感知近期整体价格水平和波动情况,而不仅仅依赖某一个历史时刻。


4. 建立特征筛选机制

不要一次性增加大量特征。

推荐采用以下流程:

新增一个特征 → 训练模型 → 本地验证 → 记录结果 → 判断是否保留

最终形成三类特征库:

  • 已验证有效特征
  • 已验证无效特征
  • 待验证特征

避免重复实验,提高迭代效率。


第二档:中等难度提分(主要增益来源)

这一阶段的目标是引入新的信息源,并优化策略逻辑。

5. 引入外部数据源

很多比赛的 Baseline 只利用了主数据,而忽略了大量外部信息。

常见外部数据包括:

  • 气象数据
  • 地理数据
  • 节假日数据
  • 市场数据
  • 行业数据

原则上,越接近问题源头的数据,价值往往越高。

例如在电价预测任务中:

气象变化 → 新能源发电 → 电网供需 → 电价变化

因此气象数据属于更上游、更具有预测价值的信息。


6. 外部数据处理流程

引入外部数据时,应遵循标准流程:

  1. 读取数据。
  2. 筛选变量。
  3. 处理缺失值。
  4. 时间对齐。
  5. 空间聚合。
  6. 构造特征。
  7. 合并到训练集。

不要直接把所有变量全部加入模型。

建议先进行:

  • 相关性分析
  • 单变量实验
  • 消融实验

确认有效后再正式纳入模型。


7. 优化决策策略

许多比赛的最终得分并不完全由预测结果决定。

真实流程往往是:

预测结果 → 决策过程 → 最终收益

因此策略设计同样重要。


8. 降低对预测结果的绝对依赖

错误思路:

预测什么就执行什么。

正确思路:

预测结果只是参考,决策必须考虑风险。

即使预测模型准确率较高,也一定会存在误差,因此需要为策略设计保护机制。


9. 增加风险控制机制

阈值过滤

只有收益空间达到一定水平时才执行操作。

例如:

  • 收益空间不足则放弃交易。
  • 收益空间足够才执行操作。

这样能够避免低质量决策。

置信度过滤

当模型预测不够确定时:

  • 降低操作频率;
  • 减少操作规模;
  • 必要时不进行操作。

保守策略

目标不是追求单次收益最大化,而是追求长期稳定收益。

应尽量做到:

少赚一点,但持续赚钱。

而不是:

偶尔暴赚,但频繁亏损。


第三档:高级优化方向(冲刺阶段)

这一阶段开发成本高、调试周期长、收益不确定。

适合:

  • 已完成前两档优化;
  • 排名进入瓶颈期;
  • 有充足时间和计算资源。

10. 更换模型架构

当特征工程已经比较成熟时,可以考虑升级模型。

常见升级路径:

GBDT → XGBoost → LightGBM → CatBoost

进一步可以尝试:

  • LSTM
  • GRU
  • Transformer

模型升级的前提是数据质量和特征工程已经达到较高水平。


11. 深度学习建模

适用场景:

  • 数据量较大;
  • 存在复杂时序关系;
  • 存在长期依赖规律。

典型流程:

  1. 构造时间窗口。
  2. 建立序列输入。
  3. 训练神经网络。
  4. 输出未来预测结果。

需要重点关注:

  • 序列长度选择;
  • 学习率设置;
  • Batch Size;
  • 过拟合控制;
  • 训练稳定性。

深度学习并不一定优于树模型,需要经过充分验证。


12. 模型融合

不同模型能够学习到不同规律。

常见融合方式包括:

平均融合

多个模型预测结果直接取平均。

加权融合

根据模型表现给予不同权重。

Stacking

通过第二层模型学习多个模型之间的组合关系。

模型融合往往能够带来较稳定的提升。


13. 高级策略优化

当预测能力接近上限时,策略层往往成为新的突破口。

鲁棒优化

不仅考虑预测正确时的收益,还考虑预测错误时的损失。

核心问题:

如果预测误差达到10%,当前策略是否仍然盈利?

情景模拟

分别构建:

  • 乐观场景;
  • 中性场景;
  • 悲观场景。

选择整体表现最稳定的方案。

多目标优化

同时兼顾:

  • 收益最大化;
  • 风险最小化;
  • 策略稳定性。

而不仅仅追求单一收益指标。


14. 高级搜索算法

仅当问题规模显著扩大时才有必要考虑。

例如:

  • 一天多次充放电;
  • 连续容量控制;
  • 长周期优化问题。

可研究的方法包括:

  • 动态规划(DP)
  • 蒙特卡洛搜索(MCTS)
  • 强化学习(RL)

对于当前规模较小、规则简单的问题,暴力枚举往往已经能够得到最优解,因此不应过早投入大量精力。


推荐实施路线

建议严格按照以下顺序推进:

第一阶段:建立基线

  1. 复现 Baseline。
  2. 建立本地验证体系。
  3. 获得第一版线上成绩。

第二阶段:特征工程优化

  1. 分析特征重要性。
  2. 删除无效特征。
  3. 增加滞后特征。
  4. 增加滚动统计特征。

第三阶段:数据扩展优化

  1. 引入外部数据。
  2. 完成数据清洗与对齐。
  3. 进行特征筛选。

第四阶段:策略优化

  1. 增加阈值机制。
  2. 增加风险控制。
  3. 提升策略稳健性。

第五阶段:模型优化

  1. 调整模型参数。
  2. 更换模型架构。
  3. 尝试模型融合。

第六阶段:高级探索

  1. 深度学习模型。
  2. 鲁棒优化。
  3. 强化学习与高级搜索。

核心经验总结

大多数算法竞赛的分数提升来源大致可以归纳为:

  • 特征工程:60%
  • 数据处理:25%
  • 策略设计:10%
  • 模型升级:5%

因此,优秀选手往往把主要精力放在数据理解、特征构造和实验设计上,而不是一开始就追求复杂模型。

真正有效的提分过程应当遵循:

发现问题 → 提出假设 → 单独实验 → 本地验证 → 记录结果 → 提交验证 → 保留有效改动 → 持续迭代

这套方法不仅适用于当前比赛,也适用于绝大多数机器学习、数据挖掘和时间序列预测类竞赛。

技术栈学习建议

建议按照下面的优先级选择技术栈。

第一梯队(性价比最高,推荐)

数据处理层

Pandas

作用:

  • 数据清洗
  • 特征构造
  • 时间序列处理
  • 数据合并

重点掌握:

  • merge
  • groupby
  • rolling
  • shift
  • resample

对应你的比赛:

  • 滞后特征
  • 滚动统计特征
  • 时间特征

基本全靠 Pandas 完成。


NumPy

作用:

  • 数值计算
  • 矩阵运算
  • 向量化处理

重点:

  • array
  • where
  • clip
  • nan处理

一般作为 Pandas 的底层辅助。


可视化分析层

Matplotlib

作用:

  • 电价趋势图
  • 收益曲线
  • 特征分布

Seaborn

作用:

  • 特征相关性热图
  • 特征分布图

非常适合:

  • 判断哪些特征有效
  • 查找共线性问题

例如:

  • 电价与风速相关性
  • 电价与光伏出力相关性

机器学习层

LightGBM(首推)

如果比赛允许:

优先级:

1
LightGBM > XGBoost > GBDT

原因:

  • 训练快
  • 对表格数据效果极强
  • 天然支持缺失值
  • 特征工程友好

很多 Kaggle、天池冠军方案都有 LightGBM。

建议作为主力模型。


XGBoost

优点:

  • 稳定
  • 社区资料丰富

缺点:

  • 训练速度慢于 LightGBM

适合作为:

  • 对照模型
  • 融合模型

CatBoost

适合:

  • 类别特征较多

你的电价预测任务:

优先级低于 LightGBM。


第二梯队(有时间再上)

SHAP

作用:

解释模型。

比 Feature Importance 更可靠。

能够回答:

  • 为什么预测高?
  • 哪些特征真正影响结果?

例如:

1
2
3
4
5
风速 ↑
→ 电价 ↓

负荷 ↑
→ 电价 ↑

非常适合:

  • 特征筛选
  • 特征解释

推荐指数:

★★★★★


Optuna

作用:

自动调参。

代替手工调:

  • learning_rate
  • num_leaves
  • max_depth

流程:

1
2
3
4
5
LightGBM
+
Optuna
=
自动寻找最佳参数

往往比手工调参强很多。


Scikit-Learn

必须掌握。

主要用于:

  • 数据集划分
  • 交叉验证
  • 评价指标
  • Pipeline

重点:

  • TimeSeriesSplit
  • GridSearchCV
  • permutation_importance

第三梯队(比赛后期)

NetCDF处理

如果要使用气象数据。

推荐:

xarray

读取 .nc 文件首选。

远比 netCDF4 好用。

示例能力:

  • 提取风速
  • 提取辐照度
  • 空间平均

几行代码就能完成。


netCDF4

底层库。

一般不直接使用。

多数情况:

1
2
3
xarray
+
netCDF4

即可。


第四梯队(冲榜阶段)

PyTorch

如果准备尝试:

  • LSTM
  • GRU
  • Transformer

直接用 PyTorch。

不要用 TensorFlow。

目前比赛生态:

1
PyTorch >>> TensorFlow

PyTorch Forecasting

专门做时间序列预测。

封装了:

  • TFT
  • DeepAR
  • NHiTS

但学习成本较高。

只有在:

  • LightGBM已经榨干
  • 排名进入瓶颈

时再考虑。


策略优化工具

如果比赛重点是收益而非RMSE。

推荐:

SciPy

用于:

  • 优化问题
  • 参数搜索

例如:

  • 最佳充放电阈值
  • 收益最大化

Numba

作用:

加速循环。

如果你开始:

  • 枚举策略
  • 回测收益

速度会提升明显。

必须掌握

  • Pandas
  • NumPy
  • Scikit-Learn
  • LightGBM
  • Matplotlib
  • Seaborn

第二阶段加入

  • SHAP
  • Optuna
  • xarray

冲榜阶段

  • XGBoost
  • CatBoost
  • PyTorch