推荐系统——基于邻域的推荐方法综述

本文详细介绍了基于邻域的推荐方法,包括基于用户的评分预测和基于物品的推荐,讨论了评分预测的回归与分类、相似度权重计算、邻域选择等问题。针对预测准确性、效率、稳定性和惊喜度等方面进行了比较,并提到了基于图和学习的进阶技术,以克服邻域方法的局限性。

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

2.1 简介

百度脑图

2.2 问题定义和符号

1.基本符号定义

  • 1.用户集合: U ⇒ u ∈ U \mathcal{U} \Rightarrow u \in \mathcal{U} UuU

    • U i ⇒ \mathcal{U}_i \Rightarrow Ui 表示集合中已经对物品 i i i 进行了评分的用户集合
    • U i j = U i ⋂ U j ⇒ \mathcal{U}_{ij} = \mathcal{U}_{i} \bigcap \mathcal{U}_{j} \Rightarrow Uij=UiUj 表示同时对物品 i i i j j j 都进行了评分的用户集合
  • 2.物品集合: I ⇒ i ∈ I \mathcal{I} \Rightarrow i \in \mathcal{I} IiI

    • I u ⇒ \mathcal{I} _u \Rightarrow Iu 表示被用户 u u u 所评分的物品集合
    • I u v = I u ⋂ I v ⇒ \mathcal{I} _{uv} = \mathcal{I} _{u} \bigcap \mathcal{I} _{v} \Rightarrow Iuv=IuIv 表示被同时被用户 u u u v v v 所评分的物品集合
  • 3.系统评分可选的分数集合: S \mathcal{S} S

    • 例如: S = { 喜 欢 , 不 喜 欢 } \mathcal{S} = \{喜欢,不喜欢 \} S={ ,}
  • 4.系统评分集合: R \mathcal{R} R

    • r u i ∈ R ⇒ r_{ui} \in \mathcal{R}\Rightarrow ruiR 表示用户 u ∈ U u \in \mathcal{U} uU 对于特定物品 i ∈ I i \in \mathcal{I} iI 的评分
    • 同时假定 r u i r_{ui} rui 的取值个数不能多于一个(要么一个取值要么没有)

2.评分预测(rating prediction)

  • 为了预测某个用户对他未评价过的物品 i i i 的评分。

  • 当评分存在时,这个任务通常可以定义为一个回归或者分类(多类)的问题,其目标是用学习函数:
    f : U × I → S f: \mathcal{U \times \mathcal{I} \to S} f:U×IS 来预测用户 u u u 对于新物品 i i i 的评分 f ( u , i ) f(u,i) f(u,i)

  • 评分集合 R \mathcal{R} R 可以分为 R t r a i n \mathcal{R}_{train} Rtrain R t e s t \mathcal{R}_{test} Rtest

评估预测准确性的标准:
  • 平均绝对误差(Mean Absolute Error):能更好地反映预测值误差的实际情况.
    M A E ( f ) = 1 ∣ R t e s t ∣ ∑ r u i   ∈ R t e s t ∣ f ( u , i ) − i u i ∣ MAE(f)= \frac{1} {|\mathcal{R}_{test}|} \sum_{r_{ui} \, \in \mathcal{R}_{test}} |f(u,i)-i_{ui}| MAE(f)=Rtest1ruiRtestf(u,i)iui
  • 均方根误差(Root Mean Square Error):是用来衡量观测值同真值之间的偏差
    R M S E ( f ) = 1 ∣ R t e s t ∣ ∑ r u i   ∈ R t e s t ( f ( u , i ) − i u i ) 2 RMSE(f)= \sqrt{ \frac{1} {|\mathcal{R}_{test}|} \sum_{r_{ui} \, \in \mathcal{R}_{test}} (f(u,i)-i_{ui})^2} RMSE(f)=Rtest1ruiRtest(f(u,
### 推荐系统论文笔记总结 #### 基于图学习的推荐系统概述 近年来,基于图学习的推荐系统(GLRS)逐渐成为研究热点。这类方法利用图结构来表示用户、项目及其他实体间的关系,从而更有效地捕捉复杂交互模式[^2]。 #### 同质图与异质图的区别 在构建推荐系统的图模型时,区分同质图和异质图至关重要。前者仅包含单一类型的节点(如同一社交圈内的个体),后者则混合了多种不同性质的对象(如消费者与商品)。 #### 提升推荐性能的关键因素 为了增强推荐准确性并确保结果可靠性,研究人员探索了诸多策略。这不仅涉及高效的信息抽取机制设计,还包括针对特定应用场景优化算法架构等方面的工作。 #### 协同过滤技术综述 除了新兴的图神经网络范式外,经典协同过滤仍然是不可或缺的一部分。这种方法借助大量用户的反馈数据来进行个性化预测,在实践中展现出强大的适用性和灵活性[^3]。 #### 技术栈共通性分析 值得注意的是,尽管目标有所差异——一方旨在发现个人兴趣点,另一方侧重吸引广泛受众注意——但两者背后支撑的技术框架却存在显著交集。无论是前期的数据预处理流程还是后期的效果评估标准,二者均表现出高度一致性[^4]。 ```python # Python代码示例:简单实现基于邻域的协同过滤算法 import numpy as np def predict_rating(user_item_matrix, user_id, item_id, k_neighbors=5): similarities = [] # 计算当前item与其他items之间的相似度 for other_item in range(len(user_item_matrix[user_id])): if other_item != item_id and not np.isnan(user_item_matrix[user_id][other_item]): similarity_score = cosine_similarity( user_item_matrix[:, item_id], user_item_matrix[:, other_item] ) similarities.append((similarity_score, other_item)) top_k_similar_items = sorted(similarities)[-k_neighbors:] weighted_sum = sum([score * user_item_matrix[user_id][idx] for score, idx in top_k_similar_items]) total_weight = sum(abs(score) for score, _ in top_k_similar_items) return weighted_sum / (total_weight + 1e-8) def cosine_similarity(vec_a, vec_b): norm_a = np.linalg.norm(vec_a) norm_b = np.linalg.norm(vec_b) dot_product = np.dot(vec_a, vec_b.T) return dot_product / ((norm_a * norm_b) + 1e-8) user_item_data = [ [np.nan, 3., 2.], [4., np.nan, 5.], [1., 2., np.nan] ] predicted_value = predict_rating(np.array(user_item_data), 0, 0) print(f'Predicted rating: {predicted_value:.2f}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值