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的关联性越强。