赞
踩
作者:楼观白楼
出处:https://zhuanlan.zhihu.com/p/98926322
在本次比赛中,我们团队恶魔妈妈买面膜(经主办方建议,决赛时队名修改为秋名山车神)在初赛A榜,初赛B榜,复赛A榜,复赛B榜分别取得2,4,1,3的名次,并在最终决赛中逆袭拿到冠军(1/3000)。
本来复赛B榜是rank 4。由于有一个队伍由于使用小号被取消资格,一个队伍放弃复现,决赛逆袭一个队伍,最终拿到了冠军。说实话,运气非常好。
历时四个月,从多次想要放弃(中间有一个月放弃了没有做)到最终夺冠,真的十分感谢队友!
秋名山车神
梁晨 重庆邮电大学 研一
陈暄群 华南理工大学 研二
梁汐然 北京大学 大四
徐巍 重庆邮电大学 研二
王猛旗 重庆邮电大学 研一
如你们所见,我们来自三个不同的学校,通过本次比赛聚集在一起,在此也十分感谢DF平台与主办方CCF。
我们团队中大多数人都是第一次参加数据科学竞赛。
本次比赛要特别感谢的人是鱼佬,他的框架太强了。换成是我我不一定会在比赛中开源这么强的思路,从某种层面上来说这可能会坑到自己。所以敢于开源的人都应该值得称赞,开源与分享可以让整个环境进步。
另外还要感谢月月鸟,阿道,焕明(校友,就是54的那个规则开源,实际上我发现很多队伍的规则都是基于他做的),他们的开源也让我们学习到了很多。
我们本次的方案一共约500行代码,主要的工作在于特征工程与规则构造,思路,代码都很简单,运行只需3min,请放心使用。
https://github.com/cxq80803716/2019-CCF-BDCI-Car_sales
接下来我会详细介绍一下本次的赛题与解决方案。
实测(8g内存,CPU:i5-8500,耗时132秒):
CCF大数据与计算智能大赛(CCF Big Data & Computing Intelligence Contest,简称CCF BDCI)是由中国计算机学会大数据专家委员会于2013年创办的国际化智能算法、创新应用和大数据系统大型挑战赛事,是全球大数据与人工智能领域最具影响力的活动之一。
深瞳是一家大数据与行业智能应用解决方案运营商,为各行业客户提供数据分析与策略咨询服务,帮助行业客户进行数据资产化,为客户提供数据处理、建模分析服务。汽车行业是深瞳所重点服务的核心行业之一,长期服务于国内外知名汽车品牌客户。
近几年来,国内汽车市场由增量市场逐步进入存量市场阶段,2018年整体市场销量首次同比下降。在市场整体趋势逐步改变的环境下,消费者购车决策的过程也正在从线下向线上转移,我们希望能在销量数据自身趋势规律的基础上,找到消费者在互联网上的行为数据与销量之间的相关性,为汽车行业带来更准确有效的销量趋势预测。
https://www.datafountain.cn/competitions/352
备注:(原始数据下载地址,github已经有数据,可以不用下载)
链接:https://pan.baidu.com/s/1Zs5d9CWJuUoX7AmIKAoYmg
提取码:frqb
赛题需要参赛队伍根据给出的60款车型在22个细分市场(省份)的销量连续24个月(从2016年1月至2018年12月)的销量数据,建立销量预测模型;基于该模型预测同一款车型和相同细分市场在接下来一个季度连续4个月份的销量;除销量数据外,还提供同时期的用户互联网行为统计数据,包括:各细分市场每个车型名称的互联网搜索量数据;主流汽车垂直媒体用户活跃数据等。参赛队伍可同时使用这些非销量数据用于建模。
简单来说,本次赛题给出2016.1~2017.12的省份,车型,车身,销量,搜索量,评论量,评价量等,要求预测2018.1~2018.4的销量。
评价指标是归一化均方根误差的均值
数据分析
通过初步分析数据可以发现省份-车型所组成的类别特别多,并且对于同一车型,波动也挺大的,销量的范围较大等。
顺便说一下,我们经过多次尝试发现评论量与评价量几乎起不到作用,所以这两个特征我们并没有使用,如果你有办法处理这两个特征,欢迎评论讨论。
为了使数据分布更加符合高斯分布,对数据做了log1p的预处理。
我们在初赛的时候尝试了xgb,lgb,cat,prophet,rule,lstm,cnn,并且初赛的最终结果是由lgb,prophet,rule与lstm融合而来。但是后来我们发现就算只用lgb和rule也能得到差不多的分数,时序模型与深度学习模型在这道小数据时序问题上并不适用,又考虑到工业环境中模型越少,越简单越好,因此复赛时,我们只使用了差异性足够大的lgb与rule两个模型。
直接使用鱼佬的框架能带来相当不错的效果,但是可以发现,越往后的月份误差的累计会越来越严重,因此在模型中,我们只拼接了1月份预测出来的值。
在构造特征之前,对特征一些分析。
画出省份销量的热力图可以发现销量与省份的发达程度,临海程度是成一定正相关的,这与我们的直觉相符。因此各省份销量的差异明显,建模时必须对省份进行区别。
对于同一个月份,2016年与2017年的销量类似,即销量有周期性变化的特性。而且对于宏观变化而言,2017年的销量较2016年销量呈现下降趋势。
春节月的销量较低,春节后逐渐上升,年末达到最高。
这一块是本次工作的重头戏,也是我们花费了最多时间的地方,最终,我们的模型特征由以下几部分组成。
考虑到春节等节假日,我们构造了与节假日相关的一些特征。
考虑到每个月的天数,工作日不同,我们构造了相关的特征。
由于是个时序问题,因此历史销量与销量的变化趋势是我们应该考虑的重点。针对此,我们在多个不同粒度下构造了历史平移特征,差分特征,同比/环比特征与趋势特征。
不过经过我们的尝试,同比的效果不怎么好。
更加详细的内容请看代码。
我们所构造的特征实际上不止这些,不过由于信息重叠与毒特等原因,我们使用了一些方法对特征进行筛选。
我们使用了树模型的特征重要性排序,均值判断与SHAP进行特征筛选。
特征重要性排序:根据树模型输出的特征重要性进行筛选,去掉重要性低的特征。
均值判断:由于本道赛题中,1234月具有相对固定的均值比例与均值大小,因此可以通过添加/删除特征后1234月的平均均值来大概判断特征的好坏。
SHAP:利用了组合博弈论的知识,防止因为信息重叠而导致的特征重要度不公平的情况。
初赛时lgb做的一些操作与对应的分数如下
规则部分的框架是使用历史同期销量,历史最近销量与指数平滑进行加权得到一个初步预测销量,然后用上下半年的销量变化趋势与平滑构造年度销量变化趋势,最后两者相乘即可得到规则的预测结果。
由此可见,规则带有相当多的超参数。据我了解不少团队复赛时规则血崩,这也是时序题里面规则的泛性问题。我们初赛时规则可以达到0.633,是一个绝对的主力,复赛提交次数太少,最终规则也只有0.598,只能以lgb为主,规则为辅。
因为只有两个模型,所以模型融合基本上不用考虑太多,直接进行简单的算数/几何加权即可,由于几何加权可以使预测值偏小,而2018年的销量理应是较之前低的,所以我们使用了几何加权进行融合。
另外1234月分开进行融合,可以带来微小的提升。
这里特别提一下模型的数量与运行时间的优点,据我们决赛观察,大多数队伍都有超过2个的模型,而且有的队伍需要超过一个小时的运行时间。从工业角度来讲,我们的方案应该是更加适用的。
不过还有很多可以提升的地方,比如评论,评价的使用方式,规则中超参数过多问题,从某个时间点开始的某项政策对后续的影响等。如果赛题能提供更多的特征与数据,相信可做的地方还有相当多。
以上就是本次赛题我们团队的解决方案了。
乘用车销量预测这道赛题我觉得是2019 CCF BDCI的13道赛题里相对简单的一道,我们所使用的方案也很简单,没有涉及到复杂的方法。在13道赛题的冠军的综合评审中,我们也没有能够表现得很好,未来还有很长的路要走,与你共勉。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。