腾讯视频小视频特征优化总结

2020-09-21 10:40:10 浏览数 (1)

|导语 特征之于机器学习至关重要,大部分机器学习任务中特征复杂度决定了算法效果的上限。本文主要分享特征工程的通用方法论和腾讯视频小视频场景的特征实践工作。主要内容包括小视频排序特征、特征工程的方法论、特征在机制的应用。

一、小视频排序特征

腾讯视频小视频场景所用到的特征主要包括以下几种:视频和CP特征、用户特征、因果特征、session特征。

1.1.视频特征

视频特征主要包括视频ID、标签、统计特征、视频作者以及视频作者ID、视频作者标签等等。

ID类特征是点击率预估模型中非常重要的特征,主要负责为模型提供记忆能力。但是,同时ID类特征并不利于提高模型的泛化性,不利于新视频预估,因此我们可以在训练模型的时候,随机复制一些样本,将这些样本的ID设置为默认值进行训练,线上预估时,使用默认值填充新视频ID特征。

 视频的统计特征也是非常重要的特征,比如视频的点击率CTR(Click-Through Rate),既可以是模型的预测值,也可以当做特征使用,视频的点击量(Click)除以曝光量(Impression),以r表示点击率 r=C/I。但实际中会碰到两个问题:

    1.新视频的点击率的计算:对于新视频,其曝光量是0,点击量也为0,此时视频的CTR应该设为0还是赋一个初始值?

    2.不同视频点击率之间的比较:有两个视频A/ B, 其点击率分别为ra=1/10, rb=100/1000, ra=rb,但是视频A的曝光只有10次,视频B的曝光有1000,这样比较是否合理?

 第一个问题,初始值设为0是可以的,但是不合理,表示这个视频完全没有点击,不太符合常理,通常是赋予一个大于0的初值。第二个问题,不合理,通常会认为曝光次数少的视频权重应该低一些。

 可以使用平滑技术来解决以上两个问题,最简单的方式是在计算CTR的公式中分子分母同时加上一个数,r=(C a)/(I b), 公式中的a,b如何确定?这两个数可以人为设定,但是如果设定的不合理会出现数据被放大的情况,有一种方式是通过历史数据来计算有统计意义的a和b,即贝叶斯平滑,贝叶斯平滑的思想是给CTR预设一个经验初始值,再通过当前的点击量和曝光量来修正这个初始值。如果某商品的点击量和曝光量都是0,那么该商品的CTR就是这个经验初始值;如果商品A和商品B的曝光量差别很大,那么可以通过这个经验初始值来修正,使得曝光量大的商品的权重增大。贝叶斯平滑就是确定这个经验值的过程。贝叶斯平滑是基于贝叶斯统计推断的,因此经验值计算的过程依赖于数据的分布情况,具体计算方式这里不再展开。

 由于视频数据是分为:视频作者-->视频两个层级,因此做平滑的时候,可以依照层次关系进行平滑。核心思想就是认为同一个视频作者的点击率服从一个beta分布,同一个视频的点击率服从一个beta分布,因此对不同的视频作者求出参数a/b,当遇到新出现的视频时,就用其所属的视频作者来修正点击率,这样的效果要比单纯从单一维度来平滑效果要好一些。也对视频作者更友好一些,历史表现好的,未来表现大概率是好的。

1.2.用户特征

用户侧特征主要包括用户ID、年龄、性别、applist特征、用户画像等等。其中对新用户ID的处理类似于新视频ID的处理方式。这里主要介绍下用户画像特征,是一种基于贝叶斯的用户画像计算,

用户的真实兴趣定义:

1.3.因果特征

小视频推荐系统结构简单来说是召回->排序->机制的结构;召回侧的信息对排序也是非常的重要,可以加强召回和排序的因果推演关系。这部分特征主要包括trigger及其热度,点击状态,点击时间等描述召回原因的特征,

1.4.session特征

session特征一般表示用户在最近一段时间窗口消费的视频列表,比如用户在最近2天内点击的100个视频列表,视频的side information,统计数据等。简单一点的做法是对每一个特征先做embedding,然后再做sum pooling。另外也可以对序列做个Transformer ,可以更好的捕捉用户历史行为序列中的各个视频的关联特征,与此同时,也可以加入待预测的视频来达到抽取行为序列中的视频与待推荐视频之间的相关性。

1.5.IOS/Android 特征

 分析发现双端分发效果和视频长度、离线打分序列差异较大,分发效果ios远高于安卓端,离线测试结果如下图,同样的用户,同样的几个video,仅有os特征不一样,得出来的pctr,pcvr都不同,os特征为Android时预估都会偏高,同时序关系也不同,故在线侧实验将os特征统一填充为ios,线上ab实验结果是:人均时长涨3个点,人均vv持平。

IOS

Android

i30167lmzr4

rank score: 0.019320 pctr:0.231903_pcvr:0.163608

rank score: 0.03046pctr:0.272095_pcvr:0.199231

s30129d0dqu

rank score: 0.011689pctr:0.108999_pcvr:0.196498

rank score: 0.017756pctr:0.123872_pcvr:0.238439

n3004dtnc08

rank score: 0.011573 pctr:0.119295_pcvr:0.1838

rank score: 0.017841pctr:0.141344_pcvr:0.219053

r3026rolbi2

rank score: 0.00441 pctr:0.0716044_pcvr:0.133062

rank score: 0.011809 pctr:0.135414_pcvr:0.167599

6.部分特征效果展示

 离线auc对比,横坐标是不同时段,纵坐标是auc,蓝色线是基线,橘黄色线是实验

线上人均时长对比,7701是基线桶,7712是实验桶,7707是扩量桶,可以看到扩量后指标的提升还是比较明显的。

二、特征方法论

2.1 数据质量(清洗,覆盖度,分布占比)

考虑到生产数据可能包含以下噪声,所以要保证数据的质量。

2.1.1数据清洗:数据清洗的目标就是去掉脏数据,需要剔除异常值,补足缺失值等。

2.1.2覆盖度:覆盖度是衡量特征是否可用的一个重要指标,如果覆盖度过低,即存在大量的默认值的话,基本可以判定特征不会起到正向作用

2.1.3特征分布:特征分布是看每个特征取值的个数,取值的占比,以及取值对应的点击率等指标。如果特征某一个值对应的占比过大,或者取值对应的点击率误差别,基本可以判定特征不会起到正向作用。

2.2 特征处理

不同类型的数据需要不同的处理方式,

2.2.1数值型特征:

a)归一化:为了消除数值特征之间量纲的影响,需要对特征进行归一化处理,使得不同特征之间具有可比性。常用的归一化方法有:

 线性函数归一化(Min-Max scaling),对原始数据进行线性变换,使结果映射到[0,1]区间内,实现对原始特征的缩放,归一化公式: x = {x - min(x)} / {max(x) - mini(x)} 。

 零均值归一化(Z-Score Normalization),将原始特征映射到均值为0,方差为1的分布上。一般需要原始特征近似服从高斯分布,假设原始特征的均值为u,标准差为t,则归一化公式:x = (x - u)/t 。

 b)离散化:比如用户偏好特征,用户最近一段时间对不同类型的视频曝光的次数和互动的次数应该能够比较好的反应用户最近一段时间的喜好。但是曝光和互动数据都是连续的特征,取值空间较大,如果不做处理的话,这些特征起到的作用可能不会太大。离散化可以将这些连续特征拆分成几个离散特征;同时我们认为特征在不同的区间内的重要程度是不一样的,连续特征默认特征的重要程度和特征之间是线性的关系,但是往往非线性的。所以希望连续特征在不同的区间有不同的权重,实现的方法就是对特征进行区间划分,每个区间为一个新的特征。另外离散化特征也具有很好的鲁棒性,稳定性,方便快速迭代和扩展。

根据是否使用标签可以将离散化分为有监督方法和无监督方法。有监督的离散化方法又分为建立在错误率基础上的、建立在熵值基础上的或者建立在统计信息基础上的。比较常见的有等频、等宽、聚类离散化,这类方案实现起来比较简单,所遵循的一般原则是(1)既要保证每个箱体中的点击率有差别,也要保证箱体之间的pv分布要近似均匀。然而这类方案的问题在于对于分布不均匀的数据并不适用,等频和等宽都不能很好的反应“尖头”的数据,除非人工手动干涉,聚类本身对于这类问题的表现也并不稳定,经常可能出现的情况就是“尖头”数据有一部分分到平缓分布的数据里去,导致最终的分箱结果没有代表性。

c)特征变换:对于连续性特征还可以进行特征变换以增加特征的表达能力,比如对特征取maht.round,math.log,二次平方,开平方根等。

2.2.2 类别型特征

a)ont-hot/multi-hot编码,one-hot编码可以说是用的最频繁的一种处理特征的方法了,通常用于处理类别间不具有大小关系的特征。使用one-hot编码需要注意以下问题:(1)使用稀疏向量来节省空间,one-hot编码下,特征向量只有某一维取值为1,其他位置取值均为0,因此可以利用特征向量的稀疏表示有效的节省空间,并且目前大部分算法均接受稀疏向量形式的输入。(2)配合特征选择来降低维度。对于类别取值较多的情况下可以采用multi-hot编码,特征向量某几维取值为1,其他位置取值为0。

b)embedding表达,将每个特征初始化为n维的向量,并进行concate,然后输入MLP,同时进行端到端的学习。

2.2.3时间类特征

时间类特征既可以看做数值型特征,又可以看做类别型特征。

a)可以当做数值型的特征包括:视频时长,观看时长,间隔时间

b)可以当做类别型的特征包括:一年中的哪个月份,一周中的周几,一天中的几点等等

2.2.4 交叉特征:

在LR时代,为了帮助模型学习更多的非线性性和特征之间的关系,尝试了比较多的特征交叉操作,主要包括user侧特征和item侧特征交叉以及context侧特征的交叉。对于深度学习模型,由于其模型本省就能学到交叉信息,所以对特征交叉的需求不是太大。但是显示的做特征交叉可能会辅助模型捕获特征间关系,交叉的方式可以选择笛卡尔积或哈达玛积等。在小视频场景下特征交叉没有带来正向的收益,同时也没有负向的收益。

三、特征在机制的应用

常规的rank预估模型仅仅考虑pair,并不会考虑items间作为一个list进行推荐互相的影响。Rerank作为距离用户最近的一层,将常规rank模型的输出作为输入,强化items之间的关系以及items与用户的关系进行one-more-time排序,是一种考虑到推荐视频之间关系和影响的排序模式。对于不同用户来说,list中items的分布应该具有比较大的差异,应该要保证推荐的多样性和非重复性。

3.1多样性控制

推荐系统中,多样性控制是非常重要的,很大程度的影响用户体验。如何对候选视频进行合理的多样性打散,以达到用户体验多样性的目的,并维护长期收益,是非常重要的问题。目前是使用submodule方法,使用的到的特征包括类别1,类别2,标签,cp等。

3.2标题/封面排重

用户一般不喜欢看重复的视频,如何对候选视频进行重复过滤,也是个非常重要的问题。我们目前采用的过滤手段是标题重复过滤,封面重复过滤。所用到的特征包括标题embedding,封面embedding。线上通过计算用户历史消费vid和候选vid的cos进行判断是否相似。

四、总结

特征工程其实没有特别的理论,属于比较基础但重要的工作,需要对业务有深入的理解,对于不同的问题需要重新开始,过于依赖人的经验与判断。因此,自动特征工程尤为重要。自动特征工程是要日志中自动创建候选特征,而且从中选择最佳特征进行模型训练的一种方式,这部分后面再进行介绍。

0 人点赞