原理

基于图结构的实时推荐算法 Swing,能够计算 item-item 之间的相似性。
Swing 指的是秋千,用户和物品的二部图中会存在很多这种秋千,例如 Swing算法 - 图1#card=math&code=%28u_1%2Cu_2%2Ci_1%29&height=20&width=76), 即用户 Swing算法 - 图2Swing算法 - 图3 都购买过物品 Swing算法 - 图4,三者构成一个秋千 (三角形缺一条边),这实际上是 3 阶交互关系。传统的启发式近邻方法只关注用户和物品之间的二阶交互关系。Swing 会关注这种 3 阶关系。
这种方法的一个直觉来源于,如果多个 user 在点击了 Swing算法 - 图5 的同时,都只共同点了某一个其他的 Swing算法 - 图6,那么 𝑖1 和 𝑖2 一定是强关联的,这种未知的强关联关系相当于是通过用户来传递的。另一方面,如果两个 user pair 对之间构成的 swing 结构越多,则每个结构越弱,在这个 pair 对上每个节点分到的权重越低。公式如下:

Swing算法 - 图7
其中Swing算法 - 图8是点击过物品 Swing算法 - 图9 的用户的集合,Swing算法 - 图10是点击过物品 Swing算法 - 图11 的用户的集合,Swing算法 - 图12 表示用户Swing算法 - 图13点击过的物品的集合。

示例

下图:
2.png
计算 Swing算法 - 图15 的相似性,带入上式,分别求出 Swing算法 - 图16即可得出Swing算法 - 图17.

Swing算法 - 图18
Swing算法 - 图19

Swing算法 - 图20
进而可得:Swing算法 - 图21Swing算法 - 图22