首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SPA大赛:数据测试与特征工程的优化思路

作者:马卓然

大家好,我们是吃茶少年团队,这是我们团队第一次参加比赛。由于没什么经验,走了很多很多的弯路,我们在比赛中跟随大佬亦步亦趋地摸索前进。目前成绩在24名,写下这篇比赛心得,希望能共同交流、进步。

数据方面

关于训练集、测试集的选取上:由于比赛数据是时序的数据,所以我们首先想到的思路是尝试用17-29日的数据预测30日,使用这样的训练集、测试集设置线下的对数损失很小,但是线上和线下的增减时而同步时而不同步。然后,经过我们多番尝试最终选择了随机70%生成为训练集、30%为测试集,调整随机数种子使得线上和线下尽可能同步。

关于本次比赛的数据,我们可以把比赛给定的14天中每3个小时的转换率画出来,如下图所示。我们可以明显看到最后几天转换率偏低,这是由于用户转换时间存在延迟造成的,对最后几天数据有影响,也就是说最后几天的数据存在噪音,转换率偏低。如果想要把最后加入训练集,那么需要最后对预测结果进行一个修正过程,可以通过Logistic反函数对预测概率进行修正。同样,在这个图中可以看到19号的上午和20号的中午存在两个转换率特别异常高的时段,我们可以分析为什么这两个时间段转换率特别高,这对我们数据清洗有一定帮助。

特征工程

关于特征工程方面,我们首先尝试了一些基本的组合特征,把各id类特征组合起来使用点击数、转换数、转换率来表达。通过这些基础的组合统计特征,使得分数上涨了2个千分点。我们把过程中尝试的特征过程展示如下表所示:可以看到每次成绩的大进步都是依赖于新的强特征的增加。

之后的找新特征过程,我们主要按照三个方面来找:

1 . 从业务的角度,即我们去猜测用户点击广告后是否发生转换可能与哪些因素有关。这部分通过猜测结合分析数据来实现,生成特征后使用groupby来确定这个新特征是否会对label的分布造成影响。比如在下面这张图中,我们通过groupby命令,connectionType这个变量不同的取值对label的分布有较大影响,可见connectionType这个变量对是否转换影响还是很大的。

2 . 从模型提供的信息,我们使用了xgboost这一模型来训练,通过xgboost给出的特征重要性,主要观察特征重要性在前面的特征,考虑这些特征是否可以有更好的表达。在下图xgboost给出的特征重要性中,我们可以看到ID类的特征都占据着十分重要的特征,对于这些重要性很高的特征,我们尝试把这些特征进行两两组合,而对特征重要性很低的特征比如app平台等我们可以考虑把他们去除。把这些无用的特征去除,可以加快训练模型的速度,也可以避免对模型产生干扰。

3 . 多与人交流。我们产生的很多新特征都来自于群里小伙伴的讨论中,从大家的讨论中得到一些灵感,积极借鉴大佬们的思路,借此生成新的特征。比赛中经常会出现较为隐蔽、但对分类效果提升很大的特征,这些magic特征往往来自于各个小伙伴的灵光一现,多关注群里的进展,往往可以获取这些magic特征,从而使成绩飞跃。

心得

多看比赛经验,我们参考了Kaggle上的一些比赛心得,特别从获胜者的代码中学到了很多技巧。比如从台大avazu获胜的代码中,用效率更高的词典来代替pandas的merge命令,这些代码技巧可以使得数据处理时间上大为减少。

多观察数据。原始特征的表达决定了成绩的上限,强特征往往来自于数据之间的隐含关系,找到强特征相当于把这件分类的事情以一个更好的表达方式告诉给算法。类似的比赛中往往有很多经典的特征,可以模仿前面比赛的思路。

多和其他参赛者交流。群里有很多大佬,提供着不一样的思路,借鉴大佬们的思路,相当于做一个stacking,参考大佬们的经验增加思路,会取得更好的成绩。

第一次参加比赛,收获很多,最后感谢腾讯提供的比赛、感谢队友、感谢群里的大佬。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180111A0H97D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券