果粒橙团队解决方案
果粒橙团队简单解决方案
###比赛背景
调查发现,在出行产品业务中,不同区域的产品需求量级不一样,不同时段需求量会有高低起伏,相同区域相同时段各产品的需求量因产品特性不同又有差异。
此次竞赛的目的正是为了深入了解产品需求量和产品特性、历史销量的关系,挖掘出影响需求量的关键因素,预测出行产品未来14个月每月的销量,从而指导产品的库存管理和定价策略,这将对收益管理提升有着重要作用。
###作品展示
我们将从以上几个方面对我们团队解决方案进行一个详细的阐述。
###团队介绍
我们的团队都由三名成员组成:队长沈伟臣,队员戚家恒和盛竹青。队长沈伟臣和队员戚家恒来自于浙江大学计算机学院,队员盛竹青来自于杭州安恒信息技术有限公司。相比于参赛的其他团队,虽然我们团队经验并不丰富,但是凭借我们的团结和不懈努力还是取得了比较满意的成绩。
###数据处理
现在直接进入主题,拿到数据后现对数据进行探索性分析,发现部分特征以及商家的销量信息均存在缺失情况。我们采取了一些策略进行处理,如根据地区id的层次关系进行缺失填充,或对某些地区的缺失数据赋予新值,但是这些方案在我们的模型中表现并不好,最终没有采用。对于price数据的缺失和异常直接丢弃了。我们还做了一些预测后处理,如对预测结果中值小于0的记录,用其前23个月中有效的最小值替代,若前23个月均缺失数据,则直接置0。对于预测时间早于合作时间或开售时间的数据,直接置0。
###特征工程
总体来说,我们的特征工程并不十分复杂。我们对voter属性进行非等距的分箱处理,这样可以避免模型在这个连续特征上做出过于复杂的分裂操作。由于出行产品的单价会根据季节,星期,销售情况的变化而变化,所以我们根据历史订单信息统计了每个产品平均销售价格,作为一个新的特征来综合描述出行产品的价格。我们根据评分信息和投票信息重新定义了新的评分特征,综合权衡了投票人数和投票分数两者。最后简单的添加了一些时间相关的特征,如当月的节假日天数,产品售卖的时间等。
###模型构建
可以看到,最终的模型中我们一共采用了40个特征。这在前面的队伍中应该算是比较少的一个数量了,当然这些特征都是我们通过前期尝试后最终保留下来的。
关于模型方面,最初我们选择了随机森林,因为随机森林训练速度快,有利于我们快速地进行特征迭代。
之后使用了bagging+gbdt,其思想就是将随机森林中的单棵树替换为拟合能力更强的gbdt,采用这个模型后,为我们带了很多的提升。
比赛进行到后期,听群里有人说用了LightGBM,于是我们本着学习的想法就想去试下,尝试后发现这个模型的效果要比传统gbdt好,并且训练速度也非常快。这也成为了我们最终采用的模型。
最终我们使用了多组bagging+lgb的预测结果的均值作为最终提交结果。
#选手专访
###Q1 伟臣你好,作为队长能就你们团队的成员及分工情况做一下简单介绍吗?
我们团队包括三名成员,包括沈伟臣,戚家恒,盛竹青。他们两位都是我的同学,其中我和家恒现在在浙江大学读研,盛竹青是我的本科同学,现在在杭州的一家公司工作。我们团队的成员在数据竞赛方面应该算是新人,这次取得这个成绩,大家都很开心。
作为一个新手团队,我们刚开始没有成熟的分工机制。总体来说我和家恒主要负责数据分析和代码编写,竹青是女生,所以让她负责查阅一些现有的比赛相关的文献资料,为我们解题提供一些思路。
###Q2 你个人觉得本次比赛和之前你参加过的一些比赛有什么不一样的地方么?它的难点你觉得在哪里?你们又是如何解决的?
我个人去年10月份参加过CCF的个用户画像的比赛,这个比赛和它完全是不同风格类型的比赛。首先这个比赛是一个回归问题,这也是我第一次做回归类型的比赛。其次,还涉及到了时间相关的内容。这个比赛,让我们很痛苦的一个地方就是很难构造出一个能够和线上保持同步增减的线下验证数据集。这导致我们在解决问题的时候没有一个非常清晰的方向。还有一个难点就是,数据的缺失情况,包括部分商家销售记录缺失的情况和某些特征的缺失情况。
对于验证集的构造问题,我们线下设置了两个验证机制,时间划分都是前14个月训练,后9个月作为验证集。第一个是使用全部数据进行训练和验证,第二个是只使用具有销量记录的数据进行训练和验证。我们认为我们的算法在这两种验证机制下都有提升的时候才算是具有较好的效果。
对于特征的缺失,我们尝试过用一些策略进行填充,但是并没有取得较好效果。最后缺失特征以特殊的形式进入模型一起训练。
###Q3 伟臣同学学习计算机已经有一段时间了吗? 随着工智能不断的发展你觉得人应该如何找到不可替代的东西?
以我个人的理解,人工智能的产生是社会发展的趋势,现阶段的人工智能可以替代人类完成很多不需要太多思考的工作。那么随着科技的发展,人工智能能够胜任的工作可能更多,而人类也将从简单重复的劳动中解放取从事其他更高层次的工作。人类的发展史就是解放和发展生产力。对于我们而言,保持自己独立的思考,保持对世界的好奇心就好。人工智能说到底就是一串二进制代码。
###Q4 在你所处的计算机领域或者数据分析领域。你是怎么看待理论和实践的关系?
简单来说,理论决定你能跑多远,实践决定了你跑的有多快。我自己的话去年暑假开始学习机器学习的理论相关的知识,然后今年的话算上正在参加的比赛一共有3场,算是在进行相关的实践了。在实践的过程中可以对之前学的知识有更深刻的体会,也可以明白自己哪方面是欠缺的。今年下半年我打算静下心来再补充一下自己的理论知识。
###Q5 你觉得一个数据分析人才应该具备哪些素质?
技术方面的话,我是这么理解的。首先数据分析肯定是基于一定的场景和业务的,那么深入理解业务场景是其中之一。第二,工欲善其事,必先利其器,数据分析人员应该能够根据自己的需要熟练使用相关工具,这也包括了将idea转化为code的能力。然后就是团队协作和信息整合能力。当然了在培养能力的同时也要打好理论基础,切莫图快。最好是以问题为驱动,找不到问题就去找个比赛玩。并且多和别人交流,学习别人的经验,看看别人的分享,不断地去培养自己对数据的敏感程度。
项目地址: