赛题链接:http://www.pkbigdata.com/common/cmpt/2018科大讯飞AI营销算法大赛_竞赛信息.html
-
数据特点
- 按类型: 数值型、单值型、多值型(user_tags)
- 按业务类型: 广告主、媒体、上下文(设备环境)、用户
-
模型方案选择
- 初步使用常规的lgb_model,速度快。效果优秀,方便测试特征。
- 多值特征CountVector处理,以及单值特征one-hot,这里使用csr矩阵来存储,大幅度优化内存。
- 验证集策略,这里使用的是5折,自己测试的时候使用过三种方案
- 5折交叉检验,验证特征是否符合整体数据集。
- 最后一天作为验证集,验证特征是否时序稳定(线上验证集是后一天)
- 最后一天作验证集,但是拆分四份,分别作统计特征以及分别验证(考虑到线上测试集采样比例降低了1/4)
-
关键点
- count特征:
- 作为类别特征中最重要的属性之一,count特征能表示很多有趣的东西。比如你有1000个机型,但是其中有一两百个机型都是比较奇葩的名字, 但是出现次数很少,对于模型而言,几乎不可能学到出现次数很少的主体的信息(甚至无法满足叶子分裂条件),比如 某某的iphone、xx最酷的、土豪金xx, 但是他们的count特征就有趣了。因为你会发现count 都为1的数据,这些人,都是喜欢"个性化"的。
- ratio特征:
- ratio 特征表示选择。比如,某个广告主男生用户的受众占比比较高。诸如此类。 ratio 特征有效的前提是(广告主或者线上推荐系统,一定会朝着转化率高的属性加大投放。所以这里如果知道他们系统的应对策略,也会是一个很有趣方向,比如腾讯赛的lookalike机制造成的uidcount的泄露) 另一个前提是,ratio的双方,存在着真实的交互,比如,广告主有权利选择某个平台,某些类型的用户。比如推荐系统能选择用户等等。 所以事实上暴力的ratio效果会很差,这里我选择的是 媒体、广告主、上下文的交互。
- count_day_hour_**
- 基于对业务系统的思考。发现每天的每个小时的投放量和转化率有密切关联。因为系统发现转化率变高了,会提高投放量?响应周期定义为1个hour。 线下测试,确实也是很强的特征,但是线上效果不好,通过数据观察发现,测试集最后一天的数量大约采样降低了到了1/4,所以对最后一天使用了* 4的操作(也可用用/当天的总量来替代) (这里其实告诉我们,请珍惜每一个毒特征,特征毒,说明模型学到了某些东西,而这些东西,测试集没有了。那么就要考虑,是真的没有了?还是要通过某些处理就可以找回来。找回来就是强特~)
- hint:
- 这里有个好玩的思考方向,如果广告主选择了60%的男生,可是他们系统里男生的占比达到了70%,那么该广告真的是男生优先的么?这个特征就不开源啦~以上的分数也基本足够了。
- count特征: