基于CF的常用i2i算法

基于协同过滤的i2i(item to item)算法在推荐系统中是最广泛使用的一种召回算法。通常作为启动阶段的base model作为后续算法迭代的基准,具有开发便捷,训练速度快等特点,并且一般效果都不会太差。

我们通常所说的i2i如非特别强调大多指CF系列的算法,CF算法在作为i2i召回使用时,通常不使用矩阵分解的思路,而是通过共现指标的统计量直接计算。这种计算方法通常有三种,下面逐一介绍。

item based CF

基于物品的协同过滤,指以item为中心,通过item和item之间有共同行为(一般指点击,购买等)的用户数量及这部分用户的行为统计量来计算item之间相似度的方法。可以认为是一种i2u2i的方法。有了item和item之间的相似度,通过一个用户的访问历史记录作为trigger,即可通过i2i召回新的item给源用户。

计算公式如下:

$$Sim(I_1,I_2)= \frac{\sum_{u \in I_1^u \cap I_2^u \frac {1}{\log{(1+N_u)}}}}{\sqrt{N_{I_1}N_{I_2}}}$$

$$Sim(I_1,I_2)= \frac{\sum_{u \in I_1^u \cap I_2^u \frac {w_{u_{i1}*w_{u_{i_2}}}}{\log{(1+N_u)}}}}{\sqrt{N_{I_1}N_{I_2}}}$$

上面公式中,$I_1和I_2$是任意两个item,其相似度由两个物品的统计量计算得出,其中$N_{I_i}$指物品$I_i$的总点击次数。分母部分的积起到归一化的作用,削弱热门物品的影响。分子部分是对这两个物品同时有行为的用户的点击次数的倒数和。

从这个公式中可以看出,共同访问两个物品的用户越多,相似度越大,且共同访问这两个item的用户本身的行为数量越少,即$N_u$越小,这个用户贡献的相似度越大。

user based CF

基于用户的CF算法和item based CF类似。只是变成以用户为中心,通过计算两个用户的共同访问的item的统计指标来计算两个用户之间的相似度。本质上计算的是两个用户的相似度,不能直接用来推荐item,但通过相似用户召回,再把召回的相似用户访问过的item推荐给源用户,即可实现u2i推荐。

user based cf的公式和item based cf基本一样,只是把分子中的物品的被访问次数换成用户的访问次数,分子换为两个用户共同访问过的物品的统计量即可。

swing

swing算法计算的也是i2i的相似度,理论上也可以计算u2u,但一般不这么干。
Swing本质上是基于图结构的一种CF,用户和物品的二部图中会存在很多这种(𝑢1,𝑢2,𝑖1)关系, 即用户 1 和 2 都购买过物品 𝑖,这实际上是 3 阶交互关系。传统的启发式近邻方法只关注用户和物品之间的二阶交互关系。Swing 会关注这种 3 阶关系。这种方法的一个直觉来源于,如果多个 user 在点击了 𝑖1 的同时,都只共同点了某一个其他的 𝑖2,那么 𝑖1 和 𝑖2 一定是强关联的,这种未知的强关联关系相当于是通过用户来传递的。另一方面,如果两个 user pair 对之间构成的 swing 结构越多,则每个结构越弱,在这个 pair 对上每个节点分到的权重越低。公式如下:
$$Sim(i,j) = \sum\limits_{u \in (U_i \cap U_j)}\sum\limits_{v \in (U_i \cap U_j)} \frac{1}{\alpha+|I_u\cap I_v|}$$
为了衡量物品 i 和 j 的相似性,考察都购买了物品 𝑖 和 𝑗 的用户 𝑢 和 𝑣, 如果这两个用户共同购买的物品越少,则物品 𝑖 和 𝑗 的相似性越高。极端情况下,两个用户都购买了某个物品,且两个用户所有购买的物品中,共同购买的物品只有这两个,说明这两个用户兴趣差异非常大,然而却同时购买了这两个物品,则说明这两个物品相似性非常大!

$$ y_{t+1}=wDist_1+(1-w)Dist_2\\ W_{t+1} = 1-Norm(Dist_3)\\ Loss= \sum\limits_{1<i<T}\sum\limits_{0<j<K}W_{i_j}[y_i^++\gamma-y_{i_j}^-] $$


南山南
爱生活,爱读书,爱编程

爱生活,爱读书,爱编程未来程序猿

500 声望
5 粉丝
0 条评论
推荐阅读
牛顿冷却定律
其中H为环境温度,k为常数系数,公式描述的物理意义可以表述为:物体的温度的一阶导和物体与环境温度的温差之比为一常数。这意味着和环境温差约大,物体降温越速度快。

bluedream阅读 3.7k

TOPI 简介
这是 TVM 算子清单(TOPI)的入门教程。 TOPI 提供了 numpy 风格的通用操作和 schedule,其抽象程度高于 TVM。本教程将介绍 TOPI 是如何使得 TVM 中的代码不那么样板化的。

超神经HyperAI1阅读 90.6k

编译 PyTorch 模型
本篇文章译自英文文档 Compile PyTorch Models。作者是 Alex Wong。更多 TVM 中文文档可访问 →TVM 中文站。本文介绍了如何用 Relay 部署 PyTorch 模型。首先应安装 PyTorch。此外,还应安装 TorchVision,并将其...

超神经HyperAI1阅读 91.8k

编译 MXNet 模型
本篇文章译自英文文档 Compile MXNet Models。作者是 Joshua Z. Zhang,Kazutaka Morita。更多 TVM 中文文档可访问 →TVM 中文站。本文将介绍如何用 Relay 部署 MXNet 模型。首先安装 mxnet 模块,可通过 pip 快速...

超神经HyperAI1阅读 39.2k

横向对比 11 种算法,多伦多大学推出机器学习模型,加速长效注射剂新药研发
内容一览:长效注射剂是解决慢性病的有效药物之一,不过,该药物制剂的研发耗时、费力,颇具挑战。对此,多伦多大学研究人员开发了一个基于机器学习的模型,该模型能预测长效注射剂药物释放速率,从而提速药物整...

超神经HyperAI1阅读 28.1k

封面图
科罗拉多州立大学发布CSU-MLP模型,用随机森林预测中期恶劣天气
内容一览:近期,来自美国科罗拉多州立大学与 SPC 的相关学者联合发布了一个基于随机森林的机器学习模型 CSU-MLP,该模型能够对中期 (4-8天) 范围内恶劣天气进行准确预报。目前该成果刊已发表在《Weather and For...

超神经HyperAI阅读 46.1k

封面图
利用 UMA 使硬件加速器可直接用于 TVM
本篇文章译自英文文档 Making your Hardware Accelerator TVM-ready with UMA作者是 Michael J. Klaiber,Christoph Gerum,Paul Palomero Bernardo。更多 TVM 中文文档可访问 →TVM 中文站本节介绍通用模块化加速器...

超神经HyperAI阅读 94.1k

爱生活,爱读书,爱编程未来程序猿

500 声望
5 粉丝
宣传栏