前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >五个工业风满满的 Look-alike 算法

五个工业风满满的 Look-alike 算法

作者头像
阿泽 Crz
发布2021-07-29 15:52:32
1.9K0
发布2021-07-29 15:52:32
举报
文章被收录于专栏:阿泽的学习笔记

1. Introduction

广告主通常会基于用户标签来圈定广告的目标人群,比如广告主想投奥迪的广告可能会选择北方 25~44 岁男性;投奔驰可能会选择江浙地区 25 ~55 岁男性。

但受限于广告主的先验知识,其选出来的目标人群通常非常小,不能满足投放要求。比如说广告主想投放 100w 人,但通过用户标签只选出来 10w 用户,那么剩下来 90w 用户该怎么选择?

如果把广告主圈出来的那 10w 用户称为种子用户(「seed users」),那么我们可以把需要额外提供的一批相似的用户称之为 「look-alike users」。我们把这种基于种子用户进行相似人群扩展的过程称之为 「look-alike modeling」。所以,look-alike 并不是某种特定的算法,而是一类建模方法的统称。

2. Look-alike

Look-alike 有多种类型,包括基于相似计算的 「Similarity-based」,基于回归模型预测的 「Regression-based」,基于标签相似性的 「Approximation-based」,基于用户相似网络的 「Graph-based」,基于 attention 优化的 「Attention-based」等。

但这种划分有些不太合理,所以打算直接这里介绍一些经典的 look-alike 模型。

2.1 Turn Look-alike

Weighted Criteria-based Algorithm 是由广告科技公司 Turn 构建的一套 Approximation-based 算法,发表于 ACM 2015,该算法主要是通过计算相关标签进行人群扩散,其从相似性、新奇性和质量分三个角度综合评估标签对。

相似性的计算公式有:

\operatorname{corr}\left(c_{new}, c_{orign}\right)=\frac{\left[\sum_{u_{i} \in U}\left(I_{c_{new}}\left(u_{i}\right)-\mu_{new}\right)\left(I_{c_{orign}}\left(u_{i}\right)-\mu_{orign}\right)\right]}{ \sigma_{new} \sigma_{orign}} \\ 其中 \quad \mu_{k}=\frac{\sum_{u_{i} \in U} I_{c_{k}}\left(u_{i}\right)}{|U|} \quad \sigma_{k}=\sqrt{\frac{\sum_{u_{i} \in U}\left(I_{c_{k}}\left(u_{i}\right)-\mu_{k}\right)^{2}}{|U|}}
I_{c_{n e w}}(u_i)

为指示函数,

u_i

c_{new}

标签的则为 1,否则为 0;

|U|

为用户数量。

但这种相似性计算公式可能有两个问题:1. 由于数据稀疏,大部分用户都只有少部分标签,所以大部分标签间的相关性都比较高;2. 相关标签要么与种子用户的标签非常大要么非常小,这样的计算结果就显得很冗余。

所以作者采用了第二种相似性的计算公式:

sim\left(c_{new}| c_{origin}\right)=p\left(c_{new} \mid c_{origin}\right)=\frac{\left|aud \left(c_{new}\right) \cap aud(c_{origin})\right|}{| aud(c_{origin})|}

此时,也有了新奇性的计算公式:

nov\left(c_{new}| c_{origin}\right)=p\left(! c_{origin} \mid c_{new}\right)= 1 - \frac{\left|aud \left(c_{new}\right) \cap aud(c_{origin})\right|}{| aud(c_{new})|}

此外,还要定义质量分 q,其主要包括 CTR、CVR、ROI,这个可以自己的特定场景自己定义。

我们对上述三种指标进行加权相乘:

score ~sim(c_{new}| c_{origin}) \times nov(c_{new} | c_{orign}) \times q(c_{new})

取 log,加上权重得到最终的评估结果:

log\;Score(c_{new}|c_{origin}) = \theta_{1}log (p(c_{new}| c_{origin})) + \theta_{2}log(1-p(c_{new} | c_{orign})) + \theta_3 log (q(c_{new}))

然后我们便算出了标签之间的分数,并可以利用相似标签进行人群扩展。

2.2 Yahoo Look-alike

Yahoo Look-alike Model 是 Graph-based,其结合了 Similartiy-based 和 Regression-based 方法,系统架构如下:

主要包含四个部分:

  1. 基于用户间相似度构建用户相似网络,并利用 LSH 对用户进行分桶;
  2. 粗召回:将种子用户在同一个桶的用户作为候选用户;
  3. 特征筛选:基于特征 IV 进行特征筛选,挑出能代表种子用户的正特征;
  4. 精排序:计算用户得分并排序,返回得分最高的用户集。

用户相似性定义如下:

sim(f_i,f_j) = \frac{f_i^{'} \mathbf{A} f_j}{||f_i||\times||f_j||} \\

其中,

f_i

表示用户

u_i

的特征向量,权重矩阵

\mathbf{A}

为单特征或者特征组合的线性相关性的重要程度,这块可以基于用户特征重要性进行构建。其时间复杂度为

O(N^2)

,搜索的时间复杂度为

O(N)

。Yahoo 采用了 MinHash 和 LSH 进行优化,对用户进行分桶。

然后系统基于种子用户召回同一分桶内的用户作为候选集。

由于不同的广告主所关心的用户特征不一样,比如说 K12 教育关注年龄,化妆品关注性别,所以需要事先进行特征筛选。综合考虑性能和可解释性原因,Yahoo 采用 Information Value 作为特征筛选的方法,并构建权重矩阵

\mathbf{A}

A_{i, j}=\left\{\begin{array}{ll} \left(p_{j}-q_{j}\right) \log \left(\frac{p_{j}\left(1-q_{j}\right)}{\left(1-p_{j}\right) q_{j}}\right) & \text {i=j and }p_{j}>0.5 \\ 0 & \text { otherwise } \end{array}\right. \\ p_j = \frac{\sum_{f_j \in S} f_{i,j}}{|S|}, \quad q_j = \frac{\sum_{f_i \in U} f_{i,j}}{|U|}

其中,S 为广告主提供的种子用户;U 为备选用户集合,可以通过采样获得也可以是整个用户集合;

p_j>0.5

为正特征,表示此特征在种子用户中比其他用户更重要。

此时,用户评分方法位:

s(f_i) = \sum_{j=0}^{K}\beta_j f_{i,j} + \sum_{j,g=0}^{K}\beta_{jg} f_{i,j} f_{i,g} \\

其中,

\beta_j

为特征重要性;

\beta_{jg}

为特征的二阶度量。

Yahoo 系统主要用了一阶,权重为 IV,所以某个广告投放下的用户分数为:

s(f_i,c) = \sum_{i\leq j \leq K} A_{i,j}f_{i,j}

注意,这个分数的取值为实数,如果想算概率可以用 sogmoid 函数压缩一下。

2.3 Linkedin Look-alike

Linkedin 在 KDD 16 上发表了他们的 look-alike 系统,其架构如下图所示:

大致分为线上和线下两部分,分别称为 「Campaign-Agnostic Expansion」「Campaign-Aware Expansion」

「Campaign-Agnostic Expansion」 框架主要是利用实体进行扩展,比如 Data Mining 可以扩展到 Big Data 和 Machine Learning。该框架的算法是采用 LR 模型去从历史交互数据中捕获实体间的相似性,这种扩展方法可以直接在系统中使用 (不需要再去额外计算)。

「Campaign-Aware Expansion」 框架是采用近邻搜索,基于用户的属性进行相似用户扩展。

无论是线上线下都需要用到相似度计算,这块简单介绍一下。

Linkedin 将每个实体建模为一个多域的结构化 doc(structured multi-fielded document),并提取四种类型的字段,包括:n-grams/词典、标准化命名的数据类型(standardized,公司名、行业名等)、派生数据类型(derived,互联网公司可以派生出网络开发、软件开发等)和相近实体(proximities,基于用户和公司交互的网络确定其他相关公司)。举个例子:

实体的结构化 doc 会被建立成倒排索引库,doc 的每个域的属性都有一个特征向量,doc 同一域之间的相似度用 cos 相似度进行计算:

s(f_s, f_t) = \frac{V(f_s)V(f_t)}{|V(f_s)||V(f_t)|} \\

doc 间的相似度利用域的相似度进行线性加权:

S(s,t) = w^T s \\

其中,s 为不同领域的相似度,w 为不同领域的权重。

Linkedin 将用户和公司分别进行上述实体建模,然后将用户关注的公司作为正样本,没关注的公司作为负样本,并用 LR 模型进行训练。

PS:会不会出现极端情况,导致召回量不够。

2.4 Tecent Look-alike

Realtime Attention-based Look-alike Model(RALM)是微信看一看团队提出的,其发表于 KDD19,其将 Attention 融入到 look-alike 方法中并用于实时资讯推荐,其系统架构如下图所示:

其大致分为:「离线训练」「在线实时预测」「在线异步处理」,分别对应上图的下、中、上三个位置。

2.4.1 offline Learning

「离线训练」部分包括 User Representation Learning 和 Look-alike Learning,前者用于学习用户的特征向量,后者是基于用户特征向量计算相似分数。

User Representation Learning 模块是基于 Youtube DNN 模型进行改进,左侧为用户特征,并用 Attention 代替 concat,左侧为 Item 特征,然后整体做 SCE Loss 或者多分类,预测用户的下一个点击,训练完成后左侧取最后一层隐层作为用户的特征向量,模型结构如下图所示:

Look-alike Learning 模块采用双塔结构,左边输入所有种子用户的特征向量,右边输入目标用户的特征向量,其结构如下图所示:

这也是 RALM 能实现实时计算的主要原因,其将种子用户特征代替 Item 特征,从而将 User-Item 模型转换成 User-Users 模型。

所以,Look-alike Learning 模块的关键在于表达种子用户群体。

假设用户会存在自己的个性信息,同时也有群体共性信息,那么种子群体可以表示为:个性信息+共性信息。作者为此分别建模 Local Attention 和 Global Attention 学习出两种 embedding:

  • Local Attention 是将种子采用乘法 attention,提取种子用户群体中与目标用户相关的信息,捕捉用户的局部信息。
  • Global Attention 只与种子用户群体有关,所有采用 self-attention 的方式,将种子用户乘以矩阵转换,再乘以种子用户自己,用其捕捉用户群体自身内部的兴趣分布;

得到的 Local & Global embedding 之后,对此进行加权求和,这就是种子用户群体的全部信息。

但我们知道的 Attention 本身计算量非常大,所以无法满足模型线上部署的耗时要求。为此,作者将种子用户通过 k-means 进行聚类,从而减少 Key 的数量。

完成 Look-alike Learning 之后,我们可以把右侧用户过 FC 的特征向量存储起来,提供给在线服务。

2.4.2 Online Asyncheonous

在线异步处理,主要是处理与线上请求无关的计算,如:

  • 基于用户点击日志,更新 Item 的种子用户列表;
  • 计算种子用户的聚类中心,并配送给推荐系统;
  • 计算 Global Embedding。

这些所有的东西都是定时更新的,不需要进行实时计算。

2.4.3 Online Service

在线服务这块,主要是拉取种子用户的聚类中心、Global Embedding 和用户的 Embedding,线上实时计算 Local Embedding,并计算最终的相似度。

PS:RALM 因为有聚类,种子用户出现异常点可能会出现点问题(当然,内部大概率优化过了)。

2.5 Pinterest Look-alike

Pinterest look-alike 于 KDD 19 发表了他们的 look-alike 模型,其大致分为两部分基于 LR 的分类模型和基于 Embedding 的相似搜索的模型。

2.5.1 Classifier-based Approach

Pinterest 的baseline 是用 LR 模型去做个分类模型,种子样本为正样本,随机选取非种子样本为负样本,然后训练一个分类模型去给所有用户打分排序。

2.5.2 Embedding-based Approach

Pinterest 探索的新方法,大致分为两块:一块是训练 Embedding ,另一块是基于 Embedding 和 LSH 找相似用户。

首先是计算用户的特征向量,其基于 StarSpace 的方法进行训练(Pair-wise):

  1. 用户:用户作为 Piar A,concat 用户的离散特征+归一化后的连续特征,经过一层线性激活函数的 Dense,输出得到用户特征向量;
  2. Topic:Item 的 Topic 作为 Pair B,经过 lookup 得到 Topic 的特征向量;
  3. 训练样本:取与用户交户过的 Item,用 Item 的 Topic 作为 Pair B;其他随机选取 k 个的 Topic 作为负样本,与用户组成样本对;
  4. 训练集:与用户交户过的 Item 的 Topic 作为正样本,随机选取的 k 个 Topic 作为负样本,损失函数为:
\text { Loss }=\frac{1}{k * n} \sum_{i=1}^{n} \sum_{j=1}^{k} \max \left(0,1-\left(\left\langle u_{i}, t_{k}^{+}\right\rangle-\left\langle u_{i}, t_{k}^{-}\right\rangle\right)\right)
  1. 训练停止:由于模型最终会用于解决种子用户扩散的问题,所以作者取种子用户和非种子用户,其中 90% 的种子用户组成集合 K,从剩下 10%的种子用户中取出一个
u_s

,非种子用户取出一个

u_n

。定义相似性:

S_K(u) = \sum_{k\in K} <u,k>

,则训练停止的评估标准为:

\text { ads_eval_error_rate }=\frac{1}{N} \sum_{i=1}^{N} \left\{ \begin{array}{ll} 1 & \text { if } S_{K}\left(u_{s, i} \right) < S_K \left(u_{n, i}\right) \\ 0 & \text { otherwise } \end{array} \right.

训练的 tensorboard 如下图所示:

  1. 模型重训:使用模型的最新版本定期(较长的时间)重新计算用户嵌入,主要是目的是希望所有用户的兴趣都在变换,以捕捉用户的行为和用户的漂移。(为啥?)

得到用户特征向量后,利用 LSH 对用户进行映射,然后基于种子用户的个数进行投票选出哪些区域,并取区域内用户作为扩展用户。

当然还要考虑每个区域的用户数量不同,所以种子集合 s 在区域

r_i

的修正得分为:

d_s(r_i) = \frac{c_{s,i} + \alpha}{c_{b,i} + \beta} \\

其中,

c_{b,i}

为区域内的所有人数,

\alpha、 \beta

为平滑因子,且

\alpha \leq \beta

下表为各区域人数(绿色为种子用户,红色为非种子用户):

下表为投票得分和概率得分的区别,可以看到区域排名有所变化:

作者重复 m 次映射,得到最终的

m * 2^n

的概率得分:

s=(d_s(r_1),...,d_s(r_{m*2^n}))

,每个用户的映射结果为

R_u=(t_1,t_2,...,t_m)

,所以用户最终得分为:

AffinityScore(u,s)=\frac{1}{m}\sum_{r\in R_u}d_s(r)

然后,选取得分大的用户作为扩展用户。

可视化结果如下图所示:

2.5.3 End-To-End System

介绍下 Pinterest 的系统:

下方为离线计算:

  • 首先,离线计算好用户的特征向量;
  • 然后,基于种子用户 m 次映射结果,计算所有区域的得分;
  • 再者,对最近访问过 Pinterest 用户计算得分,排序后卡一个阈值。(利用桶排序,阈值大小根据广告主需求排定,满足广告投放需求即可);
  • 最后,组成 <user, adv> 进行广告投放;

作者在实验的时候发现,Classifier-based 和 Embedding-based 混合起来的 Blending-based 比较好用:

3. Conclusion

看的这几篇都是工业界的论文,最大的感触是非常实用,工业风满满,特别是最后一篇 Pinterest 的 Look-alike,论文细节非常多,也非常的实用。

4. Reference

  1. 《Effective Audience Extension in Online Advertising》
  2. 《A Sub-linear, Massive-scale Look-alike Audience Extension System》
  3. 《Audience Expansion for Online Social Network Advertising》
  4. 《Real-time Attention Based Look-alike Model for Recommender System》
  5. 《Finding Users Who Act Alike: Transfer Learning for Expanding Advertiser Audiences》
  6. RALM:微信看一看中基于Attention机制的实时Look-alike推荐模型 (jianshu.com)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿泽的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Introduction
  • 2. Look-alike
    • 2.1 Turn Look-alike
      • 2.2 Yahoo Look-alike
        • 2.3 Linkedin Look-alike
          • 2.4 Tecent Look-alike
            • 2.4.1 offline Learning
            • 2.4.2 Online Asyncheonous
            • 2.4.3 Online Service
          • 2.5 Pinterest Look-alike
            • 2.5.1 Classifier-based Approach
            • 2.5.2 Embedding-based Approach
            • 2.5.3 End-To-End System
        • 3. Conclusion
        • 4. Reference
        相关产品与服务
        访问管理
        访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档