2014-11-20
MovieLens数据集保存了用户对电影的评分。基于这个数据集,我们可以测试一些推荐算法、评分预测算法。
MovieLens 100k
该数据集记录了943个用户对1682部电影的共100,000个评分,每个用户至少对20部电影进行了评分。
**文件u.info
**保存了该数据集的概要:
943 users
1682 items
100000 ratings
**文件u.item
**保存了item的信息,也就是电影的信息,共1682部电影,其id依次是1、2、......、1682。文件中每一行保存了一部电影的信息,格式如下:
movie id | movie title | release date | video release date |
IMDb URL | unknown | Action | Adventure | Animation |
Children's | Comedy | Crime | Documentary | Drama | Fantasy |
Film-Noir | Horror | Musical | Mystery | Romance | Sci-Fi |
Thriller | War | Western |
注意,最后19个字段保存的是该电影的类型,一个字段对应一个类型,值为0代表不属于该类型,值为1代表属于该类型,类型信息保存在文件u.genre
中。
随便浏览了一下u.item
文件,发现基本是20世纪90年代的电影。
**文件u.genre
**保存了电影的类型信息。
**文件u.user
**保存了用户的信息,共有943个用户,其id依次是1、2、......、943。文件中每一行保存了一个用户的信息,格式如下:
user id | age | gender | occupation | zip code
**文件u.occupation
**保存了用户职业的集合。
下面介绍数据集的主要文件。
**文件u.data
**保存了所有的评分记录,每一行是一个用户对一部电影的评分,共有100000条记录。当然,如果某用户没有对某电影评分,则不会包含在该文件中。评分的分值在1到5之间,就是1、2、3、5这5个评分。每一行格式如下:
user id | item id | rating | timestamp
其中,item id
就是电影的id,时间戳timestamp是评分时间。我转换了下时间戳,也是在20世纪90年代。
文件u1.base
和文件u1.test
放在一起就是文件u.data
。将u.data
按照80%/20%
的比例分成u1.base
和u1.test
,可以将u1.base
作为训练集,u1.test
作为测试集。u2
、u3
、u4
、u5
系列文件和u1
类似。u1
、u2
、u3
、u4
、u5
的测试集是不相交的,它们可以用来做**(5折交叉验证)5 fold cross validation**。
**文件ua.base
和文件ua.test
**也是由u.data
拆分而来,在ua.test
中包含了每个用户对10部电影的评分,从u.data
去掉ua.test
得到ua.base
。ub.base
和ub.test
也使用了同样的生成方法。另外,ua.test
和ub.test
是不相交的。
MovieLens 1M
该数据集保存的是6040个用户对3952部电影的1000209个评分记录。具体可以参考其README
文件。
MovieLens 10M
71567个用户,10681部电影,10000054条评分记录,同时多了个用户为电影设置的标签。具体可以阅读其中的README.html
。
Tag Genome
该数据集下有三个数据文件。
**movies.dat
:**其每一行的格式是:
<MovieID><Title><MoviePopularity>
MoviePopularity
是在MovieLens中对该电影的评分次数。
**tag.dat
:**每一行的格式是:
<TagID><Tag><TagPopularity>
<TagPopularity>
是使用该Tag的用户数,一个用户最多算1次。
tag_relevance.dat
::每一行的格式是:
<MovieID><TagID><Relevance>
<Relevance>
的值在0和1之间,值越大,Tag与Movie的关联性越强。