这篇文章接着该文章后面继续介绍,主要介绍的是CTR的问题;
在介绍以前,总结一下之前腾讯面试的一个问题:LR能不能组合出没出现的特征?FM能不能组合出没出现的特征?
解答: LR不能组合出未出现的特征,而FM是可以组合出未出现的特征的,考虑如下数据集:
其中Poly2参数可以看作LR的特征组合,对于测试集来说,训练集是没有NBC和Adidas的组合特征的,因此LR就无法通过特征组合来学习到参数
W
N
B
C
,
A
d
i
d
a
s
W_{NBC,Adidas}
WNBC,Adidas,但是FM可以,首先通过(NBC,Nike)学习到NBC的隐藏向量,然后通过(EPSN,Adidas)学习到Adidas的隐藏向量,然后做dot便可以得到测试集的评分。这样反映了FM模型在稀疏情况下能提高模型的泛化能力,也就是说,只要和NBC有关的都可以用来学习NBC,很大程度上避免了数据稀疏性的影响。下面回到正题:
一、CTR问题的定义
首先介绍一些基础概念:
- Item、User、Ad (主要在广告中应用)
- 曝光、浏览、展现、PV (也就是展现次数)
- 点击量、点击率、CTR
- 转化率、CVR
- GMV、RPM( R P M = 点 的 次 数 ∗ 广 告 主 的 出 价 RPM=点的次数*广告主的出价 RPM=点的次数∗广告主的出价, GMV衡量电商网站成交能力,卖家的GMV可以看作是卖了多少钱, G M V = c t r ∗ c v r ∗ p r i c e GMV=ctr* cvr*price GMV=ctr∗cvr∗price)
对于CTR预估,其数据集特征一般包含User Feature、Item Feature、Label(click,buy)等,具体可参考(天池CTR数据集定义)。一般将CTR定义为一个二分类问题{0,1},且损失函数一般是Logloss和AUC。关于二分类模型可参考(该文章)。
二、关于CTR问题的实践
2.1: 推荐2个网站,是百度做CTR的介绍:机器学习在百度凤巢中的应用和百度凤巢:DNN在凤巢CTR预估中的应用。
- 最开始使用线性模型+大规模特征,靠特征提升模型,但逐年变难;
- 替换为DNN后出现了线下线上不一致的情形,因为线下使用的只有展现出来的点击日志,而未点击的占绝大多数,且这是模型的关键;为什么LR没有出现这个问题,因为LR变化小(删减特征),且参与迭代;
- 数据优化:加入Position Bias,因为点击行为差别很大,但是在深层网络中不可行(因为位置参数权重被稀释了),所以提出如下两个思想:
- 使用LR特征:历史统计可以被看作是单特征LR,如下图所示(下面的特征组可看作不同的特征群:统计特征+时序特征等):
2.2、:DNN的兴起,如NLP领域的Word2Vec,Embed&MLP萌芽,DNN正式在搜索、推荐领域实用化。
这里以搜索+Deep Rank为例,简要介绍微软的三个模型: MS - DSSM、MS - DSSM CNN、MS - Deep Crossing
2.2.1、MS-DSSM(Deep Structured Semantic Models): 其典型结构如图所示
DSSM的任务是map a query to its relevant documents at the semantic level where
keyword-based,这里有几个注意点(可参考该博文):
- 传统的计算方式基于LSA,PLSA,LDA(unsupervised),因为是无监督的,所以中间会引入误差 ,DSSM直接采用统一的有监督训练,不需要做无监督映射;
- 在输入层的时候,比如词语letter,那么会进行WordHash,这样子可以减少复杂度,上述letter可切分为(let,ett,tte,ter),一般选择3个为一组,然后可以大幅度降低输入数据维度;
- 中间层通过DNN :来学习非线性变换;
- 输出层先计算Query和Doc的余弦相似度,然后通过softmax 函数把Query 与正样本 Doc 的语义相似性转化为一个后验概率,然后用反向传播算法更新参数;
- 最终的性能表现可通过NDCG指标衡量;
- DSSM缺点: DSSM 采用词袋模型(BOW),因此丧失了语序信息和上下文信息。另一方面,DSSM 采用弱监督、端到端的模型,预测结果不可控。
2.2.1、MS-DSSM-CNN: 只要解决的问题是DSSM存在的丢失语序信息的问题,如下图
采用word-n-gram的方式考量上下文信息,比如(online auto body),并且通过上面的WordHashing方法,将每一个词降维到30k维,然后拼接起来组成90K维,然后利用CNN处理文本的思路,来进行卷积-池化操作,如下图所示;
具体的CNN做文本卷积我就不介绍了,网上资料很多,最后通过全连接层将矩阵维度变为128维,然后后面做的方式是计算余弦相似度和Softmax处理,同DSSM;
- 优点:CNN-DSSM 通过卷积层提取了滑动窗口下的上下文信息,又通过池化层提取了全局的上下文信息,上下文信息得到较为有效的保留。
- 缺点:对于句子较长且上下文信息间隔较远时,举个例子,I grew up in France… I speak fluent French,显然 France 和 French 是具有上下文依赖关系的,但是由于 CNN-DSSM 滑动窗口(卷积核)大小和N-gram限制,导致无法捕获该上下文信息,这也导致了RNN的应用产生;
2.3 Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features
Deep Crossing(Paper链接)是针对CTR预估问题而产生的,其初衷是因为特征组合是非常有必要的,但是人工找到好的组合特征非常耗时耗力,所以这个模型是用来自动组合特征(DNN可自动的学习出特征交互作用),并且通过ResNet构建更深的网络,其典型结构如下: