作者:楼观白楼

出处: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的构建流程

初赛时lgb做的一些操作与对应的分数如下

统计规则

规则部分的框架是使用历史同期销量,历史最近销量与指数平滑进行加权得到一个初步预测销量,然后用上下半年的销量变化趋势与平滑构造年度销量变化趋势,最后两者相乘即可得到规则的预测结果。

由此可见,规则带有相当多的超参数。据我了解不少团队复赛时规则血崩,这也是时序题里面规则的泛性问题。我们初赛时规则可以达到0.633,是一个绝对的主力,复赛提交次数太少,最终规则也只有0.598,只能以lgb为主,规则为辅。

模型融合

因为只有两个模型,所以模型融合基本上不用考虑太多,直接进行简单的算数/几何加权即可,由于几何加权可以使预测值偏小,而2018年的销量理应是较之前低的,所以我们使用了几何加权进行融合。

另外1234月分开进行融合,可以带来微小的提升。

总结

这里特别提一下模型的数量与运行时间的优点,据我们决赛观察,大多数队伍都有超过2个的模型,而且有的队伍需要超过一个小时的运行时间。从工业角度来讲,我们的方案应该是更加适用的。

推荐原创干货阅读:  

聊聊近状, 唠十块钱的

【Deep Learning】详细解读LSTM与GRU单元的各个公式和区别

【手把手AI项目】一、安装win10+linux-Ubuntu16.04的双系统(全网最详细)

【Deep Learning】为什么卷积神经网络中的“卷积”不是卷积运算?

【TOOLS】Pandas如何进行内存优化和数据加速读取(附代码详解)

【TOOLS】python3利用SMTP进行邮件Email自主发送

【手把手AI项目】七、MobileNetSSD通过Ncnn前向推理框架在PC端的使用

【时空序列预测第一篇】什么是时空序列问题?这类问题主要应用了哪些模型?主要应用在哪些领域?

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

个人微信

备注:昵称+学校/公司+方向

拉你进《高质量AI交流群》

点个在看,么么哒!

竞赛,开源!2019CCF BDCI 乘用车销量预测 冠军方案相关推荐

  1. 开源!2019CCF BDCI 乘用车销量预测 冠军方案

    作者:楼观白楼 出处:https://zhuanlan.zhihu.com/p/98926322 写在前面 在本次比赛中,我们团队恶魔妈妈买面膜(经主办方建议,决赛时队名修改为秋名山车神)在初赛A榜, ...

  2. Kaggle 商品销量预测季军方案出炉,应对时间序列问题有何妙招

    https://baijiahao.baidu.com/s?id=1595331607299762312&wfr=spider&for=pc 雷锋网 AI 研习社消息,Kaggle 上 ...

  3. 【数据竞赛】消费金融场景下的用户购买预测冠军方案分享

    大赛介绍 2000多年前,阿基米德说:"给我一个支点,我可以撬动整个地球".伴随近年来新技术的快速涌现和迅猛发展,大数据或将成为传统金融行业向金融科技转型的"阿基米德支点 ...

  4. 【数据竞赛】2020腾讯广告算法大赛冠军方案分享及代码

    写在前面 2019年冠军选手成功卫冕!!! 代码地址:https://github.com/guoday/Tencent2020_Rank1st 从初赛冠军.复赛冠军,然后到最佳答辩,一路披荆斩棘,再 ...

  5. 英伟达冠军!FB-OCC:CVPR23 3D占用预测冠军方案解读

    作者 | 自动驾驶我睡觉 编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/638759432 点击下方卡片,关注"自动驾驶之心"公众号 ADA ...

  6. 开源:CVPR 2020视觉定位挑战赛冠军方案

    今天介绍今年视觉定位挑战赛的冠军方案.接下来会分别介绍什么是视觉定位挑战赛,比赛的难点是什么,冠军方案以及后续展望. 1. 关于视觉定位挑战赛 视觉定位是一个估计6自由度(DoF)相机姿态的问题,从中 ...

  7. ModelArts的雪中送炭,让我拿下CCF BDCI华为Severless工作负载预测亚军

    摘要: 中国计算机学会大数据与计算智能大赛(CCF BDCI)华为Severless工作负载预测亚军方案和ModelArts使用体验分享 本文分享自华为云社区<免费薅ModelArts算力资源- ...

  8. 【数据竞赛】CCF乘用车细分市场销量预测竞赛总结

    题目:乘用车细分市场销量预测 类型:时序回归 https://datafountain.cn/competitions/352/ 赛题背景 近几年来,国内汽车市场由增量市场逐步进入存量市场阶段,201 ...

  9. CCF-乘用车细分市场销量预测竞赛

    乘用车细分市场销量预测 需求:根据给出的60款车型在22个细分市场(省份)的销量连续24个月(从2016年1月至2018年12月)的销量数据,建立销量预测模型:基于该模型预测同一款车型和相同细分市场在 ...

最新文章

  1. PostgreSQL 理解 template1 和 template0
  2. C++ Opengl 球形环境映射源码
  3. Word List 26
  4. java -jar 默认参数_JAVA入门学习指南,建议收藏
  5. css 3d魔方源代码,CSS3 3D环境实现立体 魔方效果代码(示例代码)
  6. [javaME]摩托罗拉V300-V500-V600同时播放音乐的讲究
  7. uni app 调用网络打印机_uni-app封装一个request请求
  8. 【转】Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码
  9. GDAL\OGR读取数据示例 C#版本
  10. 10.大数据架构详解:从数据获取到深度学习 --- 存储是基础
  11. 获取js文件后的参数
  12. QQ、MSN、淘包旺旺、Skype临时对话的html链接代码
  13. weblogic安装与部署项目
  14. UIWebView加载本地HTML文件
  15. Win10微信打不开小程序,其他程序出现找不到HID.DLL的解决办法
  16. HTML之meta属性大全
  17. 阿里云服务器ECS与域名的绑定
  18. 你 --- 短诗四句
  19. “爱什么,来什么”,本地生活饿了么
  20. 免费内网穿透端口映射工具-网络通

热门文章

  1. 【用例设计】接口用例设计
  2. spring-boot 修改启动图标
  3. 用Python做一个会旋转的五彩风筝
  4. FME2018软件安装
  5. Linux 数据可视化工具
  6. linux 命令行获取时间,【Linux】让命令提示符显示日期和时间
  7. Linear Discriminant Analysis (LDA)
  8. golang 获取当天0点时间_golang 获取当天是周几(两种方法)
  9. 对三类软件(游戏,系统,工具)的分析与心得(软件工程第一次作业)
  10. UG二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突