美文网首页
IJCAI-18 阿里妈妈搜索广告转化预测(初赛)

IJCAI-18 阿里妈妈搜索广告转化预测(初赛)

作者: RHKeng | 来源:发表于2018-05-17 22:41 被阅读0次

    从2018年3月1号开始,IJCAI-18阿里妈妈搜索广告转化预测大赛开始了,选手可以进行数据的下载和分析。由于上一个比赛--印象盐城-数创未来大数据竞赛-盐城汽车上牌量预测的复赛要到9号截止,因此,我在大概三月中旬才开始进行数据分析。 由于我是一个萌新,之前接触类似的比赛也比较少,很多数据分析,特征筛选等方法也都还没掌握得很好,因此这篇博客也只能作为心得和总结。接下来将会从赛题背景,数据分析,特征,模型以及总结五大部分讲述这次比赛初赛的一些感想和收获。
    附 :github地址

    • 1 赛题背景
      本次比赛主要是关于广告CTR(Click-Through-Rate),即广告的点击转化率。搜索广告的转化率,作为衡量广告转化效果的指标,从广告创意、商品品质、商店质量等多个角度综合刻画用户对广告商品的购买意向,即广告商品被用户点击后产生购买行为的概率。举例来说,用户在淘宝搜索栏输入“女装”并点击,相关的女装列表将会展现给用户,用户点击感兴趣的女装进入详情页,通过查看商品介绍、店家信誉、用户评论等信息综合决定是否购买,如果有M个用户进入同一商品详情页,其中N个购买了该商品,那么该商品的转化率为成交总数和点击总数的比值(N/M)。在这个过程中,如果能够将转化率高的商品返回给用户,那么用户看到的商品正好就是想要购买的商品,这样用户将会更快速地找到喜欢的商品,从而提高用户体验;另一方面,广告每被用户点击一次商家都要付出一定的成本,如果广告被点击却没有成交,广告主将白白付出成本,而如果展现给用户且被点击的广告商品都产生了购买,那么商家虽然付出成本但还是能从成交中获得收益。总结来说,准确预估转化率,能够使得广告主匹配到最可能购买自家商品的用户,提升广告主的投入产出比(ROI);另一方面,也能让用户快速找到购买意愿最强的商品,从而提升在电商平台中的用户体验。
    • 2 数据分析
      • 2.1 关于数据集
        本次初赛的数据量并不大,训练集时间跨度是从2018-09-18到2018-09-24,而测试集则分了A榜和B榜两部分进行线上验证,A榜是2018-09-25当天数据抽取30%,另外一部分作为B榜的线上验证。由于初赛的数据量不大,而且线下和线上都是一样的数据分布,因此在训练的时候可以把所有的数据放到xgb里面训练。 (数据时间经过脱敏)
        通过分析可以看到,数据集的正负样本不太均衡,负样本占了很大的比例。但是由于线上和线下分布一致,所以一开始没有考虑进行正负样本比例调整,比如说进行负样本采样或者正样本过采样。
      • 2.2 关于特征
        通过分析可以知道,对于一些特征,比如说用户性别,用户年龄等,存在空值情况,由于xgb可以自动处理空值,因此,在初赛的时候就没有对空值进行处理。
        通过分析过后,可以看到很多特征其实好像是对转化率有一定的影响,都是呈现一个二次型的形式,就是在某个值转化率会达到最高,因此在一开始我是进行区间划分,将少量的值进行区间合并,剩下的特征进行onehot处理,后面放弃了这个操作,因为其实xgb会自动寻找最佳的分割点。
        关于组合特征,通过透视表分析,找不到很大的规律,但是想着先提高模型的复杂度,我是提取了一些组合特征放到模型里面。
    • 3 特征
      初赛的特征,并没有做很多,因为一开始觉得一味地堆特征会引入噪声,降低模型精度(其实后来发现,在特征这一块,大佬们是通过两种方式提高精度的,一种是一味地堆特征,另一种,则是提取强特)。总的来说,初赛时候的特征可以分为基础特征,用户维度的统计特征,单维度分析特征,滑窗特征,穿越特征,组合特征。
      • 基础特征(上下文,用户,商品,店铺维度的特征)
        广告商品的展示页面编号
        用户性别 / 年龄等级 / 职业编号 / 星际编号
        商品品牌编号 / 城市编号 / 价格等级 / 销量等级 / 被收藏的次数等级 / 被展示次数等级
        店铺的评价数量等级 / 好评率 / 星级编号 / 服务态度评分 / 物流服务评分 / 描述相符评分
      • 单维度分析特征(针对上下文信息中的根据查询词预测的类目属性列表与商品的类目列表和属性列表,定义了一个匹配程度特征,一开始简单粗暴地定义为两者交集个数 / 预测的个数;关于店铺那一块的特征,比如好评率,只是简单地计算了均值然后进行对比,后面证明效果并不好)
        预测类目 / 属性的个数,商品实际的类目 / 属性个数,以及两者的匹配程度
        店铺好评率 / 服务态度评分 / 物流服务评分 / 描述相符评分与均值的差 ,是否高于均值
        小时,小时转化率
      • 组合特征(对转化率特征进行贝叶斯平滑处理,对于没有出现的用户的转化率,在处理后会被赋值为均值。贝叶斯平滑,避免了5/10和50/100一样转化率的情况,因为10次中出现5次其实是存在很大的偶然性,也避免了没有出现过的用户直接赋值为0的情况)
        用户 / 用户品牌 / 用户店铺 / 用户叶子类目 / 用户商品对应的点击次数 / 购买次数 / 转化率
        用户性别与品牌 / 店铺的转化率
      • 用户维度的统计特征
        用户一个小时前的点击次数,点击相同商品 / 店铺 / 叶子类目 / 品牌的次数
        用户一天前的点击次数,点击相同商品 / 店铺 / 叶子类目 / 品牌的次数
        用户历史点击次数,点击相同商品 / 店铺 / 叶子类目 / 品牌的次数
        用户距离上一次点击时间间隔,距离上次点击相同商品 / 店铺 / 叶子类目 / 品牌的时间间隔
      • 滑窗特征(初赛的时候的滑窗,主要是以3天为窗口长度,即以18到20号提取21号对应的滑窗特征,以此类推)
        用户 / 用户商品 / 用户品牌 / 用户店铺 / 用户叶子类目在时间窗口内的点击量 / 购买量 / 转化率
      • 穿越特征
        用户后面点击相同商品 / 叶子类目次数,后面是否点击相同商品 / 叶子类目
    • 4 模型
      初赛阶段,走了很多弯路,浪费了挺多的时间,因此在模型上面并没有做很大的文章,只是简单的使用了目前比较流行的xgb模型,关于参数,一开始采用了网格搜索方式来做,后面发现耗费的时间也挺多的,也尝试了进行手动调参的方法(参数调整顺序:树的最大深度max_depth-->孩子节点中最小的样本权重和min_child_weight-->用于训练模型的子样本占整个样本集合的比例subsample-->在建立树时对特征随机采样的比例colsample_bytree-->L2 正则的惩罚系数lambda-->gamma),发现效果相差不大。调参后期,尝试了调小学习率,证明了确实是可以调高模型的精度的,所以我在后面基本都是采用0.01的学习率。初赛的时候也采用了xgb内置的交叉验证方法检验模型,查看模型误差。
    • 5 总结
      作为一个萌新,真的是第一次打这种类型的比赛,由于一开始没有去参考类似比赛的做法,所以很多时候都是自己在瞎YY,浪费了很多的时间。此外,在这个初赛中,接触了很多的概念,比如滑窗,比如分桶,比如统计特征,比如组合特征要怎么做,以及贝叶斯平滑等等,确实在初赛就学到了很多的做法。在模型方面,这次也是我第一次接触xgb,之前是有接触过树模型,xgb是基于决策树的,因此对于参数的理解还比较好入门,不过在一开始的时候对xgb模型的节点分割理解还不是很清晰,也不知道树模型其实对比较稀疏的特征是比较难处理的,因此把一些稀疏的特征也弄到了模型里面,比如user_id,后面把这类特征去掉后,精度提升了很多。
      总的来说,这次阿里妈妈的初赛,最终只是以200多名成绩进了复赛,感觉自己很多东西都没做好,首先是数据特征分析那一块,很少画图表等直观的东西进行辅助分析,很多时候只是自己在YY;其次,是关于模型方面,只是单一的使用xgb,没去尝试其他的模型,包括fm,ffm,deep and wide,deep and cross等;时间规划方面也做得不好,没有规划好时间。

    相关文章

      网友评论

          本文标题:IJCAI-18 阿里妈妈搜索广告转化预测(初赛)

          本文链接:https://www.haomeiwen.com/subject/xaapdftx.html