推荐算法学习笔记1.1:传统推荐算法-协同过滤算法

1. 传统推荐算法

在这里插入图片描述

1.1 协同过滤算法

在这里插入图片描述

协同过滤算法是 基于用户和物品之间的交互信息 预测用户对某一物品(事件等)的评分(正向反馈)从而得到用户的推荐集合。该算法的核心是 共线矩阵 的获取以及 向量相似度 计算。

假设有n个用户,m个物品

  1. 基于用户相似性的协同过滤算法(UserCF)

    基本思想:兴趣相似的人,感兴趣的东西可能相似。

    基本思路:维护共现矩阵中行向量的相似性(用户向量,时间复杂度: O ( n 2 ) O(n^2) O(n2))→ 获取Top k个相似用户对某一物品j的加权评分→对不知道评分的物品进行预测分数(时间复杂度: O ( k × m ) O(k \times m) O(k×m))→ 排序。

    优点:具备更强的社交性,用户能够快速得知与自己相似的人最近喜欢什么,从而快速更新自己的兴趣列表。 新闻,热点,微博?当很多个用户感兴趣一个话题时,该话题会推送给更多的用户,从而产生热点效应。

    缺点:从技术的角度看,当用户量n远大于商品数量m时,用户相似度矩阵的存储和计算(可能可以以更新的方式实现)开销过大。当用户向量稀疏时,找到相似用户的准确率低,不适用于正反馈获取较困难的应用场景。

b. 基于物品相似性的协同过滤算法(ItemCF)

基本思想:用户对与跟自己感兴趣物品相似的物品也可能感兴趣。

基本思路:维护共现矩阵中列向量的相似性(物品向量,时间复杂度: O ( m 2 ) O(m^2) O(m2))→ 获取用户j感兴趣的物品集合 S i t e m s j S_{items}^j Sitemsj→对于未知评分的物品i,从 S i t e m s j S_{items}^j Sitemsj中获取相似度Top k的k个物品,计算加权平均分数→ 根据分数进行排序生成推荐列表。

优点:当用户量n远大于商品数量m的场景,其存储压力较小。更适合兴趣变化较为稳定的应用,如淘宝购物时选购相似物品。

缺点:无法将两个物品相似这一信息推广到其他物品的相似性计算上,从而导致热门的物品具有很强的头部效应,即热门物品跟很多物品相似度高。由于冷门物品的向量非常稀疏,导致系统难以找到冷门物品之间的相似度。

附公式:

附1. 相似度计算公式

余弦相似度: s i m ( i , j ) = v i T v j ∣ v i ∣ ∣ v j ∣ sim(i,j)= \frac{\textbf{v}_i^T\textbf{v}_j}{|\textbf{v}_i||\textbf{v}_j|} sim(i,j)=vi∣∣vjviTvj, 皮尔逊相关系数: ( v i − v i ‾ ) T ( v j − v j ‾ ) ∣ v i − v i ‾ ∣ ∣ v j − v j ‾ ∣ \frac{(\textbf{v}_i-\overline{v_i})^T(\textbf{v}_j-\overline{v_j})}{|\textbf{v}_i-\overline{v_i}||\textbf{v}_j-\overline{v_j}|} vivi∣∣vjvj(vivi)T(vjvj), ∣ ∗ ∣ |*| 表示向量的二范数

附2:加权平均计算公式

s c o r e k = ∑ w a n y s a n y ∑ w w a n y score_k = \frac{\sum{w_{any}s_{any}}}{\sum{w_{wany}}} scorek=wwanywanysany

总结:协同过滤矩阵的解释性强,实现简单。但可能受到特征向量性质的影响,推荐结果的头部效应明显,处理稀疏向量的能力弱。另一方面,该算法仅利用用户和物品的交互信息,无法引入用户的个人信息以及商品信息作为辅助。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值