前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SPA大赛】预测广告转化率实战心得

【SPA大赛】预测广告转化率实战心得

原创
作者头像
肖洋
修改2017-06-19 18:55:36
1.6K0
修改2017-06-19 18:55:36
举报
文章被收录于专栏:肖洋的专栏肖洋的专栏

大家好,我是来自华中科技大学计算机系的肖洋。第一次参加这种机器学习类的比赛,侥幸进了决赛,也来分享一下比赛心得体会。

一、问题与数据分析

这次比赛是预测广告转化率的问题,就是预测某个用户点击某广告之后发生转化的概率,这显然是一个二分类问题。首先简单对数据做一下统计,发现这里面正类负类比例严重失调,正类也就是发生转化的样本只占了总样本的2.5%。一上来我使用随机深林做了一下简单预测,发现预测的结果当中最大的概率也不超过0.5,所以我感觉很不靠谱,另外在知乎上看到有人说这是一个imbalance learning的问题,所以我就看了各种文章,使用里面的过采样、欠采样等方法,但是效果都不好,很明显我掉到坑里面了。总结一个经验吧,数据和实验结果才是王道,不要老凭自己的感觉去揣测。

二、特征选择

“特征决定上限,模型只能原来无限逼近这个上限”,这次比赛我确实深刻体会到了这个至理名言。特征工程是数据预测里面最重要的环节,没有之一。

首先是特征选择因为没有做过类似的比赛,所以一上来我就急急忙忙开始用随机深林的feature_importance做特征选择,这毫无疑问是费时而且错误的选择。其实有两种很简单的方法可以用来观察特征的重要性:第一种是通过data.groupby('feature').mean()'label'方法,得到这个样本在各个取值下的均值,然后再求一次方差,就知道这个特征的重要性了;另一种是通df=data.groupby('connectionType','label').size()来观察一下在给特征取不同值的时候正负样本的比例,如果取不同值的时候比例相差很大,这个特征十有八九是一个强特征。

其次是各种特征的挖掘、组合等,这些隐藏的特征才是决定成绩的关键。特征挖掘方面,主要是各种统计变量,例如用户安装的app个数、与各种特征对应的点击量、转化量、转化率等;特征组合方面,可以通过groupby('feature1','feature2').size()来简单统计一下组合特征下的label情况,然后选择最重要的特征组合。听大佬说connectionType和positionID是一个很重要的组合特征,可能我没有用好,导致了我和前面队伍的差距。

三、数据处理

数据处理方面我也没有花太多功夫,主要是对某些与转化率相关的特征做了一下贝叶斯平滑。为什么要做平滑,举个例子,对于特征creativeID,比如取值为100的样本只出现了一次,没有发生转化,由于样本太少,我们并不能直接认为取值为100的样本转化率为0,毕竟样本太少,没有说服力。贝叶斯平滑的文章参考http://blog.csdn.net/mytestmy/article/details/19088519

四、模型选择

我使用过四种模型,随机深林、逻辑回归、xgboost和fm。其中随机深林效果最差,当然也有可能是我把这个模型用废了,逻辑回归其次,fm比xgboost稍微好一点,可能是因为fm考虑了特征的组合。另外提一句,在我的实验过程中调参对于结果的影响是微弱的,所以个人建议不要把太多的时间花在调参上面了。

最后希望自己能在决赛当中取得一个好成绩。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、问题与数据分析
  • 二、特征选择
  • 三、数据处理
  • 四、模型选择
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档