【SPA大赛】转化率预估中的用户偏好Emebeding

分享技巧:Emebeding降维(用户偏好分析)

在Tencent广告算法大赛中,在对用户点击之后的转化情况预估时,笔者主要需要考虑两方面情况:

(1)用户对点击的App偏好;

(2)具体点击场景与用户的匹配情况。

其中(1)又可分为:①具体用户对App的偏好;②用户的属性对App的偏好。这两点大致可理解为:我喜欢APP,所以我下载,或者虽然我以前没接触过这类APP,但这类APP对我这类人群具有天然的吸引力,所以我也下载了。这里主要分析①中用户偏好。

根据比赛提供的数据,用户偏好可以从以下三个方面寻找:①用户近期的流水安装;②用户的历史APP安装;③用户近期的点击情况。这三点中,重要性程度:①>②>③,但是①的数据量只有部分,约占到全部数据量的1/10,②的数据量约1/2,③就更稀疏,训练数据中300万,去重的USERID有180万,每个用户的平均记录只有2条,想要找到对应该用户在前面几天点击该APP的记录很困难,只对部分用户有效。

虽然在XGBOOST中,但过多的缺失会导致重要的特征变得不重要,因此我们在进行Emebeding时只采用历史安装数据,保证Emebeding数据的标准性,不需要再进行其他规范化处理。

用户安装历史数据统计如下:

这里我把未知类型的APP当作一类APP来看待,现在看来,未知种类的APP在考虑偏好时,应该去掉不予考虑。

用户偏好可从用户历史安装数据出发,近期用户安装流水数据作为近期用户偏好在这里不进入分析(实际上,近期的偏好更能反映用户点击时的转化情况),用户历史安装数据中App种类较多,远多于我们分析的50种App,因此在Emebeding时,只统计用户每小类安装的APP数目,用户安装之后打开APP的几率较大。Emebeding流程如下:

  • (1)统计每个用户历史安装的各小类APP数目,生成(N*M)维数据表,N为用户ID,M为APP种类数;
  • (2)对(1)生成的数据进行Tfidf转换;
  • (3)利用TSNE流形对数据集降维至2维;
  • (4)将降维后的数据Join入点击流水记录进行训练。

统计用户的APP安装使用情况,共有5大类APP,50小类APP,1800多个APP,因为这1800个APP中在训练数据中出现的只有12个,且如果采用大类数目统计,这些大类APP安装数目很容易占到非常大的特征权重,因此这里只按APP小类目进行统计。

统计出转化与未转化的分布如下图,其实转化与未转化之间并没有分开,只是可以看见转化了的分布较集中,越靠近中间的簇,是不是就转化率越高,暂时还不清楚,笔者用Emebeding之后的特征与时间窗特征,xgboost单模型,可以跑到0.10059的分数。

主要工具:

sklearn中的feature_extraction.text.Tfidf(),sklearn中的mainfold.TSNE(),这个模块只能用来实验,对于样本数超出100000时,基本无能为力,因此这里给大家提供一个额外的计算程序,实际上这个程序也好不了多少,笔者能力有限,是用MATLAB完成的这部分处理,有经验的同学,Python程序可以轻松的转为MATLAB程序。

TSNE是由SNE衍生出的一种算法,SNE最早出现在2002年,它改变了MDS和ISOMAP中基于距离不变的思想,将高维映射到低维的同时,尽量保证相互之间的分布概率不变,SNE将高维和低维中的样本分布都看作高斯分布,而Tsne将低维中的坐标当做T分布,这样做的好处是为了让距离大的簇之间距离拉大,从而解决了拥挤问题。

TSNE算法原理:http://blog.csdn.net/zhangweiguo_717/article/details/70188517 TSNE的Python实现:http://blog.csdn.net/zhangweiguo_717/article/details/70998959

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

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

编辑于

张卫国的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏养码场

写了近120篇博文的特赞CTO黄勇:技术写作也可以锦上添花

记得2013年9月1日,我开始在“开源中国”上发表博客,两年内我写了很多文章,同时也做了自己创立的开源项目,还认识了很多志同道合的朋友,最后也给自己带来了前所未...

472
来自专栏web前端教室

我想要系统一点的教程?现在这些太零散了。

a:有xxx的教程吗? b:给你,xxx教程.rar,下吧,先把文档撸一遍。 a:你这种的百度太多了,我想要系统一点的教程。 ... 上面这类谈话,相信许多人都...

3167
来自专栏java一日一条

前端程序员为什么应该拿高薪

决定产品价格最重要的是供求关系。技术水平重要,但绝没有市场供给关系重要。不能理解的话举个简单例子,空气重要么?重要,人没了空气活不了,但是为什么不值钱?就是因为...

501
来自专栏phodal

2017 年,你应该这样学习 Web 编程—— 内置索引 + 外置搜索引擎

如果你不会使用 Google 去搜索,那么你是一个新手。而如果你只学会如何使用 Google,但是不知道搜索什么,那么你也仍是一个新手。 最初我对这个问题的思考...

1806
来自专栏量子位

Google Sheets新功能:通过自然语言指令自动生成图表

唐旭 编译整理 量子位出品 | 公众号 QbitAI Google Sheets更新了。今早,Google旗下图表编辑应用Sheets的产品经理Daniel G...

3425
来自专栏程序你好

学习编程的五大支柱

1132
来自专栏AI研习社

微软 Ignite2017 大会探秘,Azure 机器学习三大工具正式发布

日前,微软 Ignite2017 大会正在美国佛罗里达州奥兰多举行,除了正式推出量子计算编程语言,对 Azure 云平台进行功能更新等,基于目前各大对手企业纷纷...

3397
来自专栏考试攻略

腾讯云认证考试攻略(运维工程师)

本人于8月26日参加了腾讯云官方运维工程师的认证考试。作为一个运维小白,希望能写一些自己的经验。7月初参加了深圳的运维培训,有兴趣的可以到官网报名(https:...

1665
来自专栏ThoughtWorks

写给自学者的入门指南

在IT工程师和培训机构多如牛毛的时代,拜师学艺并不难。但自学编程对于毫无基础的同学来说却可能是个问题,相信有过类似经历的朋友都有一把辛酸泪和一肚不吐不快的体会。...

3517
来自专栏AI科技评论

开发 | 微软 Ignite2017 大会探秘,Azure机器学习三大工具正式发布

AI科技评论消息,日前,微软Ignite2017大会正在美国佛罗里达州奥兰多举行,除了正式推出量子计算编程语言,对Azure云平台进行功能更新等,基于目前各大对...

34814

扫码关注云+社区