2018用户兴趣建模大赛总结

Attention!
我的Dr.Sure项目正式上线了,主旨在分享学习Tensorflow以及DeepLearning中的一些想法。期间随时更新我的论文心得以及想法。

Github地址:https://github.com/wangqingbaidu/Dr.Sure

CSDN地址:http://blog.csdn.net/wangqingbaidu

个人博客地址:http://www.wangqingbaidu.cn/

CSDN markdown格式可能有问题,如遇到格式问题,欢迎移步我的Blog,http://www.wangqingbaidu.cn/article/dlp1535793589.html

2018用户兴趣建模大赛

我非常荣幸能够全程参与整个比赛,当然这次大赛对于我来说也不仅仅是一个比赛,更是一个角色的转变。记得两三年前我还是“赛圈”的一员,每天跟小伙伴们讨论到底是XGBoost更牛逼还是NN更好。往事历历在目,但已是过眼云烟。两年时间如白驹过隙,弹指一挥间,我摇身一变成为了大赛的全程组织者和见证者。在晚宴上跟选手讨论的不再是技术,而是你技术这牛逼,在xx公司是不是屈才了,要不要考虑来快手试试。

好了就不感慨了,下面我就对这次的比赛进行一个总结。

## 一、赛事筹备 这次比赛的筹备时间用旷日持久来形容再贴切不过了,因为在17年10月份ChinaMM2017(中国多媒体大会)结束之后,公司高层就决定筹备一个产学研相结合的赛事,毕竟快手是一个短视频社区,更多的就是多媒体内容。 所以选择什么样的赛题就成了我们最大的难题,我们 想过一个非常简单的题目——视频分类。这个赛题简单粗暴,而且不用费太大的心里去准备数据。但是做纯视觉的题目很快就被我们否定了,因为现在视觉类的比赛太多了,从学术界到工业界各种各样的比赛层出不穷,所以我们想要结合快手的特色出一个真正在产业界才会遇到的问题。 基于多媒体内容的推荐,这个题目最后经过层层筛选成为了我们的最终选择。当然传统的CTR问题也已经有无数的比赛了,为了与以往的比赛有所区别,我们对数据进行了最大程度的限制: 1. 不提供任何用户侧的meta信息,所有这些特征需要在行为数据以及用户观看过得视频上进行建模。这样最大化的弱化了用户的固有信息。 2. 测试集与训练集的视频侧数据没有任何的交集。也就是预测用户在新视频上的点击率,这样最大程度上避免了像协同过滤这种典型的推荐算法。 如下图,也就说这次比赛,用户对新视频的点击行为只能通过视频的内容维度特征建立联系,这里我们有一个假设就是用户的在快手平台的兴趣是稳定的。因此我们把这次比赛取名为——《用户兴趣建模大赛》。

我们当时准备了上T的原始图像数据,并且打算提供高性能的计算平台给到选手,让参赛选手可以尽情发挥。但是这个比赛在数据筹备阶段出了一个小插曲,就是今年4月份左右Facebook闹出来的隐私泄露丑闻。用户对于快手来说又是最重要的,因为我们对原始数据进行了特别严格的脱敏工作,而数据规模也从一开始的T级别到最后的70G。当时我们以为这会使得这个比赛的可玩性大大降低,但是出乎我们意料的是,这个比赛在几乎没有任何宣传的情况下,竟然吸引到了国内外的383支团队、644名选手参加。这里非常感谢参赛选手的支持和努力。

二、赛题分析

首先来看看数据,这次比赛给选手一共提供了6000w+的交互数据,其中包括3w+的用户以及900w+的视频。

当然为了不暴露用户的隐私信息,我们对数据进行了严格的脱敏工作,隐去了用户真实id,视频也从原始视频替换成了视频的特征。其中视频特征包括CNN网络中间层的特征,视频中人脸属性特征,视频中文字特征。另外一个很重要的点,在第一部分也已经说明了——测试集与训练集的视频侧数据没有任何的交集。

这个赛题的目标是预测用户对另外一批视频的点击概率,评估使用常见的AUC作为最终结果排名。

关于数据以及评价指标的具体细节,可以参考:https://www.kuaishou.com/activity/uimc/datadesc

所以这个问题的核心在于:

  1. 用户行为习惯挖掘。
  2. 测试集与训练集视频的内在联系。
  3. 视频、人脸、文字特征等非结构化数据处理。

三、答辩干货

下面就是这次比赛Top10的答辩选手解决方案。用一句话总结就是:一个框架、两类思路、三种融合方式。

### 1. 一个框架 首先来解释什么事一个框架。当然这里说的框架并不是什么算法框架,而是在处理这类问题时的通用代码框架。这个框架能够使算法在处理不同数据时如何能够简单快速地完成验证。 框架设计的整体思路就是特征群分离,并且不同数据类型进行分离。特征群分离主要指的是不同的数据来源提取的特征进行分类,例如用户行为特征群、视觉特征群等。每个特征群又可以分为连续特征或者离散特征,例如视觉特征群可以包括连续的降维特征以及离散的视频聚类特征等。 这样做有下面三点好处: 1. 对于新发现的特征可以快速知道适用于那一侧的模型,方便特征扩容。 2. 特征群分开,可以快速定位那些特征对线上效果增益最大。 3. 代码与特征分离,框架一次开发,后期添加特征的成本大大降低。 下图为一个典型的框架设计图。

总体来看,比赛的特征分为,原始特征、Embedding特征,手工特征。这些特征又可以分成连续特征和离散特征。所以一个好的框架,在设计之初就可以充分考虑到这些数据的数据,需要能够在后期对这些特征进行很好的扩容。

大部分选手针对大赛提供的数据把特征分成了若干个特征群,每个特征群对应一大类数据的输入,然后分别针对每个特征群进行特征的提取。在框架设计的时候,会把特征按照不同的类别进行划分。这样做可以尽可能复用代码框架。

2. 两大类思路

选手的思路大致可以分为两大类,一个是以特征工程加模型调参为代表的传统机器学习算法,另一类是以模型构造加注意力机制的深度学习算法。特征工程主要是以第一名为代表的伏地魔团队,模型主要是以第二三名为代表的xxx_sense团队。当然这两种算法在具体的实现过程中存在一定的交叉,但是不同的实现都有所侧重。

#### 特征工程 第一名伏地魔团队是把特征工程做到了极致,下图是他们提取的特征的概览

可以看到他们针对大赛所有提供的数据进行有效的特征提取,他们的算法里面有一点特别有意思就是ID类Embedding特征提取方式,与我们经常使用的One-hot Embedding不同的是,他们使用了DeepWalk的思路。

将左边的二部图,通过随机游走的方式,构建成一个类似于文档向量的矩阵,然后通过Skip-Gram的方式计算用户的Embedding特征。

在建立训练集合测试集联系方面,他们使用的是聚类算法。聚类算法的好坏直接受制于特征的选择,由于赛题中给的特征维度较高,所以他们尝试了2中降维的方式,PCA的降维是最常见的,但是由于PCA是一个线性变换,总体效果要逊色于AutoEncoder的方法。当然在建立起训练集与测试集连接之后,又在聚类的类别上提取了一些视频类别上的一些特征。

#### 模型构造 第二三名的团队的主要思路在于构建高效的深度网络。下图分别是第二、三名的网络结构
第2名的网络结构
第3名的网络结构

可以看到,这两种网络模型几乎大同小异,大致的思路就是沿用Google的Wide&Deep的网络模型,然后在模型上进行一些针对数据的特殊构造。

##### Wide侧 > 这一侧主要输入的是用户的信息,主要是一些强记忆的一些特征,这些特征大多使用的是离散特征。 ##### Deep侧 > 这一侧主要输入的是一些连续特征,主要是内容维度的特征。 除了通用的Wide&Deep的基本网络结构之外,第二名还把手工提取的特征放入到了网络结构中进行拟合,主要体现在中的网络结构,当然这些特征需要由于User的不同,而产生不同的特征表示,所以在输入到`Item expression`时经过了一个User的Attention。这个Attention学习出了用户和视频的交互属性。 另外值得一提的是,第二名的团队在对特征进行降维的时候,并没有使用AutoEncoder这样的方法,虽然这种方法要优于PCA。他们使用了一种VAE(差分编码)的方式,可以将未知图像特征空间进一步缩小。

第三名的团队则将用户以及视频侧的特征进行显式地相互作用,主要体现在dense_4desne_6的特征拼接输入到FM(Factorization Machines)层以及dense_6desne_4的Cosine相似度特征。

总结

总起来说,特征工程是一个需要十分小心的工作,需要对数据及其敏感,而且需要对快手这个App有很深入的了解,知道用户的使用习惯。

设计模型则显得简单粗暴一些,最多的工作则是调整网络参数,这需要对模型不同层,不同网络之间有极高的造诣。

### 3. 模型融合 模型融合,俗称Ensemble。在比赛的过程中,每个团队都不可能只做出一个模型,也就是说不可能对一份数据只有一份预测结果,所以下面最主要的工作就是怎么融合这些模型的结果。 比赛中,选手使用到的模型融合方式大致分为3种: 1. 简单平均。 2. Stacking方式。 3. 反Sigmoid方式,加权平均。 第一种方式相对简单,就不再详细介绍。 第二种方式是使用的最多的方法,该方法的主要思路就是把一个模型预测的结果,再输入到另外的模型中,去拟合最终的目标函数。典型的代表如下。

第三种方式则是对预测结果求反Sigmoid函数(换句话说是logit加权),然后对结果进行加权平均,由于结果相对介绍,加权的全是可以采用暴利穷举的方式,例如权重在[0.01, 1.33]进行分布,分辨率为0.01,也是很快的。

四、一点点思考

下面就是关于这个比赛的一点点思考,可以看到比赛的思路主要围绕在两个方向——特征工程和深度模型,但是最后使用特征工程的团队打败了深度模型的团队。这可能跟我们常识有些相违背——深度模型吊打特征工程。

深度模型可以隐式地提取数据的特征,具有很好的数据抽象能力。而特征工程则是显式提取数据的特征,需要算法人员对数据具有极强嗅觉。

具体这两种方法孰好孰坏留作大家讨论。

五、One more thing

最后还是要插播一条硬广(感觉角色变换的不仅仅是选手到评委,更是技术宅男到皮条客。:)。我们发现有些团队的成员活在实习或已经工作,但是实习或者工作的部门并不是推荐部门或者不具备一些能够放到线上应该用的场景。既然大家对推荐、对多媒体内容推荐有这么高的热情为何要委屈自己。

俗话说得好,良禽择木而栖,快手有足多的数据,足够大的推荐场景,这才是锻炼技术最好的舞台。所以如果你真的对推荐3.0感兴趣,欢迎加入我们。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值