推荐系统数据集
推荐系统数据集的介绍, 下载, 处理, 用到一个写一个. BARS 提供了一套标准化流程, 非常好用.
git clone https://github.com/openbenchmark/BARS.git
注: 在运行预处理脚本时, 请注意修改脚本中的文件路径是否匹配.
CTR
Criteo
Criteo 是 kaggle 的一个比赛所用的数据集, 它总共有两个版本: 11 GB 大小的和 1T 大小的版本, 前者更为常用. 二者均包括 13 个 numerical 特征和 26 个 categorical 特征. 好像大家把这两部分分别记为 \(I_1, I_2, \cdots, I_{13}, \cdots, C_1, C_2, \cdots, C_{26}\).
通过 here 下载原数据集, 解压后包括:
- readme.txt
- test.txt
- train.txt
test.txt 中只有 13 + 26 特征, 不包含标签 (1 表示点击, 0 表示不点击), 故实际上仅使用 train.txt.
根据不同的训练集:测试集:验证集的划分, 可以得到如下细分的数据集:
Dataset Split | Total | #Train | #Validation | #Test |
---|---|---|---|---|
Criteo_x1 (7:2:1) | 45,840,617 | 33,003,326 | 8,250,124 | 4,587,167 |
Criteo_x4 (8:1:1) | 45,840,617 | 36,672,493 | 4,584,062 | 4,584,062 |
划分后的数据集包含:
- train.csv
- valid.csv
- test.csv
Criteo_x1
- 切换至数据目录下
- 下载数据
python download_criteo_x1.py
- 划分数据
python convert_criteo_x1.py
或者通过 Criteo_x1 直接下载划分好的数据.
Criteo_x4
- 切换至数据目录下
- 下载数据 (和 Criteo_x1 使用的是同一数据集)
python download_criteo_x1.py
- 划分数据
python split_criteo_x4.py
或者通过 Criteo_x4 直接下载划分好的数据.
Avazu
这也是一个 Kaggle 上的竞赛数据集. Avazu 是一家移动广告平台, 它提供了 11 天的移动广告数据, 其中前 10 天的广告数据记录了广告是否被 click 的标签, 是现在论文中用于训练和测试的部分.
其数据结构如下:
click: 0/1
- id: 严格来说不能算特征 (下面的数据应该都是去掉这个的, 至少 x1, x4 提及到了这一点)
- hour: format is YYMMDDHH, so 14091123 means 23:00 on Sept. 11, 2014 UTC. (Note: It is a common practice to bucketize the timestamp into hour, day, is_weekend, and so on.)
- C1: anonymized categorical variable
- banner_pos
- site_id
- site_domain
- site_category
- app_id
- app_domain
- app_category
- device_id
- device_ip
- device_model
- device_type
- device_conn_type
- C14-C21: anonymized categorical variables
故整体是 C1-C21 + id + hour 共 23 个特征.
Dataset | Total | #Train | #Validation | #Test |
---|---|---|---|---|
Avazu_x1 (7:1:2) | 40,428,967 | 28,300,276 | 4,042,897 | 8,085,794 |
Avazu_x2 (8:0:2) | 40,428,967 | 32,343,173 | 8,085,794 | |
Avazu_x4 (8:1:1) | 40,428,967 | 32,343,172 | 4,042,897 | 4,042,898 |
Avazu_x1
AFN 的配置, 包含 click 标签信息和 C1-C21 + hour 共 22 个特征 (我猜测应该是把 id 丢掉吧, 因为这个严格来说不能算作特征吧 ...).
Avazu_x2
AutoGroup 的配置.
Avazu_x4
AutoInt 的配置.
KKBOX
WSDM 2018 比赛所使用的数据集. 顾名思义, 该公司由亚洲的流媒体供应商 KKBox 提供. 该数据集旨在预测一个用户在一段时间内重复播放一首歌的概率. 在用户首次收听某首歌的一个月时间内, 倘若再次收听此歌, 则它将被打上标签 1, 否则为标签 0. 和之前的数据集一样, 仅训练集部分用于实验比较.
这部分内容参考 艾少SAI-KKBOX音乐——数据分析,用户研究与填坑指南
- recommendation.csv
特征信息 | 含义 |
---|---|
msno | 用户 id |
song_id | 歌曲 id |
source_system_tab | the name of the tab where the event was triggered. System tabs are used to categorize KKBOX mobile apps functions. For example, tab my library contains functions to manipulate the local storage, and tab search contains functions relating to search (不理解 ...) |
source_screen_name | 用户见到的页面 |
source_type | 用户首先在移动应用上播放音乐的入口点。 入口点可以是专辑,在线播放列表,歌曲等 |
target | 这是目标变量。target = 1表示在用户的听完一首歌后的一个月内重复收听,否则target = 0 |
- songs.csv
特征信息 | 含义 |
---|---|
song_id | 歌曲 id |
song_length | 长度 (ms) |
genre_ids | 歌曲类型, 可以有多个 |
artist_name | 表演者的名字 |
composer | 作曲家 |
lyricist | 作词家 |
language | 语言 |
- songs_name.csv
特征信息 | 含义 |
---|---|
song_id | 歌曲 id |
song_name | 歌曲名称 |
isrc | 国际标准录音代码,理论上可以用作歌曲的标识,但是可能有错误 |
- members.csv
特征信息 | 含义 |
---|---|
msno | 用户 id |
city | 用户所在城市 |
bd | 年龄 |
gender | 性别 |
registered_via | 注册方法 |
registration_init_time | 注册时间,格式为 %Y%m%d |
expiration_date | %Y%m%d |
Dataset Split | Total | #Train | #Validation | #Test |
---|---|---|---|---|
KKBox_x1 (8:1:1) | 7,377,418 | 5,901,932 | 737,743 | 737,743 |
KKBox_x1
通过 here 可以下载预处理后的数据.
Candidate matching
MovieLens
参考 [here] [PythonJavaC++go-movielens数据集介绍及使用python简单处理]
Movielens 描述了用户对于不同电影的一个偏好, 按照 1-5 星进行评分.
Moivelens 有好几个版本, 似乎 1M 的版本是学术研究中最为常用的:
-
MovieLens1M_m1, 包括
- rating.dat # 6040位用户对3900部电影的评分数据
- movies.dat # 用户的相关数据: UserID::Gender::Age::Occupation::Zip-code
- users.data # 电影的相关信息: MovieID::Title::Genres
MovieLens1M_m1
参考 here 所给出Train, Test, Valid 的分割.
MovieLens1M_m2
参考 here 所给出的分割.
Gowalla
参考 [普通网友-Gowalla(美国微博)好友关系数据集和签到数据集].
Gowalla 是一个基于位置的社交网站, 用户可以在其中通过签到来分享他们的位置. 此社交网络是无向的, 使用公共 API 所收集, 由 196,591 个节点和 950,327 个边组成. 在 2009 年 2 月至 2010 年 10 月期间,我们共收集了这些用户的 6,442,890 次签到。
- 好友关系数据: 形如
User1 | User 2 |
---|---|
0 | 1 |
0 | 2 |
1 | 3 |
... | ... |
比如第一行数据意味着 用户 0 和 用户 1 是好友关系, 因为是无向的, 故自然 用户 1 和 用户 0 也是好友关系.
- 签到数据, 包括:
- 用户 ID;
- 签到时间;
- 地点纬度;
- 地点经度;
- 地点 ID.
Dataset | User | Items | Interactions | Train | Test | Density |
---|---|---|---|---|---|---|
Gowalla_m1 | 29,858 | 40,981 | 1,027,370 | 810,128 | 217,242 | 0.00084 |
Gowalla_m1
通过 here 可以下载预处理后的数据.
Epinions
参考 [here].
Epinions 数据集是由一般消费者评论网站 Epinions.com 的 who-trust-whom 在线社交网络构建的. 网站成员可以决定是否相互"信任". 所有信任关系相互作用构成了 the Web of Trust. 结合评论的评级, 决定哪些评论可以被展现给用户. 它包含 75,879 个节点和 50,8837 条边.
Foursquare
参考 [here] [BJUTer_Lucia-Foursquare]
Foursquare 数据集包含不同城市的签到数据. 一个子集包含约 10 个月 (从 2012 年 4 月 12 日至 2013 年 2 月 16 日) 收集的在纽约和东京的签到. 它包含纽约市的 227,428 次签到和东京的 573,703 次签到. 每个签到都与它的时间戳、它的 GPS 坐标和它的语义信息 (由细粒度的场所类别表示) 相关联. 另一个子集包含从 Foursquare 收集的长期 (从 2012 年 4 月到 2013 年 9 月大约 18 个月) 全球规模的签到数据. 它包含 266,909 名用户在 3,680,126 个场所 (在 77 个国家/地区的 415 个城市) 的 33,278,683 次签到. 这 415 个城市是全球 Foursquare 用户查看次数最多的 415 个城市, 每个城市都包含至少 10K 次签到.
数据包含:
- users.dat # 由一组用户组成, 因此每个用户都有一个唯一的ID和代表用户家乡位置的地理空间位置 (纬度和经度)
- events.dat # 由一组场所 (例如, 餐馆) 组成, 以便每个场所都有唯一的 ID 和地理空间位置 (纬度和经度)
- checkins.dat # 标记用户在场所的签到 (访问), 每个签到都具有唯一的 ID 以及用户 ID 和场所 ID
- socialgraph.dat # 包含用户之间存在的社交图边缘 (连接). 每个社交关系由两个唯一的ID (first_user_id, second_user_id) 表示的两个用户 (朋友) 组成.
- rating.dat # 包含隐式评分, 用于量化用户对特定地点的喜欢程度
YooChoose
YooChoose 数据集来自于 RecSys 于 2015 年举办的比赛, 主要用于 session-baed 预测. 其包含
- yoochoose-buys.dat
- yoochoose-clicks.dat
- yoochoose-test.dat
yoochoose-clicks.dat 包括: Session ID, Time stamp, Item ID, Item category;
yoochoose-buys.dat 包括: Session ID, Time Stamp, Item ID, Item Price, Quantity.