基于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给源用户。it

计算公式以下:sed

$$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}}}$$model

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

从这个公式中能够看出,共同访问两个物品的用户越多,类似度越大,且共同访问这两个item的用户自己的行为数量越少,即$N_u$越小,这个用户贡献的类似度越大。im

user based CF

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

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

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 的类似性,考察都购买了物品 𝑖 和 𝑗 的用户 𝑢 和 𝑣, 若是这两个用户共同购买的物品越少,则物品 𝑖 和 𝑗 的类似性越高。极端状况下,两个用户都购买了某个物品,且两个用户全部购买的物品中,共同购买的物品只有这两个,说明这两个用户兴趣差别很是大,然而却同时购买了这两个物品,则说明这两个物品类似性很是大!推荐系统

相关文章
相关标签/搜索