推荐系统 | 数据集分析

别看了,只是新手的笔记,很多都是错的!


文件说明

这些文件包含大约3,900部电影1,000,209个匿名评级,由2000年加入MovieLens的6,040名MovieLens用户制作。

评级文件说明
用户名:: MovieID ::评级::时间戳
推荐系统 | 数据集分析_第1张图片

  • UserID的范围在1到6040之间
  • MovieID的范围在1到3952之间
  • 评级为5星级(仅限全星评级)
  • 时间戳以秒为单位表示,因为时间(2)返回
  • 每个用户至少有20个评级

用户文件说明
用户名::性别::年龄::职业::邮政编码
推荐系统 | 数据集分析_第2张图片

  • 性别用男性表示“M”,女性表示“F”

  • 年龄选自以下范围:

    • 1:“18岁以下” * 18:“18-24” * 25:“25-34” * 35:“35-44” * 45:“45-49”
    • 50:“50-55” * 56:“56+”
  • 职业选自以下选择:

    • 0:“其他”或未指定 * 1:“学术/教育者” * 2:“艺术家” * 3:“牧师/管理员” * 4:“大学/研究生” *
      5:“客户服务” * 6:“医生/保健” * 7:“执行/管理” * 8:“农民” * 9:“家庭主妇” *
      10:“K-12学生” * 11:“律师” * 12:“程序员” * 13:“退休” * 14:“销售/营销” *
      15:“科学家” * 16:“自雇人士” * 17:“技师/工程师” * 18:“匠人/工匠” * 19:“失业” *
      20:“作家”

电影文件说明
MovieID ::标题::流派
推荐系统 | 数据集分析_第3张图片

  • 标题与IMDB提供的标题相同(包括 发布年份)
  • 流派是由管道分隔的,可从以下类型中选择:
  • Action
  • Adventure
  • Animation
  • Children’s
  • Comedy
  • Crime
  • Documentary
  • Drama
  • Fantasy
  • Film-Noir
  • Horror
  • Musical
  • Mystery
  • Romance
  • Sci-Fi
  • Thriller
  • War
  • Western
  • 由于意外重复,某些MovieID与电影不对应 条目和/或测试条目
  • 电影大多是手动输入的,因此可能存在错误和不一致

构造样本数据

第一想法

根据ratings.dat(用户名:: MovieID ::评级::时间戳),由用户名得到该用户的性别、年龄等信息,由MovieID得到电影的信息,再加上时间戳,构成x,评级则为y。

用户名 性别 年龄 职业 邮政编码 MovieID 标题 流派 时间戳 评级
[1,0,0…]数据集的大小 1/0 [1,0,0,0,0,0,0] [1,0,0…] length=21 123456 [1,0,0…]数据集的大小 HAHA [1,0,1…] length = 18 978301368 0~5

查阅资料+实践后

参考在MovieLens 1M数据集上使用深度学习进行评分预测和 TensorFlow实战——个性化推荐对数据进行改进:

推荐系统 | 数据集分析_第4张图片
在这里插入图片描述
在这里插入图片描述

由于标题可以由MovieID推出,所以去掉标题。
由于我们使用的是FM,需要把x弄成由0和1构成的矩阵,所以对于数值比较小的年龄、职业,使用独热编码,而数值很大的用户名和MovieID则转成二进制 。。。不能转成二进制,否则正确率低得可怕。。。!直接用独热编码:

用户名 性别 年龄 职业 MovieID 流派 评级
one-hot(0~6040) 1/0 one-hot(0~6) one-hot(0~20) one-hot [1,0,1…] length = 18 0~5

经验

1.编码不能直接用原数字,因为它太大了,预测值也会要么很大要么很小,很难调整,也不能用二进制,虽然看起来二进制很省空间,但是用它准确率最多40%,换成独热编码立马上90%(虽然只是训练集)。

2.正则项是要加上的,真的会过拟合,训练集准确率都100%了,测试集还是10%。。

3.对了,对于特征要有选择,那种可以由别的特征推出来的就不要加上了

你可能感兴趣的:(推荐系统)