你的标签错了,而且错了很多!
在推荐搜索的建模中,我们经常会使用D+1天的数据作为label,从1~D天的数据中的进行特征抽取等工作,和我们时间序列问题建模类似,但和很多其他的时间序列问题建模不一样的地方在于,我们的label不一定可靠,比如在传统的时间序列回归中,D+1天的销量是多少就是多少,我们没有太多的犹豫,因为不大会有其他的情况。但是在电商的问题中,就存在下面这种情况:
D+1天未购买可能并不一定是真正意义上的未购买,而可能是加入购物车或者意愿清单了, 只是没有在当天下单, 而是过了一天在D+2天的时候下了单, 而这样的标签如果我们直接默认其为负样本就会有较大的问题,因为它并不是真正意义上的负样本,只是反馈延迟了。
这在搜索推荐系统中,我们称之为延迟反馈的问题。
那么这个问题严重吗?如果只有1%不到的数据在第二天甚至之后出现了延迟,那么或许并不是一个问题,但实际呢?在Criteo公司早期,
那么如何解决该问题呢?
对时间延迟建模
这个问题较早在2014文章Modelling Delayed Feedback in Display Advertising中被提出,该文十分经典,同时提出的问题十分具有实践价值,但是已经过去了6年, 本文我们就研讨最新的IJCAI20关于CVR预估标签延迟的paper.《An Attention-based Model for CVR with Delayed Feedback via Post-Click Calibration》。
最新延迟反馈论文解读
在早期对于标签反馈延迟的建模都是建立在LR等传统模型上,会存在模型表示能力欠缺以及需要大量人工专家特征的问题,本文将传统的模型替换为现在火热的深度学习模型,从而大大提高模型的表示能力。但是在深度模型用于推荐问题时,又会出现大量类别特征EMbedding的稀疏性问题,这在CTR建模的时候是很容易得到解决的,因为CTR数据集是非常大的,模型往往可以学习到不错的Embedding信息,但是CVR的数据集是相对较小的,所以如何解决数据稀疏性的问题是一个非常大的挑战;此外,早期的文章都假设
,也就是说,用户在点击商品之后到现在的时间是不影响我们商品的最终转化以及转化时间,这其实是不对的,很明显地,用户在点击完某个商品之后对于其他商品的点击会影响最终是否是否会购买该商品,以及最终购买该商品的时间(本文做了一定泛化,依然假设点击item之后到目前的时间不会影响最终商品是否会转化,但是会影响商品最终转化的时间)。
所以本篇文章就是Focus在解决数据稀疏性以及标签延迟反馈的问题上提出了一种新的解决方案。
下面我们看看本文是如何来解决这两大挑战的。数据稀疏性问题&时间延迟建模
为了处理因为数据样本量稀少而带来的大量ID特征学习不充分的问题,本文使用预训练好的Telepath从Item的图像中学习得到结果替换稀疏的ID特征,以此来缓解该问题。从文章最后的实验中我们也发现,数据稀疏性带来的影响是巨大的,具体地可以参见实验部分。
在稀疏ID的Embedding处理完成之后,接下来我们看一下我们的模型框架,
本文的模型框架主要分为左右两个模块,左侧的转化模型以及右侧的时间延迟模型。
1.左侧转化模型:
转化模型的目的是为了预估
,注意此处的
:表示最终是否会被转化;
:表示Item的特征;
:用户的历史点击信息;
我们可以用自己设计的网络结构来构建自己的转化模型. 本文的转化模型的构建主要有三个模块,我们由后往前看,
其中
也就是说,我们最终输出由,
以及二者的组合构成 。
那么
和
又分别是什么呢?
: 商品的embedding以及它的one-hot特征之后加入一层全连接层然后拼接加上激活函数的结果,可以认为是更深一层的商品特征;
, ,是用户历史点击商品信息的一个加权的和, 详细的构建过程是:利用用户的历史点击序列先过一层GRU,然后对中间hidden层进行一层self-attention,然后再和候选商品一起进行Inner-attention得到.(和框架图中左侧部分是类似的,大家可以结合论文自己过一遍)
2.时间延迟模型
2.1 关系梳理
和《Modeling Delayed Feedback in Display Advertising》论文中类似,我们还需要得到
的表示,那么本文是如何得到的呢?和Survival Analysis中类似,我们用:
:表示事件在时间时刻发生;
:表示事件会在时刻之后发生的概率;
:hazard function,表示存活时间后瞬时死亡的概率,其中
, 此外我们还可以得到:
我们将转换的延迟时间全部转化为天的粒度, 在Survival Analysis中我们知道, 只要得到其中任意一个的表示,就可以得到其他的表示,也就是说我们对
或者
进行假设之后,就可以推导得到
,
以及三者的表示.
本篇文章我们对进行假设
, 此处我们用
表示hazard函数, 基于该表示以及
,
,三者之间的关系,我们便可以得到.
最终我们得到:
2.2 网络表示
那么接下来我们只需要看一下该概率是如何通过网络层进行表示的,具体可以参考文章给出的右侧的网络大致框架进行解读。和之前的一样,我们由后往前看,
其中 为激活函数,而
我们发现只需要建模得到
即可, 在这边,
是候选item的embedding经过处理得到,和转化模块的是一样的,
为从点击历史中抽取的隐藏状态的embedding,
为第二层GRU的输出的embedding。
1.整体性能比较:
我们看一下本文的实验结果,
从上面的实验中,我们发现:
2.Time Delay分析:
我们从Figure2中可以看到,我们的在训练集和测试集上的时间延迟分布是类似的,此处我们用Jensen-Shannon divergence来刻画不同模型对于time delay的预测,而从结果上看,本文的算法对于时间延迟的预测也是最好的。
后续我们会筛选出在我们实践中带来提升或者启发的工作进行细致的解读与探讨,欢迎关注我们的公众号,也欢迎多交流,我是一品炼丹师: 一元。之前星球没有设置免费,下一期我们重新设置为不收费,大家有问题可以在星球随意交流。