CCF BDCI 2020 · 滴滴路况预测 · 冠军方案
🏆 CCF BDCI 2020 · 滴滴路况预测 · 冠军
👥 otto data lab & 周阳 & 李孟禹
📊 A榜 0.520 · 融合后冠军
CCF BDCI 2020 滴滴路况预测 · 冠军方案
采样策略 + 特征工程 + LightGBM + 子图GCN/LSTM/NFM深度融合
团队介绍
成员组成:otto data lab(刘世欢、陈欣)、周阳(重庆邮电大学 研二)、李孟禹(天池科学家)
历史荣誉:团队在多个数据挖掘竞赛中屡获佳绩,包括:
🏅 Kaggle-IEEE-CIS Fraud Detection 金牌
🏅 KDD Cup 2020 Debiasing Top6
🏅 2020数字中国创新大赛—智慧海洋建设 亚军
🏅 “合肥高新杯”心电人机智能大赛 亚军
🏅 首届“马栏山杯”国际音视频算法大赛视频推荐赛道 季军
🏅 第二届阿里巴巴大数据智能云上编程大赛-智联招聘人岗智能匹配 Top4
🏅 2020年中国高校计算机大赛-华为云大数据挑战赛 冠军
🏅 2019年中国高校计算机大赛-大数据挑战赛 Top6
🏅 2019年CCF BDCI 金融信息负面及主体判定赛题 冠军
🏅 2019年DigSci科学数据挖掘大赛 冠军
🏅 2019年CCF BDCI乘用车细分市场销量预测赛题 季军
🏅 2020年科大讯飞事件抽取挑战赛 Top5
🏅 2020年科大讯飞农业问答数据处理挑战赛 Top5
解决方案
赛题理解
本次赛题提供了一个月的基于当前link的历史同期时序特征和当前历史时序特征,预测未来1-30时间片的拥堵情况。
数据分析
- 测试集分布问题:测试集分布与训练集非常不一致,主要表现:测试集预测时间集中在凌晨,历史同期序列和当前历史序列缺失值多;预测gap(需要预测的时间片-当前时间片)集中在20+,预测时间片与当前时间片差距大,难度更高。因此,若使用传统特征工程建模,需要对训练集进行针对性采样。
- 拓扑序列无法利用时序特征:训练集和测试集只包含1万多的link时序特征,但整个拓扑图有60多万节点,无法利用拓扑时序特征,只能尽可能捕捉拓扑静态特征。
方案一:采样 + 特征工程 + LightGBM
采样策略:为了匹配测试集分布,采用多级采样:
- 从训练集(20190706-20190730)中选取 future_slice_id 在 10~40 之间的样本,并从30号 future_slice_id 超过40的样本中采样5万条,得到原始训练集A。
- 根据测试集的 curr_state 分布比例对A进行采样,得到B。
- 根据测试集的 future_slice_id 与 current_slice_id 的时间差分布比例对B采样,得到C,并按测试集分布去重,最终得到与测试集分布接近的训练集D。
特征工程:
- 目标编码:历史同link / future_slice_id / link+小时 / link+星期 / link+小时+星期 的道路状况比例。
- 该link+future_slice_id近期的速度、车辆数、路况等统计特征。
- 该link+future_slice_id近N个时间片内各状态距离当前时间的时间间隔。
- 提取link拓扑信息中的上下游,统计对应future_slice_id前的道路状况。
训练:LightGBM 5折交叉验证。
A榜分数:0.513
方案二:基于子图的 GCN + LSTM + NFM 模型
路况时空预测中拓扑特征至关重要,但全图节点过多,因此采用子图构建,通过GCN捕获空间特征;历史同期和当前时序通过LSTM捕获;类别特征通过NFM提取。模型分为三部分:
1. 基于子图的GCN
- 子图构建:对每个节点扩展到4阶,构建上下4阶的无向图,最大节点数200。
- 节点特征:link id + 原始8维特征做embedding,连续特征用embedding向量与连续值相乘。
- 网络结构:经典GCN结构,计算公式:
2. LSTM时序模块
- 历史同期序列:双层单向LSTM,时间步5,每个时间特征为4个原始特征,历史4个同期分别输入。
- 当前历史序列:双层单向LSTM,时间步5,每个时间特征为4个原始特征。
3. NFM特征交互模块
- 类别特征:当前link的道路属性、当前时间片、待预测时间片、时间片gap、小时、星期等。连续属性特征同样用embedding向量与连续值相乘。
- 结构:经典NFM结构,只保留Bi-Interaction Pooling部分。
训练数据:7-1 至 7-29 所有数据
验证数据:7-30
损失函数:加权交叉熵(权重 0.1:0.3:0.6,拥堵越严重权重越大,与线上评价指标类似)
A榜单模分数:0.520
模型融合
线性加权:final = nn × 0.7 + lgb × 0.3
代码开源
方案亮点总结
- 针对性采样:通过多级采样使训练集分布逼近测试集,有效缓解分布漂移问题。
- 拓扑子图GCN:将大图拆解为子图,实现空间特征的有效捕获,避免全图计算开销。
- 多模态融合:结合时序(LSTM)、空间(GCN)和特征交互(NFM),充分利用各类信息。
- 加权损失函数:对拥堵更严重的样本赋予更高权重,贴合评价指标。