推荐系统之SAR Single Node on MovieLens

来自微软的repo https://github.com/Microsoft/Recommenders

算法

  • 计算物品相似度矩阵 S S
  • 用于评估用户和物品的关系矩阵 A A
  • 评价分数为计算 A S A*S
  • 可选步骤包括时间衰减和移除已经看过的物品
    在这里插入图片描述

计算相似度

定义物品和物品的相似度,首先计算物品两两出现的次数,构成 m × m m\times m 矩阵 C C c i , j c_{i,j} 代表物品出现的次数

  • 显然矩阵式对称的 c i , j = c j , i c_{i,j} = c_{j,i}
  • 非负性 c i , j 0 c_{i,j} \geq 0
  • 单个出现的次数肯定比两两出现要大 ( i , j ) C i , i , C j , j C i , j \forall(i,j) C_{i,i},C_{j,j} \geq C_{i,j} .

可以通过三种公式计算相似度

  • Jaccard: s i j = c i j ( c i i + c j j c i j ) s_{ij}=\frac{c_{ij}}{(c_{ii}+c_{jj}-c_{ij})}
  • lift: s i j = c i j ( c i i × c j j ) s_{ij}=\frac{c_{ij}}{(c_{ii} \times c_{jj})}
  • counts: s i j = c i j s_{ij}=c_{ij}

计算用户对物品的亲和力分数

  • 考虑对不同事件进行加权(比如购买,点击的权重是不一样的)
  • 考虑时间问题

a i j = k w k e [ log ( 2 ) t 0 t k T ] a_{ij}=\sum_k w_k e^{[-\text{log}(2)\frac{t_0-t_k}{T}]}

a i j a_{ij} 代表用户i对物品j的亲和力,对于物品j计算用户i对此物品所有的历史k个行为,t0代表现在的时间,这个代表随着时间的后延,权重值将减小。

移除已经看过的物品

进行每个用户的Top-K推荐

猜你喜欢

转载自blog.csdn.net/csdn_47/article/details/88351075