整体赛题回顾
本次比赛, 是阿里天池举办的印象盐城·数创未来大数据竞赛 - 乘用车零售量预测大数据竞赛, 与怼圈小伙伴大妈,阿虎和蔡俊组队, 最终取得第 11 名的成绩.
本次比赛中, 我负责整体策略设计, 特征工程和模型训练的工作.
初赛提供2012年1月-2017年10月盐城分车型销量配置数据,预测 2017 年 11 月和 12 月盐城分车型销量数据.
复赛数据量扩大, 提供2012年1月-2017年12月全国分城市分车型销量配置数据,全国整体车型产量数据,全国宏观经济月度数据. 分别预测 2018 年 1 月和 2 月全国分城市分车型销量数据.
下面主要以复赛算法为例来进行讲解.
采用 RMSLE 作为评测指标:
相较于初赛的 RMSE, RMSLE 对大值误差不那么敏感, 但是对小值的偏差更加敏感.
比如: 1024 预测 2048, 误差绝对值很大, 但是 log 的平方只有 1. 但如果将 1 预测成 8, 误差绝对值很小, log 后的平方为 4, RMSLE 的误差是前者的 4 倍, 所以需要特别注意销量小的值.
解决方案概述
首先我们队数据集进行了清洗工作, 对缺值进行了均值填充, 对重复值和异常值, 进行了清洗去除等操作.
接着针对最要的销量表进行特征提取工作, 第一部分是与 class_id 相关, 例如: 品牌,厢数,排量…等特征, 代替 class_id 的对车型进行描述. 另一部分是关于时间与销量关系的时间序列特征.然后选用了部分宏观经济和产量指标作为特征辅助特征.
最后训练了 GBDT, XGBoost 两种模型, 并进行了加权融合.
数据集划分
-
A 榜
- 预测区间: 2018.01
- 特征提取区间:
- 2013.01 - 2017.11
- 2013.02 - 2017.12
-
B 榜
- 预测区间: 2018.02
- 特征提取区间:
- 2012.01 - 2017.11
- 2012.02 - 2017.12
- 2013.01 - 2017.11
- 2013.02 - 2017.12
特征工程
特征工程主要包含三大类, 分别是针对时间和销量相关的时间序列特征, 与车型相关的 class_id 描述团, 还有与宏观及产量销量的特征.
以下简要地说明各部分特征:
- 时序相关特征
- total_sale_last1M 分省市上月整体销量
- total_last12M_sum 分省市上一年整体销量
- sale_last1M 上月销量
- sale_last12M 去年同月销量
- cnt_classid 本月有多少种车型在销售
- year 年份
- month 月份
- how_many_month_sale 已销售月累加
- sale_last2M/3M/6M/12M_sum/std/avg/max/min 2/3/6/12个月时间窗口,的和/标准差/平均/最大/最小值
- lastyear_MoM 上一年同月环比
- spring_festival 是否包含春节
- 车型 class_id 相关特征
- 类别特征进行 one-hot 编码
- brand_id 品牌
- compartment 箱数
- type_id 车型类别
- level_id 车型级别
- department_id 车型系别
- gearbox_type 变速器形式
- if_charging 是否增压
- driven_type_id 驱动形式
- fuel_type_id 燃料种类
- newenergy_type_id 新能源类型
- emission_standards_id 排放标准
- if_MPV_id 是否微客
- if_luxurious_id 是否豪华
- 数值类型, 取平均值
- displacement 排量
- price_level 成交段
- power 功率
- engine_torque 发动机扭矩
- car_length 车长
- car_width 车宽
- car_height 车高
- total_quality 总质量
- equipment_quality 整备质量
- rated_passenger 额定载客
- wheelbase 轴距
- front_track 前轮距
- rear_track 后轮距
- 类别特征进行 one-hot 编码
- 整体宏观特征
- oil_price 油价
- purchase_tax 低排量购置税
- 产量特征
- produce_quantity_last1m 上月同车型产量
模型设计与融合
将 A 榜排名第一(RMSLE = 0.79)的预测值, 填入 18.1 销量. 并提取 18.2 特征
训练了 XGBoost 和 GBDT 两个模型, 然后进行简单的加权融合, XGBoost × 0.4 + XGBoost × 0.6, 作为最终结果提交
Changelog
- 2018-03-16 创建