如果图片不完成请参考git page原文
Look-alike简介
Look-alike是在线营销活动中常用的一种技术,目的是根据广告主提供的用户,帮助其进行人群圈选。Look-alike的输入是一个user列表(可以是user id 或者电话号码等id标识),这个user列表可以是广告主上一次活动的人群,可以是广告主的已有用户中高净值人群等等。这个输入人群列表有个专有名次叫做“种子用户(seeds)”。而Look-alike的输出还是一个user列表,与输入user列表存在强关联(相似)的用户群。
在Look-alike中,我们要考虑很多因素
- Performance: 效果是每个模型或者算法都要关注的方面,例如准确率、召回率、AUC等指标都可进行衡量;
- Scalability: 模型可以处理的数据规模,这直接关系到算法的可用性,是否可以应用在大数据集上;
- Real-time: 有些业务是要关注实效性的,如果是n+1的任务模型大可以花费10几个小时输出结果,但如果业务要求实时,那么就要对算法提出更高的要求。
Look-alike 分类介绍
Look-alike技术根据具体实现的算法,可以大致分为如下集中:基于相似度(Similarity-based), 基于相似度扩展(主要以Yahoo提出的方法为例), 基于回归模型(Regression-based), 基于Attention深度模型(Attention-based)
基于相似度(Similarity-based)的Look-alike
Similarity-based是最直接的一种实现Look-alike的方法,其中主要是基于user-2-user之间的某种距离大小来衡量用户之间的相似度。主流的相似度计算方法包括:针对连续值的余弦相似度(Cosine similarity)以及针对离散值的(Jaccard similarity):
两个user之间的相似度计算之后,那么怎么计算某个用户对seeds整体的相似度呢?一个用户u1与seeds整体的相似度可以总很多角度来考虑:
- 最大值Max:利用u1与seeds中相似度最大值作为u1与seeds的相似度 sim(u1,seeds)=Max(sim(uj,seeds))
- 平均值Mean:利用u1与seeds中每个用户的相似度去均值作为整体相似度 sim(u1,seeds)=Mean(sim(uj,seeds))
- 基于概率:该方法要求用户之间的相似度在[0,1]之间。通过不相似度反向得到相似度。
-
总结: Similarity-based非常简单,但是复杂度过高,很难在大规模数据集上进行。如果候选集的用户量是N,种子用户量是M,计算相似度用到的特征维度是k的话,那么这种算法的时间复杂度就是O(kMN)。
基于回归(Regression-based)的Look-alike
这里将Look-alike看作一种二分类任务,采用如LR的二分类模型对其进行建模。
其中种子用户"Seeds"一般作为正样本,至于负样本的选择存在几种方式:
- 所有非种子用户:这是最简单的方法,但并不是最好的方法。因为潜在兴趣用户可能存在其中
- 非种子用户+限制:比如非种子用户中存在曝光、点击、浏览等行为但是没有转化的用户。但是对于新广告主或者新产品,存在冷启动(cold-start)问题
其实这个问题严格意义上属于PU Learning问题,这里不进行扩展。
总结: Regression-based的思路根据用户特征极大化seeds用户的概率,对应模型很多如LR、MF等。但是该方法依旧存在不足,每次营销活动都需要定制化训练模型,每次增加item都要重新训练模型,严重影响实时性。
基于相似度扩展的Look-alike
其中比较代表性的就是Yahoo雅虎提出的方法:A Sub-linear, Massive-scale Look-alike Audience Extension System。 该方法首先利用局部敏喊哈希Locality Sensitive Hashing (LSH)来优化similarity的计算并构造全局图,目的是粗粒度滴筛选候选集,之后根据特征重要性对候选集进一步排序筛选。
局部敏喊哈希Locality Sensitive Hashing (LSH)
LSH可以看作是一种简化计算similarity的方法,大体可以分为两个步骤:
-
- 利用一组哈希函数,将user的特征向量转化成一组signature,转化并不是拍脑袋来的,需要具备两个特征:(1)特征向量相似则转化后的signature也要很大概率相似;(2)如果采用H个hash函数,则会产生H个signature,那么signature矩阵的维度就是H,要远远小于特征向量的维度。
-
- 根据signature形成用户的聚类clusters,对于每个user都至少属于其中一个cluster。这样给定一个user,可以直接根据哈希函数转化,进而将user指派到相应的clusters中。根据signature构造的clusters具有这样的性质:同一个cluster中的用户具有很高的相似度。
因此,LSH不需要对用户之间进行两两比较,从而极大的优化了寻找相似用户的过程。对于特定的相似度方法如cosine和Jaccard等,都存在一种hash函数,经过hash转换后依旧保持相似性。下面以Jaccard相似性和MinHash为例
最小哈希MinHash
在LSH中的hash技术目的就是减少用户特征空间,同时保持原有的