【SPA大赛】数据处理经验以及特征选择方法

零 自我介绍

我们是TripleLift队,来自中国科学院大学。

第一次接触这样的比赛,前期花了很多时间来尝试错误的处理方式,特征筛选方式,靠了很多拍脑门决定的以及突发奇想的特征拿到了初赛66名。想一想真是全看运气。

不过,也是有很多特征是经过一个很煎熬的过程,直到某一刻才发现的。比如我在这篇文章中重点介绍的两个特征,posflag,stay_time.

一 . 特征概述

对特征工程的理解

1.特征工程是成功的99%。

2.单特征得分很高的,并不一定和其他特征很搭。

3.特征工程本质上是求特征的最优组合,是一个搜索问题。

So,你得先有特征才行。

制造交叉特征

1.这两个特征相关性不能太强,相关性太强,做了等于白做。比如第一个特征为x,第二个特征为y,假设相关性太强以至于y=f(x),那无论你怎么交叉,你都是在用x这一个属性。

2.尽量避免出现(a,b),(b,c)这样的交叉特征组合,保证每个特征只有一个交叉特征,原理同1。

3.二阶的交叉特征其实FFM,FM都可以自动化生成,但其实对解决问题来说,并不一定有好效果。

So,你的交叉特征只是一部分。

由专业知识提取的特征

1.这才是解决问题的核心。

2.在这个回流率预估的情境下,又知道广告位价钱不等,所以我们可以先考虑一下,广告位有什么特点。

3.为什么会有推广计划,推广计划决定了对象,那么推广计划对于ROI之外的回流率肯定很低吧?

4.有一个很重要的,但是又常常被忽略的特征,停留时间。

二 .特征详解

铺垫了这么多,其实就是为了讲这俩特征。

  • posflag

还记得那天我刚加进去二群(一群满了),抱着投桃报李的心态,这个特征我在二群提出来。。。可惜太年轻了。

当天我的QQ快爆炸了,都是来要特征的。之后我在群里开源了,结果他们不会用。。。orz。。。。

这个特征就是贝叶斯平滑后的positionID的回流率。

曾经有一段时间,我统计了positionID的回流率,但是点击次数有的特别少,还有的竟然点击1转化1,这个要是当特征,简直爆炸。

我想,次数多的比较可信,但是次数低的怎么处理呢,而且次数低的在未来出现的次数会很多,又不能删掉,咋办呢?

于是我找到了一种方式:贝叶斯平滑

很明显,处理之后不会出现转化率为1或0的情况了,而且转化率连续性更好了。

这个使得点击次数多的,转化率几乎不变,次数少的,转化率大变。- -

其实这个特征基于一个假设。

我先统计了所有的训练集然后放到训练集上当特征,其实这时候应该是过拟合的,but,线上提高了两个千分点。

我思考了一下,可能positionID所代表的广告位其实无论放啥,平均回流率都差不多,所以你统计的越多反而越准。

  • stay_time

stay_time=对同一用户,记录与上次点击的时间差,如果是第一次点击,置为-1

这个特征一开始我觉得应该不会有用,因为这个数不准。

BUT,它解决了连点好几次的问题啊,这个就是trick。

复赛开始了,看到这个数据集大小我已经瑟瑟发抖,有空再继续更新 吧。。。To be continued。。。

.

.

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

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

编辑于

晁涌耀的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

C# 通过HttpWebRequest在后台对WebService进行调用

http://www.cnblogs.com/macroxu-1982/archive/2009/12/23/1630415.html

3242
来自专栏CreateAMind

文字描述生成视频的开源项目

Tensorflow implementation for the paper Attentive Semantic Video Generation usin...

1282
来自专栏码匠的流水账

聊聊EurekaRibbonClientConfiguration

spring-cloud-netflix-eureka-client-2.0.0.RELEASE-sources.jar!/org/springframewor...

1421
来自专栏lgp20151222

Java获取当日的起始时间,结束时间,现在时间,是否在时间段中。

1422
来自专栏我和未来有约会

silverlight向服务器post数据类

using System; using System.Net; using System.Windows; using System.Windows.Co...

2055
来自专栏c#开发者

C# : row-clickable GridView and get and set gridview rows using JavaScript

Complete C# code: ---------------- using System; using System.ComponentModel; ...

3136
来自专栏码匠的流水账

聊聊spring cloud的AbstractLoadBalancingClient

本文主要研究一下spring cloud的AbstractLoadBalancingClient

1082
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5855
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2488
来自专栏跟着阿笨一起玩NET

winform treeView 数据绑定

1092

扫码关注云+社区