赛题任务
本赛题基于上汽通用五菱提供的新能源汽车运行数据、碰撞标注和碰撞时间,希望参赛者综合运用机器学习/深度学习等技术,实现根据车辆运行数据即可识别车辆发生碰撞的可能,及时发现用户碰撞情况
字段描述
数据特征
1.几乎所有都存在一个电池包主负继电器状态由连接到断开的过程,该变化时刻通常与所给碰撞标签时刻相同,也存在个别样本时刻早于碰撞时刻;
2.几乎所有都存在整车电流突变为0的过程。
3.发现19和94为异常样本,所给的标签时刻并不在所给的预测时间段中
解题思路
在发现以上两个规则后,可得出解题思路:首先筛选所有存在主负继电器状态变化或整车电流变化的时刻,再对这些时刻进行建模,判断是否存在碰撞。由于该题一车仅出现一次碰撞,所以在模型预测过程中,选取所有筛选时刻中碰撞概率最高的时刻作为该车最终状态的判定。该思路相比对每个时刻建模,有以下特点:
1.极大减少训练中的负样本数,平衡正负样本比例;
2.极大加快处理速度;
3.最后预测阈值直接采用0.5,避免调阈值对训练集或A榜过拟合;
4.基本所有碰撞时刻都能被筛选出来,无法筛选出来的部分可以认为非常难判定,即使是直接建模也很难判定准确。
特征选取以及建模
特征提取部分,还是采用经典的时间窗统计方法,对碰撞时刻前、碰撞时刻附近、碰撞时刻后,以及样本所有时刻,4个时间窗进行统计,分别可得到碰撞前的状态,碰撞时的状态,碰撞后的状态,以及该车辆一个长期状态,也可表征驾驶者的驾驶习惯。
离散特征统计出现频率,连续特征(主要是加速踏板位置、车速、整车当前总电流)则统计均值、中位数、方差、最小值及最大值,同时做了一点特征交叉,具体可参考源码部分。在构造特征时需同时记录对应时刻,用于预测时获取时刻值。
在建模上使用常规的lightgbm,随机5折交叉验证,考虑到样本不均衡,使用StratifiedKFold保证每一折正负样本比例相同。
源码获取方法
详情可见队友嘴爷的github链接
代码获取
写在最后
1.模型的版本对这题影响巨大,所以懂得都懂。
2.在换榜的前一天夜里,由于DF运营管理问题导致B榜排行提前泄露,加之数据量本身不大,前一天夜里切榜的时候本方案是TOP3,最终定榜TOP6,对此官方没有任何回应,所以懂得都懂。
3.以后遇到这种赛题,大家应该都懂得都懂。