【 SPA大赛 】关于数据处理和特征工程的一些分享

2017-06-19 18:54:53 浏览数 (1)

大家好,笔者是“南七技师”队,作为一支全部由萌新组成的队伍,一路走来虽步履维艰但却收货颇丰。同时也非常感谢腾讯公司举办这次社交广告高校算法大赛,为笔者提供了良好的学习途径与机会。

下面主要分享笔者在比赛过程中的心得体会:

1. 数据探索以及数据预处理

刚拿到数据,笔者就对其进行了一些探索性的分析,包括对数据变量之间的联系和数据分布情况的统计,并对其进行了可视化。进行可视化之后,就可以对原始数据有进一步的了解,然后进行数据的些清洗工作,包括对缺失值的处理以及对离群点的去除等。

2. 特征工程

笔者在特征公共步骤进行了几次尝试如下:

1) 选用前7天的数据作为训练集、后7天的数据作为测试集,结果发现效果并没有使用全部的数据集效果好。

原因分析:数据量减小。

2) 选用所有天的上午、下午数据作为训练集,来分别预测上午、下午的结果。

原因分析:数据量减小。

3) 把所有的数据都转化合成了一张表,并且把低维度的特征进行了One-hot处理,将这些特征全部加入到了模型中进行训练,成绩并不是特别理想。

原因分析:只是单纯的加入所有的特征,并未选择有效特征。

经过几次尝试之后,笔者着手于对数据作统计分析,对于一个特征是否真的有意义是需要看特征的分布比例,在正负样本中所占的比例越大就表明该特征的对正负样本的区分度较好。同时,笔者还进行对特征的组合,计算出其中的转化率。然而,特征之间必然是会有重复的,这将会导致过拟合的现象出现,给模型造成不必要的干扰,笔者解决这种问题的方法就是逐一测试特征是否有效。

3. 技巧

在实验过程中,通过分析原始数据背后的真实意义,以及观察提交结果的反馈,总结了一些有用的技巧,如下:

1) 笔者对转化回流时间做了一些小处理。因为回流时间是从用户点击到广告系统得知用户激活App,而且转化数据是由广告主提供的,就可以计算出广告主上报到广告系统这期间的时间,这个特征也提升了有万分之五。

2) 尝试了position*connectionType,效果也有提升。

3) 通过观察数据发现,可以发现存在很多重复点击的数据,同一个广告被连续多次点击后转化只在最后一次点击上,由这个笔者构造出的特征一下子让笔者的成绩提升了千分之三。

4. 总结

由于笔者团队是个新手团队,没有参赛经历,因此开始比赛的时候第一步就是了解数据,各个字段的含义联系等等。然而过了这段时间,笔者就埋头进入了所谓的“业务”分析的方向,再也没有仔细看过数据,不断地更换模型更换参数构造各种的特征,然而取得的效果却并不和消耗的时间成正比。后经提醒,笔者将目光转移回了初始数据,这才有所斩获。这可能是新手往往会经常犯的错误吧,以后的比赛过程中还是要多多花点时间在数据上面。

最后祝大家取得好成绩!

0 人点赞