算法工程师修仙之路:推荐系统实践(四)

本文介绍了如何利用GroupLens的MovieLens数据集进行推荐系统实验设计和评测。通过将数据集随机分为训练集和测试集,评估协同过滤算法的性能。主要评测指标包括准确率、召回率、覆盖率和新颖度,以确保推荐算法的效果和多样性。
摘要由CSDN通过智能技术生成

第二章 利用用户行为数据

实验设计和算法评测


数据集

  • 采用 GroupLens 提供的 MovieLens 数据集介绍和评测各种算法。

    • MovieLens 数据集有3个不同的版本,选用中等大小的数据集。
    • 该数据集包含6000多用户对4000多部电影的100万条评分。
    • 该数据集是一个评分数据集,用户可以给电影评5个不同等级的分数(1~ 5分)。
  • 研究隐反馈数据集中的 TopN 推荐问题,忽略数据集中的评分记录。也就是说,TopN推荐的任务是预测用户会不会对某部电影评分,而不是预测用户在准备对某部电影评分的前提下会给电影评多少分。

实验设计

  • 协同过滤算法的离线实验一般如下设计。
    • 首先,将用户行为数据集按照均匀分布随机分成 M 份(取 M=8),挑选一份作为测试集,将剩下的 M-1 份作为训练集。

    • 然后在训练集上建立用户兴趣模型,并在测试集上对用户行为进行预测,统计出相应的评测指标。

    • 为了保证评测指标并不是过拟合的结果,需要进行 M 次实验,并且每次都使用不同的测试集。

    • 然后将 M 次实验测出的评测指标的平均值作为最终的评测指标。

      # 下面的 Python 代码描述了将数据集随机分成训练集和测试集的过程:
      def SplitData(data, M, k, seed):
          test = []
          train = []
          random.seed(seed)
          for user, item in data:
              if random.randint(0, M) == k:
                  test.append([user, item])
              else:
                  train.append([user, item])
              return train, test
      
      • 每次实验选取不同的 k k k 0 ≤ k ≤ M − 1 0≤ k≤ M-1 0kM1)和相同的随机数种子 seed,进行 M 次实验就可以得到 M 个不同的训练集和测试集,然后分别进行实验,用M次实验的平均值作为最后的评测指标。
      • 这样做主要是防止某次实验的结果是过拟合的结果(over fitting),但如果数据集够大,模型够简单,为了快速通过离线实验初步地选择算法,也可以只进行一次实验。

评测指标

  • 对用户 u u u 推荐 N N N 个物品(记为 R ( u

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值