推荐系列(二):生成候选者概述

简介: 生成候选者概述在上一节介绍了推荐系统的基本框架:可以看到,生成候选人(generate candidate)是推荐的第一阶段,也被称作retrieve。给定查询,系统生成一组相关候选者。下表显示了两种常见的候选生成方法:类型定义实例基于内容的过滤使用项目之间的相似性来推荐与...

生成候选者概述

在上一节介绍了推荐系统的基本框架:
在这里插入图片描述

可以看到,生成候选人(generate candidate)是推荐的第一阶段,也被称作retrieve。给定查询,系统生成一组相关候选者。下表显示了两种常见的候选生成方法:

类型 定义 实例
基于内容的过滤 使用项目之间的相似性来推荐与用户喜欢的项目类似的项目 如果用户A观看过两个可爱的猫视频,则系统可以向该用户推荐可爱的动物视频
协同过滤 同时使用查询和项目之间的相似性 来提供推荐 如果用户A类似于用户B,并且用户B喜欢视频1,则系统可以向用户A推荐视频1(即使用户A没有看到任何类似于视频1的视频)

Embedding Space

基于内容和协作过滤都将每个项目和每个查询(或上下文)映射到公共嵌入空间中的嵌入向量

$$ E = R^d $$

。通常,嵌入空间是低维的(d远小于语料库的大小),并且捕获事物或查询集的一些潜在结构。类似的项目(例如通常由同一用户观看的YouTube视频)最终会在嵌入空间中靠近在一起。“亲密度”的概念由相似性度量定义。

额外资源: projector.tensorflow.org是一个可视化嵌入的交互式工具。

相似度量

相似性度量是一种函数

$$ s: E×E→R $$

,输入一对embedding 向量并返回一个标量来衡量它们的相似性。embedding 向量可以用于候选生成,如下所示:给定查询嵌入

$$ q∈E $$

,系统查找项目嵌入

$$ x∈E $$

接近 q,即具有高相似性的向量对

$$ s(x, q) $$

为了确定相似程度,大多数推荐系统依赖于以下一个或多个相似度量方法:

  • 余弦(cosine);
  • 点积(dot product);
  • 欧氏距离(Euclidean distance);

余弦|Cosine

衡量两个向量之间角度的余弦,

$$ s(q, x)= cos(q, x) $$

点积|Dot product

两个向量的点积是

$$ s(q, x) = \langle q, x \rangle = \sum_{i = 1}^d q_i x_i $$

。它也是由

$$ s(q, x) = \|x\| \|q\| \cos(q, x) $$

(角度的余弦乘以规范的乘积)。因此,如果embedding向量被标准化后,则点积和余弦这两种方法等价。

欧氏距离|Euclidean distance

这是欧几里得空间的通常距离,

$$ s(q, x) = \|q - x\| = \left[ \sum_{i = 1}^d (q_i - x_i)^2\right]^{\frac{1}{2}} $$

。距离越小意味着相似性越高。注意,当embedding向量被归一化时,平方欧几里德距离与点积(和余弦)一致,因为在这种情况下

$$ \frac{1}{2}\|q - x\|^2 = 1 - \langle q, x \rangle $$

比较相似度量

显示二维嵌入空间的图像,其中包含查询嵌入和三个候选项。

考虑上图中的示例。黑色矢量表示查询embedding向量。其他三个embedding向量(项目A,项目B,项目C)表示候选项目。使用不同的相似性度量方法,得到的项目排序有不同的结果。

使用三个相似性度量来确定项目顺序:余弦,点积和欧几里德距离,答案如下:

答案


项目A长度最长,其标量最大,使用点积方法排名最高。项目C与查询向量具有最小角度,因此根据余弦相似性排名最高。物品B在距离上最接近查询,因此使用欧几里德距离排名最高:

Image showing the differences in the ranking induced by each similarity measure.


如何选择相似度量方法?

与余弦相比,点积相似性对embedding向量的范数更加敏感。也就是说,embedding向量的范数越大,相似性越高并且项目被推荐的可能性越大,因此给出的建议如下:

  • 在训练集中经常出现的项目(例如,热门流行的视频)往往具有大范数的嵌入向量。如果需要捕获流行度信息,那么更应该选择点积这种方法。但是,这种方法将导致流行的item最终可能会主导推荐。在实践中,可以使用其他变体的相似性度量,而不太强调项目的范数。例如,定义

$$ s(q, x) = \|q\|^\alpha \|x\|^\alpha \cos(q, x) $$

  • 在训练期间很少出现的项目,可能不会经常被更新。因此,如果它们以大规范初始化,则系统可以推荐出稀有项目而不是更相关的项目。为了避免此问题,需要注意embedding向量的初始化,并使用适当的正则化。

总结

  • 候选者的生成对于推荐系统是第一步,也是最关键的一部分,召回的事物好坏之间影响后续的推荐进程;
  • 如何获得候选者,一般是根据embedding向量的相似度来得到,相似度量方法常见的有三种:余弦距离,点积,以及欧式距离;
  • 根据具体的推荐业务及侧重点,选择合适的相似度量方法;
目录
相关文章
|
5月前
|
算法 Linux C语言
RSIC-V“一芯”学习笔记(一)——概述
RSIC-V“一芯”学习笔记(一)——概述
|
7月前
|
SQL Java 关系型数据库
JAVAJDBC概述
JAVAJDBC概述
42 0
|
7月前
|
安全 API 调度
基础概述
基础概述
98 0
基础概述
|
存储 机器学习/深度学习 数据挖掘
FusionInsight概述
FusionInsight概述
324 0
|
程序员 Linux C语言
01 C++ - 概述
01 C++ - 概述
78 0
|
开发框架 IDE .NET
C#基础Ⅰ-概述
C#基础Ⅰ-概述
|
存储 缓存 JSON
Dockerflie概述
Dockerflie概述
142 0
|
数据采集 数据挖掘 开发者
概述| 学习笔记
快速学习概述。
|
人工智能 算法 C语言
[从C到C++] 1.2 C++概述
[TOC] 20世纪80年代,AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士及其同事在C语言的基础上成功开发出C++语言。C++语言是一种混合型语言,它保留了C语言所有的优点,同时又增添了面向对象的编程机制,我们可以将C++语言视为C语言的改进和扩展。
2032 0