推荐系统协同过滤算法——基于邻域的模型

本文详细介绍了协同过滤中基于邻域的模型,包括相似度度量如皮尔逊相关系数,以及基于相似度的插值方法。通过讨论其优点,如直观性、可解释性和即时推荐能力,同时也指出标准模型存在的问题,如相似度函数的任意性、近邻物品相互作用的忽视和过拟合风险。文中还提出了联合派生插值权重以改进模型的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于邻域的模型

协同过滤领域最常见的方法就是基于领域的模型。其最原始的形式是基于用户的方法(详见文献[13]1):基于志趣相投的相似用户的评分记录来估计未知评分。

随后是一种类似的,基于物品的方法:使用同一个用户在相似物品上的评分来估计未知的评分

  • 其具有更好的扩展性;
  • 并提高了准确度;
  • 能更好的解释预测背后的原因(用户对他之前喜欢的物品比较熟悉,但他们却不认识这些所谓志趣相投的人)。

一般来说,隐语义模型在描述数据的各方面具有很强的表达能力,因此其预测结果比基于邻域的模型要好。但是,基于领域的模型更加普遍,是因为:

  • 1)基于邻域的模型,相对简单;
  • 2)更重要的原因是,基于邻域的模型提供了推荐背后原因的直观解释——其不仅提高推荐的准确性;同时增强了用户体验;
  • 3)基于邻域的模型,能够根据一个新进入系统的用户反馈立即提供推荐。

本节结构:

  • 1)如何估计两个物品之间的相似度;
  • 2)基于相似度的领域方法,及其一些特定限制;
  • 3)解决这些问题的建议方法:以计算时间上微小的增加为代价,提高预测准确度。

1.相似度度量

相似度度量是基于物品方法的核心。

皮尔逊相关系数,仅仅是基于共同的用户支持,建议用基准预测器的残差来补偿特定用户和特定物品的偏差。

ρ ^ i j = ∑ u ∈ U ( i , j ) ( r u i − b u i ) ( r u j − b u j ) ∑ u ∈ U ( i , j ) ( r u i − b u i ) 2 ⋅ ∑ u ∈ U ( i , j ) ( r u j − b u j ) 2 (3.15) \hat{\rho}_{ij} = \frac{\sum_{u \in U(i,j)} (r_{ui} - b_{ui} ) (r_{uj} - b_{uj} )}{\sqrt{\\ \sum_{u \in U(i,j)} (r_{ui} - b_{ui} )^2 · \sum_{u \in U(i,j)} (r_{uj} - b_{uj} )^2}\\ }\tag{3.15} ρ^ij=uU(i,j)(ruibui)2uU(i,j)(rujbuj)2 uU(i,j)(rui

### 协同过滤算法是否需要训练模型 协同过滤算法是一种常用的推荐方法,主要分为两大类:基于邻域的方法(Neighborhood-based)和基于模型的方法(Model-based)。这两类方法在是否需要显式的模型训练方面存在差异。 #### 基于邻域协同过滤 基于邻域协同过滤不需要显式地训练一个复杂的模型。它通过计算用户或物品之间的相似度来完成推荐任务。例如,在用户-用户协同过滤中,系统会找到与目标用户兴趣相似的一组用户,并根据他们的偏好向目标用户推荐未接触过的项目;而在物品-物品协同过滤中,则是寻找与当前物品最相似的一系列物品进行推荐[^1]。因此,这类方法的核心在于构建相似度矩阵并利用其进行预测,而不是依赖传统的机器学习模型训练过程。 #### 基于模型协同过滤 与此不同的是,基于模型协同过滤确实涉及到了模型的训练阶段。这种方法通常采用诸如矩阵分解技术(Matrix Factorization),其中交替最小二乘法(ALS)就是一个典型代表[^2]。具体来说,给定一个稀疏的用户-物品交互矩阵,ALS试图将其近似表示成两个低秩矩阵相乘的形式——即用户特征矩阵和物品特征矩阵。这一过程中包含了超参数的选择以及迭代优化步骤以减少误差损失函数值,从而获得更精确的结果。最终得到经过训练后的隐含因子可以用来估计未知条目的潜在评分情况[^3]。 另外还有一种实现方式是在Python环境下使用梯度下降等数值求解工具来进行全局最优解搜寻的过程[^4]。这里同样体现了对于初始权重设置、正则项系数调节等方面的要求,这些都是典型的监督学习框架下的操作流程的一部分。 综上所述,虽然广义上的“协同过滤”涵盖了多种不同的子类别和技术路线,但从现代工程实践角度来看,“是否需要训练模型”的答案取决于所选用的具体方案类型。如果是简单的记忆型或者统计性质较强的版本可能无需经历严格意义上的建模环节即可达成基本功能需求;然而当追求更高精度表现时,则不可避免要引入更加复杂精巧的设计思路并通过反复试验调参等方式提升整体性能水平。 ```python from pyspark.ml.recommendation import ALS # 创建ALS实例对象 als = ALS(rank=10, maxIter=10, regParam=0.01) # 使用训练数据集拟合模型 model = als.fit(training_data) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值