AI算法赛个人经验总结(上)
针对比赛的经验
AI算法赛的核心不是一次性做出最优方案,而是建立一套“实验—评估—提交—反馈—优化”的闭环迭代流程。
一、理解比赛评价体系
在开始优化前,首先明确比赛的目标指标。
1. 官方评分指标
需要明确:
- 排行榜依据什么评分
- 分数越大越好还是越小越好
- 线上评分与线下评分是否一致
例如(电力方向):
| 任务类型 | 常见指标 |
|---|---|
| 回归预测 | RMSE、MAE |
| 分类任务 | Accuracy、F1 |
| 排序推荐 | NDCG、MAP |
| 策略优化 | 总收益、收益率 |
2. 建立本地评估体系
任何改动都必须先经过本地验证。
常见本地指标:
- 验证集 RMSE
- 验证集 MAE
- F1 Score
- AUC
- 平均收益
原则:
- 误差类指标越小越好
- 准确率类指标越大越好
- 收益类指标越大越好
例如:
原模型:
1 | RMSE = 0.648 |
改进后:
1 | RMSE = 0.592 |
说明该改动值得进一步验证。
二、从 Baseline 开始建立基准线
不要直接大改模型。
第一步应该:
1 | 运行官方 Baseline |
建立:
1 | Baseline= 本地指标 + 官方得分 |
这是一切优化的参照物。
如果没有基准线,后续无法判断改进是否有效。
三、单变量实验原则
每次只修改一个因素。
错误做法:
1 | 同时: |
最终涨分或掉分时无法定位原因。
正确做法:
1 | 实验1: |
四、建立“本地指标 → 线上得分”的映射关系
比赛中最重要的事情之一:
判断本地指标是否可信。
理想情况:
1 | 本地RMSE下降 |
连续多次成立:
1 | RMSE ↓ |
说明:
1 | 本地验证集有效 |
后续可以放心依据本地指标优化。
警惕指标失效
出现情况:
1 | RMSE下降很多 |
连续出现数次后说明:
1 | 验证集与测试集分布不一致 |
此时不能继续盲目优化 RMSE。
需要重新思考:
- 数据划分方式
- 验证集构造方式
- 是否发生过拟合
五、合理利用提交次数
提交次数本质上是一种资源。
不要一次性全部用完。
推荐流程:
第一次提交
验证当天最有把握的方案。
例如:
1 | RMSE最低 |
优先提交。
第二次提交
验证存在争议的改动。
例如:
1 | 增加气象特征 |
本地略有提升:
1 | RMSE: |
不确定是否真实有效。
此时可以通过线上得分验证。
第三次提交
根据前两次结果决定。
情况一:
1 | 两个改动都涨分 |
则尝试融合:
1 | 方案A + 方案B |
情况二:
1 | 两个改动都掉分 |
则退回稳定版本重新尝试。
六、完整记录实验过程
所有实验必须留痕。
建议记录:
| 内容 | 说明 |
|---|---|
| 日期 | 实验时间 |
| 版本号 | v1、v2、v3 |
| 改动内容 | 修改了什么 |
| 本地指标 | RMSE、MAE等 |
| 策略收益 | 收益指标 |
| 线上得分 | 提交结果 |
| 结论 | 是否保留 |
示例:
| 版本 | 改动 |
|---|---|
| v1 | Baseline |
| v2 | 增加滞后特征 |
| v3 | 删除无效特征 |
| v4 | 引入气象数据 |
长期来看:
1 | 实验记录 |
很多高分方案并非来自灵感,而是来自实验积累。
七、优化顺序:从简单到复杂
第一层:特征工程
优先级最高。
常见方向:
历史特征
例如:
1 | 昨天同一时刻价格 |
滚动统计特征
例如:
1 | 过去24小时均值 |
时间特征
例如:
1 | 小时 |
外部特征
例如:
1 | 天气 |
通常特征工程带来的收益最大。
第二层:模型优化
在特征稳定后再考虑模型。
常见路线:
1 | GBDT |
进一步可以:
1 | 模型融合 |
第三层:参数优化
固定模型后调整参数。
例如:
1 | 树深度 |
采用:
1 | Grid Search |
进行搜索。
第四层:策略优化
许多比赛不仅比预测,还比决策。
不要简单:
1 | 预测高就买 |
而应该增加:
风险控制
例如:
1 | 预测差值小于阈值 |
置信度控制
例如:
1 | 预测越确定 |
保守机制
例如:
1 | 极端预测时限制最大操作量 |
提升策略稳健性。
八、形成迭代闭环
最终应形成如下工作流:
1 | 运行 Baseline |
高分往往不在于模型更复杂,而在于实验流程更规范、验证体系更可靠、迭代效率更高。持续进行小步快跑、可验证的优化,通常比一次性进行大规模改造更容易取得稳定提升。
以电力等预测类题材为例
提示词总结
目的:快速理解 Baseline,找到第一批可优化方向
提示词:
我正在参加一个时间序列预测算法竞赛,请分析我的 Baseline 项目代码。从以下几个方面进行系统审查:
- 当前使用了哪些特征;
- 哪些特征可能贡献较低或属于噪声;
- 哪些重要特征可能被遗漏;
- 当前模型结构和训练流程是什么;
- 当前验证方式是否合理;
- 给出按投入产出比排序的优化建议;
- 区分哪些属于特征工程、模型优化、数据处理和策略优化。
请按照“问题发现 → 原因分析 → 修改建议 → 预期收益”格式输出。
目的:分析特征重要性并筛选有效特征
提示词:
请基于我的训练代码和数据结构,帮我设计一套特征筛选方案。
要求:
- 输出特征重要性分析方法;
- 比较 Feature Importance、Permutation Importance 和 SHAP 的优缺点;
- 给出删除低价值特征的实验流程;
- 设计消融实验表格;
- 告诉我如何判断某个特征应该保留还是删除。
请给出具体执行步骤和实验记录模板。
目的:设计时间序列滞后特征
提示词:
我正在做时间序列预测任务,请帮我系统设计 Lag 特征方案。
要求:
- 分析当前数据的周期性;
- 推荐适合的 Lag 特征;
- 推荐日周期、周周期和长周期特征;
- 说明每种 Lag 特征可能带来的收益;
- 给出避免数据泄漏的方法;
- 说明测试集无法获取未来真实值时的处理策略。
请按照“特征名称 → 构造逻辑 → 风险 → 优先级”输出。
目的:设计滚动统计特征
提示词:
请作为高级特征工程专家,帮我为时间序列预测任务设计 Rolling 特征体系。
要求覆盖:
- Rolling Mean
- Rolling Std
- Rolling Max
- Rolling Min
- Rolling Median
- EWMA(指数加权均值)
请分析:
- 每种特征的意义;
- 适合哪些场景;
- 推荐窗口长度;
- 如何避免未来数据泄漏;
- 如何验证特征有效性。
最后给出优先级排序。
目的:发现外部数据价值
提示词:
请从领域知识角度分析我的预测目标。
要求:
- 画出影响目标变量的因果链;
- 找出可能的上游数据源;
- 分析哪些外部数据最值得引入;
- 按预期收益排序;
- 给出引入后的特征构造思路。
请重点关注能够提前影响目标变量的先行指标。
目的:分析气象数据利用方案
提示词:
我有一批 NetCDF(.nc)格式气象数据。
请帮我设计完整的特征工程流程:
- 如何查看变量;
- 哪些变量最值得使用;
- 如何进行空间聚合;
- 如何进行时间对齐;
- 如何处理缺失值;
- 如何构造可用于机器学习的特征;
- 如何验证气象特征是否有效。
请按照数据处理流水线输出。
目的:设计系统化实验方案
提示词:
请帮我建立算法竞赛实验管理体系。
要求:
- 设计版本命名规则;
- 设计实验记录表;
- 设计提交记录表;
- 设计消融实验模板;
- 设计对照实验流程;
- 告诉我如何判断一次实验是否成功。
目标是避免重复试验,提高迭代效率。
目的:判断本地指标是否可信
提示词:
请帮助我评估本地验证集指标与线上排行榜分数之间的关系。
要求:
- 分析验证集划分方式;
- 判断是否存在数据泄漏;
- 判断是否存在分布偏移;
- 设计线上线下相关性验证方法;
- 给出改进验证体系的建议。
请从时间序列预测竞赛角度分析。
目的:升级树模型方案
提示词:
请帮我将当前 Baseline 模型升级为竞赛级方案。
要求比较:
- GBDT
- Random Forest
- XGBoost
- LightGBM
- CatBoost
分析:
- 优缺点;
- 训练速度;
- 调参难度;
- 时间序列适用性;
- 推荐参数范围。
最后给出优先尝试顺序。
目的:自动调参
提示词:
请帮我基于 LightGBM 设计 Optuna 自动调参方案。
要求:
- 推荐关键参数;
- 给出搜索空间;
- 给出调参顺序;
- 避免过拟合;
- 提高搜索效率。
请说明哪些参数最值得优先优化。
目的:分析 SHAP 解释结果
提示词:
请作为机器学习解释性专家,教我如何利用 SHAP 分析模型。
要求:
- 解释 SHAP 原理;
- 解释 Summary Plot;
- 解释 Dependence Plot;
- 识别无效特征;
- 发现潜在新特征方向;
- 给出竞赛中特征优化流程。
请结合时间序列预测场景说明。
目的:设计稳健策略优化方案
提示词:
我的任务最终得分与决策策略有关。
请帮我设计稳健策略体系。
要求:
- 分析预测误差对收益的影响;
- 设计阈值过滤机制;
- 设计风险控制机制;
- 设计保守策略与激进策略;
- 分析不同市场环境下的表现;
- 设计参数敏感性实验。
目标是提升策略鲁棒性,而非单纯追求理论最优收益。
目的:设计模型融合方案
提示词:
请作为 Kaggle Grandmaster 级别选手,帮我设计模型融合方案。
要求:
- 分析哪些模型适合融合;
- 设计 Averaging;
- 设计 Weighted Averaging;
- 设计 Stacking;
- 分析过拟合风险;
- 给出验证方案。
请按照从简单到复杂的顺序推荐。
目的:评估是否值得上深度学习
提示词:
请根据我的数据规模、特征数量、时间跨度和当前 LightGBM 效果,评估是否值得引入深度学习模型。
请分析:
- LSTM;
- GRU;
- Transformer;
- TFT;
- NHiTS;
分别说明:
- 适用条件;
- 预期收益;
- 开发成本;
- 调参成本;
- 失败风险。
最后给出是否值得尝试的结论。
目的:获得下一步最优提分路线
提示词:
假设你是一名 Kaggle Grandmaster 和算法竞赛冠军。
根据我当前项目情况:
- 当前特征体系;
- 当前模型;
- 当前验证指标;
- 当前线上成绩;
请帮我制定未来 10 次实验的详细计划。
要求:
- 每次实验只改变一个变量;
- 给出实验目的;
- 给出预期收益;
- 给出成功判定标准;
- 给出失败后的下一步方案。
最终输出一个按照优先级排序的竞赛提分路线图。
赛题提分分析
第一档:低成本高收益优化(优先完成)
这一阶段的目标是在不改变整体框架的情况下,通过特征工程快速提升模型效果。
1. 分析现有特征价值
不要默认官方 Baseline 中的所有特征都有效,需要重点回答两个问题:
- 是否存在遗漏的重要特征?
- 是否存在贡献极低甚至带来噪声的特征?
实施流程:
- 输出模型特征重要性。
- 对特征按重要性排序。
- 找出贡献接近于零的特征。
- 删除低价值特征重新训练。
- 对比验证集指标和收益指标变化。
重点关注时间类特征,例如:
- Month(月)
- Dayofweek(星期)
- Minute(分钟)
部分特征在特定任务中可能几乎不起作用,删除后反而能够降低噪声。
2. 增加历史信息(滞后特征)
时间序列任务普遍存在历史依赖关系。
核心思想是:
未来往往是历史规律的延续。
常见滞后特征包括:
- 1天前同一时刻数据
- 2天前同一时刻数据
- 1周前同一时刻数据
实施流程:
- 构造历史目标值特征。
- 加入训练集。
- 重新训练模型。
- 验证指标变化。
滞后特征通常是时间序列比赛中最容易获得收益的改进方向之一。
3. 增加滚动统计特征
单个历史点容易受到随机波动影响,因此可以引入历史窗口统计信息。
常见统计量包括:
- 过去1天均值
- 过去1天标准差
- 过去1天最大值
- 过去1天最小值
其目的在于让模型感知近期整体价格水平和波动情况,而不仅仅依赖某一个历史时刻。
4. 建立特征筛选机制
不要一次性增加大量特征。
推荐采用以下流程:
新增一个特征 → 训练模型 → 本地验证 → 记录结果 → 判断是否保留
最终形成三类特征库:
- 已验证有效特征
- 已验证无效特征
- 待验证特征
避免重复实验,提高迭代效率。
第二档:中等难度提分(主要增益来源)
这一阶段的目标是引入新的信息源,并优化策略逻辑。
5. 引入外部数据源
很多比赛的 Baseline 只利用了主数据,而忽略了大量外部信息。
常见外部数据包括:
- 气象数据
- 地理数据
- 节假日数据
- 市场数据
- 行业数据
原则上,越接近问题源头的数据,价值往往越高。
例如在电价预测任务中:
气象变化 → 新能源发电 → 电网供需 → 电价变化
因此气象数据属于更上游、更具有预测价值的信息。
6. 外部数据处理流程
引入外部数据时,应遵循标准流程:
- 读取数据。
- 筛选变量。
- 处理缺失值。
- 时间对齐。
- 空间聚合。
- 构造特征。
- 合并到训练集。
不要直接把所有变量全部加入模型。
建议先进行:
- 相关性分析
- 单变量实验
- 消融实验
确认有效后再正式纳入模型。
7. 优化决策策略
许多比赛的最终得分并不完全由预测结果决定。
真实流程往往是:
预测结果 → 决策过程 → 最终收益
因此策略设计同样重要。
8. 降低对预测结果的绝对依赖
错误思路:
预测什么就执行什么。
正确思路:
预测结果只是参考,决策必须考虑风险。
即使预测模型准确率较高,也一定会存在误差,因此需要为策略设计保护机制。
9. 增加风险控制机制
阈值过滤
只有收益空间达到一定水平时才执行操作。
例如:
- 收益空间不足则放弃交易。
- 收益空间足够才执行操作。
这样能够避免低质量决策。
置信度过滤
当模型预测不够确定时:
- 降低操作频率;
- 减少操作规模;
- 必要时不进行操作。
保守策略
目标不是追求单次收益最大化,而是追求长期稳定收益。
应尽量做到:
少赚一点,但持续赚钱。
而不是:
偶尔暴赚,但频繁亏损。
第三档:高级优化方向(冲刺阶段)
这一阶段开发成本高、调试周期长、收益不确定。
适合:
- 已完成前两档优化;
- 排名进入瓶颈期;
- 有充足时间和计算资源。
10. 更换模型架构
当特征工程已经比较成熟时,可以考虑升级模型。
常见升级路径:
GBDT → XGBoost → LightGBM → CatBoost
进一步可以尝试:
- LSTM
- GRU
- Transformer
模型升级的前提是数据质量和特征工程已经达到较高水平。
11. 深度学习建模
适用场景:
- 数据量较大;
- 存在复杂时序关系;
- 存在长期依赖规律。
典型流程:
- 构造时间窗口。
- 建立序列输入。
- 训练神经网络。
- 输出未来预测结果。
需要重点关注:
- 序列长度选择;
- 学习率设置;
- Batch Size;
- 过拟合控制;
- 训练稳定性。
深度学习并不一定优于树模型,需要经过充分验证。
12. 模型融合
不同模型能够学习到不同规律。
常见融合方式包括:
平均融合
多个模型预测结果直接取平均。
加权融合
根据模型表现给予不同权重。
Stacking
通过第二层模型学习多个模型之间的组合关系。
模型融合往往能够带来较稳定的提升。
13. 高级策略优化
当预测能力接近上限时,策略层往往成为新的突破口。
鲁棒优化
不仅考虑预测正确时的收益,还考虑预测错误时的损失。
核心问题:
如果预测误差达到10%,当前策略是否仍然盈利?
情景模拟
分别构建:
- 乐观场景;
- 中性场景;
- 悲观场景。
选择整体表现最稳定的方案。
多目标优化
同时兼顾:
- 收益最大化;
- 风险最小化;
- 策略稳定性。
而不仅仅追求单一收益指标。
14. 高级搜索算法
仅当问题规模显著扩大时才有必要考虑。
例如:
- 一天多次充放电;
- 连续容量控制;
- 长周期优化问题。
可研究的方法包括:
- 动态规划(DP)
- 蒙特卡洛搜索(MCTS)
- 强化学习(RL)
对于当前规模较小、规则简单的问题,暴力枚举往往已经能够得到最优解,因此不应过早投入大量精力。
推荐实施路线
建议严格按照以下顺序推进:
第一阶段:建立基线
- 复现 Baseline。
- 建立本地验证体系。
- 获得第一版线上成绩。
第二阶段:特征工程优化
- 分析特征重要性。
- 删除无效特征。
- 增加滞后特征。
- 增加滚动统计特征。
第三阶段:数据扩展优化
- 引入外部数据。
- 完成数据清洗与对齐。
- 进行特征筛选。
第四阶段:策略优化
- 增加阈值机制。
- 增加风险控制。
- 提升策略稳健性。
第五阶段:模型优化
- 调整模型参数。
- 更换模型架构。
- 尝试模型融合。
第六阶段:高级探索
- 深度学习模型。
- 鲁棒优化。
- 强化学习与高级搜索。
核心经验总结
大多数算法竞赛的分数提升来源大致可以归纳为:
- 特征工程: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 | 风速 ↑ |
非常适合:
- 特征筛选
- 特征解释
推荐指数:
★★★★★
Optuna
作用:
自动调参。
代替手工调:
- learning_rate
- num_leaves
- max_depth
流程:
1 | LightGBM |
往往比手工调参强很多。
Scikit-Learn
必须掌握。
主要用于:
- 数据集划分
- 交叉验证
- 评价指标
- Pipeline
重点:
- TimeSeriesSplit
- GridSearchCV
- permutation_importance
第三梯队(比赛后期)
NetCDF处理
如果要使用气象数据。
推荐:
xarray
读取 .nc 文件首选。
远比 netCDF4 好用。
示例能力:
- 提取风速
- 提取辐照度
- 空间平均
几行代码就能完成。
netCDF4
底层库。
一般不直接使用。
多数情况:
1 | xarray |
即可。
第四梯队(冲榜阶段)
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





