推荐系统之SAR Single Node on MovieLens

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

算法

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

计算相似度

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

  • 显然矩阵式对称的 c i , j = c j , i c_{i,j} = c_{j,i} ci,j=cj,i
  • 非负性 c i , j ≥ 0 c_{i,j} \geq 0 ci,j0
  • 单个出现的次数肯定比两两出现要大 ∀ ( i , j ) C i , i , C j , j ≥ C i , j \forall(i,j) C_{i,i},C_{j,j} \geq C_{i,j} (i,j)Ci,i,Cj,jCi,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})} sij=(cii+cjjcij)cij
  • lift: s i j = c i j ( c i i × c j j ) s_{ij}=\frac{c_{ij}}{(c_{ii} \times c_{jj})} sij=(cii×cjj)cij
  • counts: s i j = c i j s_{ij}=c_{ij} sij=cij

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

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

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}]} aij=kwke[log(2)Tt0tk]

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

移除已经看过的物品

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值