xTR特征工程
特征提取
xTR采用上下文统计类特征与文本特征作为基础特征,上下文信息有视频,网页,位置信息,视频运营商等。
项目初始阶段我们用One-hot表示上下文特征。如有n个视频,视频的特征空间就是n维,其中某一维代表纸牌屋第一季第一集。这种静态特征组织方式的缺点是特征空间巨大,不易训练。
因此我们改进了特征组织方式,选择用上文+事件方式组织特征。如当前视频仍然是纸牌屋第一季第一集,在之前一段时间内在该视频上的广告观看率是0.53,直接利用0.53来作为视频特征之一。
这背后的算法原理是,利用不同上下文的弱模型,拟合观看率这样一个终极目标。相对于静态特征,动态特征的特征空间只与事件个数成正比,大大缩小了存储空间,更容易训练。
除了统计类特征,xTR从视频描述信息中训练出视频分类特征,将视频的分类特征补充到特征空间中。
1.首先xTR离线服务会抽取出视频标题与媒体上传的视频描述;
2.利用Dmoz开源标签体系,对一部分数据做人工标注;
3.接下来用一些开源自然语言处理工具做分词,常用词过滤等NLP处理,经过自然种语言处理后,每个视频对应一段由高质量词表示的文本;
4.将每段文本转换为One-hot表示,即映射到n维向量空间中,n为词表大小,相应位置1,构成训练样本;
5.选择合适的分类模型做模型训练。
因为视频分类数量有限,所以我们直接将视频分类结果转换为One-hot表示,补充到特征空间中,未来我们也有计划做一些Embedding的工作来优化。
加入视频分类特征后,在不同事件中xTR预测效果有不同程度提升。
特征组织方式
上下文信息丰富是视频广告的一个天然特性,会导致特征量大,如果将全部特征存储在Key-value数据库中,不仅会浪费大量存储空间,同时也会带来线上高并发访问问题。在实际业务中,xTR在线服务会接受每秒百万级规模并发访问,每一次访问需要几千个特征,即使采用批量读方案,Key-value数据库也很难支撑。
我们的解法是:只存储被频繁访问到的特征,将大量不经常访问的特征从Key-value数据库中移除,对这些特征建模,命名这种模型为特征回归模型。
关于特征回归模型,学习目标是每个特征的特征值。特征值是连续的,所以模型是回归模型,定义特征的特征为“子特征”,由上下文信息的One-hot表示组成子特征。
但One-hot表示的特征空间巨大,样本非常稀疏,即使优化到特征回归模型这一步,我们还是没有绕开这个问题。
我们的解法是:对从多个上下文组合上抽取出的特征,利用Factorization Machine建立回归模型,学习两个子特征之间关系。
假设子特征空间长度为n, FM模型学习出的两个子特征关系保存在两个V向量乘积之中,向量长度是实验前预先设置好的超参数。
有了特征回归模型之后,在Key-value数据库中只需要存储少量特征即可,大量长尾特征通过模型拟合。
通过对比原始特征与特征回归模型效果,在前贴片广告、中贴片广告、后贴片广告上,二分类模型的AUC分别有一定的提升(其中前贴片广告指在视频播放前出现的广告,中贴片广告指在视频播放过程中出现的广告,后贴片广告指在视频播放结束后出现的广告)。
特征筛选
上下文统计特征加上视频分类特征,xTR的基础特征空间只有不到100维。我们利用GBDT筛选特征,通过特征的另一种表达丰富特征空间。这种方法与深度学习有异曲同工之妙,不同之处是深度学习利用神经网络学习出高维表示,GBDT利用决策树做特征筛选。
具体做法是:将GBDT中每棵树的叶子节点0/1结果作为新特征,补充到原始特征空间中。
加入GBDT Binary表示之后的特征在不同场景下AUC有不同程度的提升。
为了泛化模型能力,xTR从不同特征之间相似性角度挖掘新特征。业界主要采用交叉特征与Factorization Machine这两种方法,交叉特征学习出任意两个特征相似值,FM方法学习出任意两个特征的相似向量,FM方法更强调解决特征稀疏问题。在我们的业务需求中,样本稀疏没有那么严重,不需要用向量拟合特征之间关系,因此交叉特征更加适用。
特征预处理
在特征采集过程中xTR会根据特征出现次数过滤,即去掉出现次数较少的特征。背后的原理是出现次数越少则特征值置信度越小,所以在样本中会出现有些特征是缺失的,xTR主要用中位数/平均数两种方法取代缺失特征。
不同缺失特征处理方法,效果如图。
不同特征的取值范围不同,取值范围大的特征无形中对模型作用更大,所以用特征平滑来将所有特征限制在相似取值范围内。
在xTR中,主要用Min-max与Gaussian平滑。Min-max平滑可以使新特征值在(0,1)区间内,Gaussian平滑可以使新特征符合高斯分布。
对于某些连续特征,不能直接喂给分类模型,需要做离散化。从效率的角度来说,原因是稀疏向量内积乘法运算更快;从模型的角度来说,原因是离散化之后可以增强广义线性模型的表达能力,学习出一个特征不同取值范围的不同权重。
如当前有两个样本,其中的某一个特征值分别为0.12与0.67,特征取值范围是0到1,将0.12与0.67分别映射到两个10维向量中,用这个10维向量作为新特征取代原始特征,加以更多样本训练出不同权重。
特征更新策略
在实验中,另一个非常有意思的现象是,我们发现模型表现与特征采集周期不是严格成正比,即特征采集周期越长,模型表现不一定更好,这也与业界中的“模型做的大不如模型做的快”这一说法不谋而合。所以我们设计了一个衰减策略,即用一个衰减因子Alpha衰减距离当前时间长的数据,这样计算出的特征更加有效。