Mining Massive Datasets课程笔记(四)推荐系统

本文是Mining Massive Datasets课程笔记,探讨推荐系统的基本模型、内容基础推荐、协同过滤及其优缺点,包括用户与物品相似度计算、评分预测和推荐方法的实现。还提到了评估推荐系统的标准及面临的问题。

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

Recommender System 推荐系统

由于网络电商的兴起,商品由实体中有限的个数到互联网时代无数商品可以购买,使得长尾理论被广泛关注。这些都是推荐系统兴起的条件。推荐有多种类型,我们关注的是对个体用户的定制推荐。

Formal Model

这里写图片描述

Utility Matrix
这里写图片描述
上图是一个Utility Matrix的例子,A-D表示用户,矩阵中是用户对不同电影的评分。推荐系统的目标就是推测出空白处的评分。当然在现实场景中这个矩阵肯定是极其稀疏的,我们没必要推测所有空白栏的值,而是计算一部分评分较高的电影,作为根据用户喜好做出的推荐。

Key Problem

  1. 如何获取Utility Matrix中的R,即上例中的评分。
  2. 如何根据已有的用户评分推断用户对未评分item的喜好度。(主要关注高分部分)
  3. 如何评价推荐系统的推荐方法

下面来解决上述问题:

  1. Gathering Ratings获取评分

    • explicit
      ask people to rate items
      doesn’t scale: only a small fraction of users leave ratings and reviews

    • implicit
      Learn ratings from user actions

      • E.g., purchase implies high rating

      What about low ratings?

  2. Extrapolateing Utilities推断未知项
    主要的问题是utilities Matrix是非常稀疏的,而且许多用户没有对物品进行评分。
    推荐系统的推荐方法主要有三种:基于内容的,协同过滤以及基于隐含元素的。具体的方法实现在后面详细讲解。

  3. Evaluation将在后面的讲解。

Content-Based Recommendations

Main idea: 将与用户X打高分的物品相似的物品推荐给用户X。例如,有相同演员或导演的电影用户可能都喜欢,相似内容的文章或新闻用户可能都感兴趣以及将有共同好友的人推荐为好友等。
Sherryllll

Item Profiles
item profile 就是特定物品的特征,如电影的演员,导演,类型等特征就是电影的profile。
For each item,create an item profile.将item profile看作是一个向量。
因此,profile可以看成是item(document)的重要的特征或词。这个重要特征的选取往往使用的是TF-IDF。(TF-IDF的解释就不说了,可自行百度之)

User Profiles
根据已有的item profiles得到user profiles
Sherryllll
More Sophisticated aggregations possible

对于Boolean utilities Matrix,user profile的计算直接求平均即可。
但是对于任意数字评分,如1-5,由于不同用户的评分标准不同,则需要对数据进行一个归一化处理,图例:
这里写图片描述

有了这user profile x和item profile i后,要预测用户对于i的喜好,可以通过计算余弦相似度求得,即U(x, i)= con( θ)=(xi)/(|x||i|)

### 大规模数据集挖掘的技术与资源 #### 关于《Mining of Massive Datasets》 《Mining of Massive Datasets》是一本专注于大规模数据挖掘技术和算法的经典教材[^2]。该书由美国计算机科学家 Anand Rajaraman 和 Jeffrey D. Ullman 编写,涵盖了从基础到高级的数据挖掘方法。书中不仅介绍了如何高效处理海量数据,还提供了许多实际案例和应用场景。 以下是本书的主要内容和技术要点: 1. **MapReduce框架** MapReduce 是一种用于并行化处理大型数据集的编程模型[^2]。它通过分而治之的思想简化了分布式计算的任务分配和管理过程。对于初学者来说,《Mining of Massive Datasets》详细讲解了 MapReduce 的工作原理及其在数据挖掘中的应用实例。 2. **推荐系统** 推荐系统的构建依赖于协同过滤、矩阵分解和其他机器学习技术[^2]。这些技术能够帮助分析用户的偏好模式,并预测他们可能感兴趣的内容。此部分内容适合希望开发个性化服务的企业开发者或研究者。 3. **频繁项集挖掘** 频繁项集挖掘是一种发现交易数据库中常见组合的方法。Apriori 算法和 FP-Growth 算法是两个经典的解决方案,在零售业等领域具有广泛应用价值。 4. **聚类分析** 聚类旨在将相似对象归入同一组别,从而揭示隐藏结构[^2]。K-Means 方法是最常用的聚类工具之一;此外还有基于密度的空间聚类(DBSCAN),适用于噪声较多的情况。 5. **图挖掘** 社交网络分析通常涉及节点间关系建模以及社区检测等问题[^2]。PageRank 等链接流行度评估指标被广泛应用于搜索引擎优化领域。 6. **降维技术** 当面对高维度特征空间时,主成分分析(PCA)可以有效降低复杂度而不丢失过多信息量。这种方法特别有利于可视化展示或者加速后续运算操作。 除了理论阐述外,《Mining of Massive Datasets》也鼓励读者动手实践所学知识。每章节后面附带练习题目可以帮助巩固理解程度[^3]。 --- #### 其他值得阅读的大规模数据挖掘相关书籍 如果还想进一步扩展视野,则可考虑以下几部著作: - **《Data Mining: Concepts and Techniques》 by Jiawei Han, Micheline Kamber & Jian Pei** 这是一部全面介绍数据挖掘概念及其实现技巧的手册,覆盖范围广且深入浅出[^4]。 - **《Programming Collective Intelligence》 by Toby Segaran** 主要关注利用Python实现各种智能算法来解决现实世界难题,比如建立分类器、创建推荐引擎等实用功能[^5]。 - **《Hadoop: The Definitive Guide》 by Tom White** 如果计划采用 Hadoop 生态圈来进行超大容量文件存储与查询作业的话,那么这本书无疑是最佳入门指南[^6]。 --- ```python # 示例代码:简单实现 Apriori 算法的核心部分 def apriori(transactions, min_support=0.5): from collections import defaultdict item_counts = defaultdict(int) # Count individual items' frequency across all transactions. for transaction in transactions: for item in transaction: item_counts[item] += 1 num_transactions = float(len(transactions)) frequent_items = set([item for item, count in item_counts.items() if count / num_transactions >= min_support]) return frequent_items ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值