推荐系统:MovieLens上的SAR单节点(SAR Single Node on MovieLens)

步骤

1.计算物品相似度矩阵S(Item-Item Similarity matrix)

2.计算用户与物品的关系矩阵A(User_Item affinity matrix)

3.计算得分,得到分数矩阵A*S,推荐分数最高的几件商品(Top-k recommendations)

4.可以通过时间衰退与删除浏览过的商品来增加准确度

计算项目共现和项目相似度(计算S)

SAR基于项目之间的共性数据(两个项目对于给定用户一起出现的次数)定义相似性。

构建了m*m的矩阵C, c i , j c_{i,j} ci,j代表的是项目i与项目j一起出行的次数,m是项目的总和

  • 对称, 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
  • 项目单独出现的次数肯定比两个项目同时出现的次数少 c i , i , c j , j ≥ c i , j c_{i,i} , c_{j,j} \geq c_{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

通常,将“counts”用作相似性度量标准有利于可预测性,这意味着大多数时候都会推荐最受欢迎的商品。
相比之下,“lift”则有利于发现性/偶然性:总体上较不受欢迎但受到一小部分用户高度青睐的商品更可能被推荐。
“ Jaccard”是两者之间的折衷方案。

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

SAR中的亲和度矩阵捕获了每个用户与用户已经与之交互的项目之间关系的强度。 SAR包含两个可能影响用户亲和力的因素:

  • 它可以通过对不同事件进行加权加权来考虑有关“用户-项目”交互类型的信息(例如,它可以权衡用户对特定项目的评价高于对特定项目的评价)
  • 它可以考虑有关**何时发生用户项目事件的信息(例如,它可以抵消遥远过去发生的事件的价值)

将这些因素形式化可以使我们表达出用户与项目之间的相似性:
a i j = ∑ k w k ( 1 2 ) t 0 − t k T a_{ij}=\sum_k w_k \left(\frac{1}{2}\right)^{\frac{t_0-t_k}{T}} aij=kwk(21)Tt0tk

其中,用户 i i i和项目 j j j的相似度 a i j a_{ij} aij是涉及用户 i i i和项目 j j j的所有 k k k事件的加权总和。 w k w_k wk表示特定事件的权重,2项的幂表示时间折扣事件。 ( 1 2 ) n (\frac{1}{2})^n (21)n缩放因子使参数 T T T成为半衰期 t 0 t_0 t0 之前的事件 T T T单位的权重是发生事件的一半 在 t 0 t_0 t0

对所有 n n n个用户和 m m m个项目重复此计算,将得出 n ∗ m n * m nm矩阵 A A A。 可以通过将所有权重设置为1(有效地忽略事件类型),或将半衰期参数 T T T设置为无穷大(忽略交易时间),来简化上述表达式。

时间衰退(可选)

用户与商品之间的关系,如果经历的时间越长,则它们之间的关系就越小。

删除浏览过的项目(可选)

(可选)我们删除训练集中已经看到的商品,即不建议用户再次购买先前购买的商品。

为每个用户推荐Top_k项

然后可以通过将亲和度矩阵( A A A)乘以相似度矩阵( S S S)来获得针对一组用户的个性化推荐。 结果是推荐分数矩阵,其中每一行对应一个用户,每一列对应一个项目,每个条目对应一个用户/项目对。 分数越高,推荐项目就越强。
值得注意的是,推荐操作的复杂性取决于数据大小。 SAR算法本身具有 O ( n 3 ) O(n^3) O(n3) 的复杂度。 因此,单节点实现不应以可伸缩的方式处理大型数据集。 每当使用该算法时,建议运行足够大的内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值