协同过滤算法理解

一、协同过滤思想介绍

  顾名思义,协同过滤算法的核心思想就是“物以类聚,人以群分”,通过用户对物品的评价和意见,将物品和人聚成几类,从各自的类中挑选出用户可能感兴趣的的物品进行推荐,而代替从直接从海量物品中筛选,缩小目标范围,简化计算。

二、协同过滤基本原理

  协同过滤最关键的一步是怎么将人或者是物品进行聚类,此时我们的一般做法是获取用户-物品的共现矩阵,其中用户跟物品发生的交互有可能是显示行为(比如有具体评分等),但大部分情况下我们拿到的都是隐式行为(比如是否浏览、点击等)

用户/物品i1i2i3
u111
u21
u31

  拿到共现矩阵之后我们就可以进行距离计算,我们可以计算用户间的距离,也可以计算物品之间的距离,这也就衍生出了两种不同的协同过滤方式。我们的目的是给用户推荐,也就没有和用户发生过交互行为的物品。

1.基于用户的协同过滤(Usercf)

基本步骤

  • Step1:计算用户间的相似度(共现矩阵中行与行)
  • Step2:选取TopN个相似用户
  • Step3:计算预测得分
  • Step4:选出TopK个物品进行推荐

  关于用户间的相似度计算方法有很多,这里重点列举几种常用的方法。
相似度计算方式

(1)杰卡德(Jacard)相似系数
  两个集合A和B交集元素的个数在A、B并集中所占的比例,称为这两个集合的杰卡德系数,用符号 J(A,B) 表示。杰卡德相似系数是衡量两个集合相似度的一种指标,jaccard值越大说明相似度越高。其取值范围为[0,1].
协同过滤算法理解
  其缺点为引入分值,对所有物品一视同仁

(2) 余弦相似度
  余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度,夹角越小,证明余弦相似度越大,两个用户越相似,其取值范围为[-1,1]。
协同过滤算法理解协同过滤算法理解

  不过对于不同的物品,其所带来的影响也是不同的,比如:两个用户都对<新华字典>有过行为,但这并不能说明他们的兴趣是一样的,因为大多数人都买过这件商品。但如果用户都买过《java语言编程思想》,那么就可以认为他们的兴趣有很大的相似之处。换句话说,两个用户对冷门的物品采取过同样的行为更能说明他们兴趣的相似度。所以可以改进上述的公式(称为User-IIF):
协同过滤算法理解

  其中协同过滤算法理解为物品协同过滤算法理解跟用户发生过交互的次数,协同过滤算法理解越大,则对应协同过滤算法理解越小,对热门商品进行了惩罚,不过改进后的余弦相似度仍存在没有考虑用户间评分偏差性的问题。

(3)皮尔逊相关系数
  通过引入用户平均分减少用户评分对结果的影响
协同过滤算法理解
  其实对于不同的业务,不一定要以平均值为衡量标准,比如工资这种情况选择中位数或许更靠谱。

预测评分计算
  利用用户相似度和相似用户的评价加权平均获得用户的评价的预测值。
协同过滤算法理解
  其中协同过滤算法理解为TopN相似用户集合,协同过滤算法理解是用户协同过滤算法理解和用户协同过滤算法理解的相似度,协同过滤算法理解为用户协同过滤算法理解对物品协同过滤算法理解的评分。

  可以选择减去用户对物品的评分偏差更精确:
协同过滤算法理解

Usercf的缺点

  • 在物品较多的情况下,每个user对应的向量可能极其稀疏,不同用户之间买的物品重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似的用户。这导致UserCF不适用于那些正反馈获取较困难的应用场景*(如酒店预订, 大件商品购买等低频应用),通俗的说就是user在item里面并不能形成很好的联系。
  • 基于用户的协同过滤需要维护用户相似度矩阵以便快速的找出TopN相似用户, 该矩阵的存储开销非常大,存储空间随着用户数量的增加而增加,不适合用户数据量大的情况使用。因此很多平台初期都会采用Itemcf

2.基于物品的协同过滤(Itemcf)

基本步骤

  • Step1:计算物品和物品之间的相似性(共现矩阵中列与列)
  • Step2:获取用户最喜欢的TopK个物品列表(根据评分或者是浏览时长等)
  • Step3:计算预测评分
  • Step4:选取TopN个物品进行推荐

  其相似度计算方式与Usercf计算方法相同,这里就不赘述了。

预测评分计算
协同过滤算法理解
  其中协同过滤算法理解为用户最喜欢TopK物品列表,协同过滤算法理解是物品协同过滤算法理解与物品协同过滤算法理解的相似度,协同过滤算法理解是用户协同过滤算法理解对物品协同过滤算法理解的已有评分

三、应用场景

  UserCF基于用户相似度进行推荐,具有更强的社交特性,适用于新闻推荐场景。因为新闻本身的兴趣点往往是分散的,相比用户对不同新闻的兴趣偏好,新闻的及时性、热点性更为重要,UserCF正适用于发现热点,以及跟踪热点的趋势

​  ItemCF适用于兴趣变化较为稳定的场景,比如电商场景,用户往往在一个时间段内寻找一类商品,或者是电视剧、电影这种推荐场景

四、存在问题

  协同过滤最严重的一个问题就是泛化能力较弱,具有很强的头部效应,容易跟大量物品产生相似, 而尾部物品由于特征向量稀疏, 导致很少被推荐。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月18日
下一篇 2022年5月18日

相关推荐