如果图片不完成请参考git page原文
Look-alike是在线营销活动中常用的一种技术,目的是根据广告主提供的用户,帮助其进行人群圈选。Look-alike的输入是一个user列表(可以是user id 或者电话号码等id标识),这个user列表可以是广告主上一次活动的人群,可以是广告主的已有用户中高净值人群等等。这个输入人群列表有个专有名次叫做“种子用户(seeds)”。而Look-alike的输出还是一个user列表,与输入user列表存在强关联(相似)的用户群。
在Look-alike中,我们要考虑很多因素
Look-alike技术根据具体实现的算法,可以大致分为如下集中:基于相似度(Similarity-based), 基于相似度扩展(主要以Yahoo提出的方法为例), 基于回归模型(Regression-based), 基于Attention深度模型(Attention-based)
Similarity-based是最直接的一种实现Look-alike的方法,其中主要是基于user-2-user之间的某种距离大小来衡量用户之间的相似度。主流的相似度计算方法包括:针对连续值的余弦相似度(Cosine similarity)以及针对离散值的(Jaccard similarity):
两个user之间的相似度计算之后,那么怎么计算某个用户对seeds整体的相似度呢?一个用户u1与seeds整体的相似度可以总很多角度来考虑:
总结: Similarity-based非常简单,但是复杂度过高,很难在大规模数据集上进行。如果候选集的用户量是N,种子用户量是M,计算相似度用到的特征维度是k的话,那么这种算法的时间复杂度就是O(kMN)。
这里将Look-alike看作一种二分类任务,采用如LR的二分类模型对其进行建模。
其中种子用户"Seeds"一般作为正样本,至于负样本的选择存在几种方式:
其实这个问题严格意义上属于PU Learning问题,这里不进行扩展。
总结: Regression-based的思路根据用户特征极大化seeds用户的概率,对应模型很多如LR、MF等。但是该方法依旧存在不足,每次营销活动都需要定制化训练模型,每次增加item都要重新训练模型,严重影响实时性。
其中比较代表性的就是Yahoo雅虎提出的方法:A Sub-linear, Massive-scale Look-alike Audience Extension System。 该方法首先利用局部敏喊哈希Locality Sensitive Hashing (LSH)来优化similarity的计算并构造全局图,目的是粗粒度滴筛选候选集,之后根据特征重要性对候选集进一步排序筛选。
LSH可以看作是一种简化计算similarity的方法,大体可以分为两个步骤:
因此,LSH不需要对用户之间进行两两比较,从而极大的优化了寻找相似用户的过程。对于特定的相似度方法如cosine和Jaccard等,都存在一种hash函数,经过hash转换后依旧保持相似性。下面以Jaccard相似性和MinHash为例
在LSH中的hash技术目的就是减少用户特征空间,同时保持原有的相似度关系。对于Jaccard相似度来说,对应的hash就是MinHash:
其中,fi是用户i的K-dimensional的特征向量,x是fi中特征的index。哈希函数h(x), [h : (1, . . . , K) → R]将特征的index映射到一个随机数。而函数hmin(fi)定义为具有最小hash值的特征index,这里的hmin(fi)就叫做哈希signature。为什么这样定义MinHash呢,因为只有这样定义才满足:两个用户的MinHash值相同的概率等于他们之间的Jaccard相似度。证明过程在后面,这里先给出结论:
换种表述方式:如果两个用户的Jaccard相似度为r,我们利用H个MinHash函数对两个用户分别进行转换,这样每个用户会形成H个signature,那么两个用户相同的signature数量应该为H*r个。
这部分证明参考3.3.3 of Mining of Massive Datasets
对于Jaccard相似度,只需要考虑binary特征即可,因此假设四个集合分别为:S1, S2, S3, S4,对应的元素是a,b,c,d,e,如下图:
首先修改一下MinHash的定义(其实是一样的,后面会说明):按照行进行随机扰动(permutaion)之后,从上到下 每一列(每一个集合)的第一个等于1的元素所在的当前行号定义为MinHash的值。如下图所示:
按照定义,上图中的四个集合的MinHash分别为:MinHash(S1)=2, MinHash(S2)=4, MinHash(S3)=0, MinHash(S4)=2
接下来证明:“两个集合,基于随机扰动的MinHash值相等的概率=他们之间的Jaccard相似度”。只考虑两个集合S1和S2,根据每一行两个元素是否等于1,可以分为三种情况:
对于稀疏矩阵来说,大部分情况都属于Z,但其实Jaccard的计算只涉及到X和Y,与Z无关,因此可以忽略Z。杰卡德相似度很容易计算Jaccard(S1,S2)=x/(x+y)。
至于MinHash相等的概率,我们这样考虑:
接下来我们考虑上面两种情况的概率:
首先遇到Type X 则 MinHash相等,因此MinHash相等的概率=首先遇到Type X的概率x/(x+y),这与Jaccard相似度正好相等。从而证明了上面的“两个集合,基于随机扰动的MinHash值相等的概率=他们之间的Jaccard相似度”。
但是还存在一个疑问:两种MinHash定义之间怎么统一,答案就是利用Hash映射函数H(x)来模拟随机扰动。因为大规模数据的扰动是非常耗时的,因此可以利用利用哈希函数H(x)来进行模拟,H(x)是一个映射函数,将[0,k]映射到[0,k]之间,当然会存在碰撞问题,但只要k取得足够大,碰撞问题就可以忽略不及。
举个例子,如果我们定义两个Hash映射函数h1(x)=x+1 mod 5, h2(x)=3*x+1 mod 5,那么结果如下图:
其中最后两列Hash映射之后值就代表随机扰动之后对应的新行号h,对于每一列集合S,只要(在等于1的行中)找到最小的行号h,就得到了MinHash,因此Signature签名矩阵为:
利用H个MinHash函数产生的Signature就是H-dimensional的,因此所有用户的Signatures就形成了一个N*H的矩阵,叫做signature矩阵。其中N表示用户数量,如果用户特征向量维度是K的话那么H< 利用H-dimensional的signature矩阵,LSH可以将用户聚类成同buckets,从而快速找到相似用户。存在很多中聚类方法,其中最流行的是“AND-OR”规则: 经过基于MinHash的LSH之后,每个用户ui都会生成一个bucket id列表。对于给定的一个Seeds人群,其中每个user都存在相应的哈希signature,那么每个用户都会对应一个bucket id列表,将这些buckets中的人群union在一起,就形成了Seeds的候选集合。 经过上一步的LSH,可以得到Seeds的候选集,这部分人群数量明显少于全量用户,而且具有一定的内在相似度。接下来要做的就是对这部分用户进行排序,之后根据要求选择top N用户作为输出。至于如何排序,其实存在很多种方法,Yahoo综合考虑效果、实效性等因素,选择根据特征权重来进行排序。 对于特征选择(feature selection),例如逻辑回归LR、决策树等算法都可以完成,但是基于效率考量Yahoo采用了一种非迭代(non-iterative)的方法:信息值information value (IV) 首先定义:S表示Seeds用户,U表示候选集合。pj表示Seeds中存在feature j的用户比例 候选集中存在feature j的用户比例:qi 通过单变量分析(univariate analysis)来计算特征重要性的方法有:互信息(mutual information)、信息增益(information gain)、和信息值(information value, IV)等。这些方法都假设特征之间是相互独立的,而且Yahoo实验发现这些方法的效果非常相似,因此采用IV进行介绍。 对于binary的特征j来说,基于IV的重要性可以通过如下公式度量: 其中pj > 0.5说明:只有"positive"的特征才会被考虑,这些特征在Seeds中的重要程度要高于在候选集U中的重要程度。根据IV值排序,值越大的feature则具有更强的预测能力。同时可以将特征排序结果展示给广告主,提供模型的解释能力(transparency)。 有了上述IV矩阵A之后,Yahoo采用如下公式计算每个候选用户对于改次营销活动c的价值分: 其中fi代表该用户的特征向量,这个值并不是[0,1]的,因此可以通过sigmoid函数进行转换之后作为结果。 小结:LSH提供了一种缩小候选集的方法,同时保持了内在的相似性。为每个任务定制化模型是很耗时的,虽然Yahoo采用了非迭代的方法IV来计算用户得分,极大的提高了效率,但是每次任务都要定制化,依旧无法实现real-time的要求。 这是腾讯最近提出的一个基于deep leanrning的Look-alike系统,采用了当前比较热的attention,能够满足Real-time的要求。 首先看一下整体模型结构,存在两个输入: 之后根据模型参数和模型结构计算两种Attention,进而计算look-alike得分,最后根据得分排序,输出扩展人群。 模型整体大致可以分为三个主要部分:离线训练、在线数据处理、在线实时预测 这部分是一个user-item的deep learning模型,文章采用的整体策略是类似于双塔的结构,左侧user tower的目的是得到user embedding,右侧item tower的目的是得到item embedding,最后将两个embedding向量进行点乘(dot),最后一层softmax进行分类。这里的item embedding比较简单,随机初始化后随着模型一起训练就可以,重点部分在于左侧的user部分。 存在很多模型结构可以得到user embedding,这篇文章借鉴Youtube DNN模型,因此有必要对Youtube DNN模型进行简要介绍: 这里的第3步骤concatenate操作对应下图中的"Merge Layer",但是本文对Youtube DNN做了调整,在"Merge Layer"这一层并没有采用concatenate的方式,而是采用的Self-Attention机制。 原因:作者发现,如果简单将多个fields进行concatenate的话,那么相当于强制模型利用同一个分布去学习不同的fields(forces all users’ interest to be learned into the same distribution)。这样会导致:只有少数与用户interest关联较强的fields对用户产生影响,这部分特征过拟合,而其他特征又会欠拟合。也会导致权重矩阵非常稀疏,因为多数fields影响较小。因此,本文采用Attention机制解决这个问题,因为Attention可以学习到关于用户的个性化的fields权重,而不是同一个分布。 Attention的机制和权重计算方式很丰富,这里只介绍本文采用的方法,如果想了解详细的Attention可以参考Attention总结。 假设存在n个fields,对应的向量长度都是m,那么每个向量h ∈ Rm,之后在第2个维度上将这些向量concatenate到一起(罗列在一起),就形成了矩阵H ∈ Rn×m。权重向量a的计算采用如下公式: 其中W1 ∈ Rk×n , W2 ∈ Rk都是权重矩阵,k表示attention单元的size。u ∈ Rk*m,最后得到a ∈ Rn表示n个fields的权重。之后将权重a与原始fields矩阵merge到一起,就得到了最终结果 M ∈ Rm: 将M作为MLP layers的输入,最后即可得到user embedding。如上文所属,最后将user embedding和item embedding进行dot之后softmax分类,模型就搭建完成了。 采样 类似与word2vec的操作,本文同样采用负采样negative sampling代替传统的softmax。由于随机抽样会不符合实际情况,因此本文采用了一种类似与谷歌NEC Loss的方法:首先根据item的频率进行排序,之后根据如下公式计算概率: 其中xi表示第i个item,k表示第i个item的排序rank,D表示所有items中最大的rank,最后结果p(xi)表示第i个item被抽中作为负样本的概率。为了避免部分活跃用户支配Loss的情况,本文对样本进行如下限制: 概率 采用softmax函数来计算用户u对item的概率,如下公式,u代表用户向量,xi代表item向量,结果P(c = i|U,Xi)表示用户U对item Xi的概率: 损失Loss 本文采用的是cross entropy loss,yi ∈ {0, 1} 首先看结构图,Look-alike模块的输入就是上一步得到User embedding。Look-alike模块采用的典型的双塔模型,左侧是Seeds tower,右侧是tartget tower。 右侧的target tower其实就是user embedding,比较简单不需要做任何处理。 由于Seeds的用户量相对较大,会严重影响后面attention层的效率,因此这里采用k-means聚类的方法,将Seeds聚成k个clusters,将k个clusters作为 seeds tower的输入。 其实文章中的global attention就是selt-attention,而local-attention就是普通的attention,由于attention的文章比较多,这里不做详细介绍,有兴趣可以参考attention介绍 只要Look-alike模块采用的Loss就是比较常用的sigmoid cross entropy: 其中D表示训练集,y{0, 1}表示label, p(x)表示双塔计算cosine并且经过sigmoid的预测概率得分。
定制化排序模型
基于Attention的Look-alike:Real-time Attention Based Look-alike Model for Recommender System
1. 背景
1.1 业务背景
1.2 模型背景
2. 模型
2.1 离线训练 之 User Representation Learning
2.1.1 User embedding
2.1.2 negative sampling
2.1 离线训练 之 Look-alike Learning
2.1.1 target tower
2.1.2 seeds tower
2.1.2.1 k-means cluster
2.1.2.1 global attention和local attention
2.1.2.3 Loss
参考