S34L02 – 准备数据

html

使用 Book Crossing 数据集构建推荐系统

目录

  1. 1. 选择数据集
  2. 2. 理解数据集结构
  3. 3. 数据准备与探索
  4. 4. 处理评分数据
  5. 5. 可视化评分分布
  6. 6. 为推荐系统做准备
  7. 7. 应对数据挑战
  8. 8. 下一步
  9. 结论

欢迎回来,朋友们!在本指南中,我们将深入探讨构建推荐系统,概述所涉及的基本步骤。为了简化我们的流程,一些初步步骤已经涵盖,使我们能够专注于构建系统的核心方面。

1. 选择数据集

对于我们的推荐系统,我们将使用 Book Crossing 数据集,这是一个专为图书推荐量身定制的综合集合。虽然 Movie Lens 数据集因其流行和用户友好性而常在 YouTube 等平台的教程中出现,但我们选择了一个更复杂的数据集,以提供对推荐系统更深入的理解。

数据集访问:

  • Book Crossing 数据集: 数据集链接 *(请确保将其替换为实际链接)*
  • 格式: 提供 SQL 转储或 CSV 文件。对于我们的目的,我们将使用 CSV 格式。

下载 CSV 文件后,您将找到三个主要文件:

  • Books: 大约 75 MB
  • Users: 大约 30 MB
  • Ratings: 大约 12 MB

鉴于数据集的大小,高效处理它至关重要,但其丰富的数据使其对于构建强大推荐系统来说非常有价值。

2. 理解数据集结构

Books 文件:

  • 字段: ISBN、书名、作者、出版年份、出版社、图片 URL 等。
  • 关键标识符: ISBN(国际标准书号) 作为每本书的唯一标识符,确保没有重复。

Users 文件:

  • 字段: 用户 ID、位置、年龄
  • 关键标识符: 用户 ID 唯一标识每个用户。

Ratings 文件(BX Book Rating):

  • 字段: 用户 ID、ISBN、图书评分
  • 重要性: 该文件将用户与他们评分的图书联系起来,构成我们的推荐系统的基础。

3. 数据准备与探索

我们将使用 PandasNumPy 进行数据操作,以及 Matplotlib 的 Pyplot 进行可视化。

加载数据:

探索数据:

  • Books: 包含每本书的详细信息,以 ISBN 作为唯一标识符。
  • Users: 包含用户的人口统计信息。
  • Ratings: 将用户与他们评分的书籍及评分分数进行映射。

4. 处理评分数据

Ratings 数据集至关重要,因为它将用户与他们的图书偏好联系起来。然而,在该文件中,用户 IDISBN 都不是唯一的键,这意味着:

  • 一个用户可以评分多本书。
  • 一本书可以被多个用户评分。

计算平均评分:

为了了解每本书的总体接受程度,我们将计算平均评分。

5. 可视化评分分布

理解评分的分布有助于识别潜在的偏差或数据稀疏性问题。

洞见:

  • 数据偏斜: 大量书籍被很少用户评分,而少数书籍则获得了数千次评分。
  • 影响: 这种不平衡可能影响推荐系统的性能,导致推荐更偏向于受欢迎的书籍。

6. 为推荐系统做准备

在构建推荐系统之前,创建一个适当结构化数据的 数据透视表 是必不可少的,通常将用户作为行,书籍作为列,评分作为值。

创建数据透视表:

7. 应对数据挑战

  • 稀疏性: 由于许多书籍只有很少的评分,实施能够处理或缓解稀疏性的技术至关重要,例如矩阵分解。
  • 冷启动问题: 对于新用户或没有评分的书籍,内容推荐或利用用户人口统计信息等策略可能会有帮助。

8. 下一步

在后续的教程中,我们将详细探讨构建数据透视表、应用协同过滤技术,并优化推荐系统,以有效应对数据集的复杂性。


结论

使用 Book Crossing 数据集构建推荐系统提供了全面的学习体验,突显了处理大型真实世界数据集的复杂性。通过理解数据结构,应对稀疏性等挑战,并有条不紊地准备数据,您为创建一个有效且可靠的推荐系统打下了坚实的基础。

编程愉快!

分享你的喜爱