前言
文章转载自:https://www.cnblogs.com/shenxiaolin/p/8337913.html
推荐系统常用数据集
首先需要说明一下推荐系统数据中的几个类别:
- Item: 即我们要推荐的东西,如产品、电影、网页或者一条信息片段
- User:对item进行评分以及接受推荐系统推荐的项目的人
- Rating:用户对item的偏好的表达。评分可以是二分类的(如喜欢和不喜欢),也可以是整数(如1到5星)或连续(某个间隔的任何值)。 另外,还有一些隐反馈,只记录一个用户是否与一个项目进行了交互。
在文章The Nine Must-Have Datasets for Investigating Recommender Systems中介绍了推荐系统研究中的九大数据集。
1. MovieLens 【数据地址:https://grouplens.org/datasets/movielens/】(1M、10M、20M 共三个数据集)
MovieLens数据集由GroupLens研究组在 University of Minnesota — 明尼苏达大学中组织的。MovieLens是电影评分的集合,有各种大小。 数据集命名为1M,10M和20M,是因为它们包含1,10和20万个评分。MovieLens数据集中,用户对自己看过的电影进行评分,分值为1~5。MovieLens包括两个不同大小的库,适用于不同规模的算法.小规模的库是943个独立用户对1682部电影作的10000次评分的数据;大规模的库是6040个独立用户对3900部电影作的大约100万次评分。
2. Jester【数据地址:http://eigentaste.berkeley.edu/dataset/】
Jester是由Ken Goldberg和他在加州大学伯克利分校的小组发展的,包含150个笑话大约600万的评分。 像MovieLens一样,Jester评分由互联网上的用户提供。与其他数据集相比,Jester有两个方面是特殊的:它使用-10到10的连续等级,并且在量级上具有最高的评分密度。评分密度的意思是大概“平均每个用户评价多少个项目”?如果每个用户都对每个项目进行了评分,那么评级密度将为100%。 如果没有人评价过任何东西,那将是0%。 Jester的密度约为30%,这意味着一个用户平均对30%的笑话进行了评分。 作为比较,MovieLens 1M的密度为4.6%(其他数据集的密度低于1%)。当然不是那么简单。 不是每个用户都评价相同数量的项目。 相反,一些用户对许多项目进行评分,大多数用户只评价一些。
3. Book-Crossings【数据地址:http://www2.informatik.uni-freiburg.de/~cziegler/BX/】
Book-Crossings是由Cai-Nicolas Ziegler根据 bookcrossing.com 的数据编写的图书评分数据集。 它包含90000个用户的270000本书的110万个评分。评分范围从1到10,包括显式和隐式的评分。Book-Crossings数据集是最不密集的数据集之一,也是具有明确评分的最不密集的数据集。
4. Last.fm 【数据地址:https://grouplens.org/datasets/hetrec-2011/】
Last.fm提供音乐推荐的数据集。 对于数据集中的每个用户,包含他们最受欢迎的艺术家的列表以及播放次数。它还包括可用于构建内容向量的用户应用标签。Last.fm的数据聚合aggregated)后,有些信息(关于特定的歌曲,或某人正在听音乐的时间)会丢失。 然而,它是这些样本中唯一具有用户的社交网络的信息的数据集。
5. Wikipedia 【数据地址:https://en.wikipedia.org/wiki/Wikipedia:Database_download#English-language_Wikipedia】
维基百科是其用户撰写的协作百科全书。维基百科除了为最后一刻拼写学期论文的学生提供信息外,还为每个用户提供每篇文章的每个编辑的数据转储。该数据集已广泛用于社交网络分析,图形和数据库实现测试,以及维基百科用户行为研究。还可以将用户采取的编辑操作,作为隐性评分,表明他们因某些原因关心该页面,并允许我们使用数据集来提出推荐。
由于维基百科不是为了提供推荐者数据集而设计的,所以它确实存在一些挑战。其中一个是从页面中提取有意义的内容向量,但是幸运的是,大多数页面被很好地分类,为每个页面提供了一种类型。构建维基百科的内容向量的挑战与现实世界数据集的推荐面临的挑战相似。所以我们认为这是建立一些这样做的专门知识的好机会。
6. OpenStreetMap 【数据地址:http://planet.openstreetmap.org/planet/full-history/】
OpenStreetMap是一个协作的地图项目,类似于维基百科。 像维基百科一样,OpenStreetMap的数据由用户提供,整个编辑历史的完整转储也是可用的。 数据集中的对象包括道路,建筑物,兴趣点,以及您可能在地图上找到的任何其他内容。 这些对象由键值对标识,因此可以从中创建一个基本的内容向量。 然而,键值对是自由的,所以选择正确的设置是一个挑战。 一些键值对由编辑软件(例如“highway =住宅”)进行标准化和相同的使用,但通常它们可以是用户决定进入的任何内容 - 例如“FixMe !! = Exact location unknown”。
其他一些数据集:
1. Netflix
这个数据集来自于电影租赁网址Netflix的数据库。Netflix于2005年底公布此数据集并设立百万美元的奖金(netflix prize),征集能够使其推荐系统性能上升10%的推荐算法和架构。这个数据集包含了480189个匿名用户对大约17770部电影作的大约lO亿次评分。
2. Usenet Newsgroups
这个数据集包括20个新闻组的用户浏览数据。最新的应用是在KDD2007上的论文。新闻组的内容和讨论的话题包括计算机技术、摩托车、篮球、政治等。用户们对这些话题进行评价和反馈。
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.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是不相交的。