秒懂算法 | 推荐系统常用数据集和验证方法

简介: 推荐系统常用数据集和验证方法

640.jpg


推荐系统常用数据集和验证方法

01、推荐技术简介

在大数据和人工智能时代,智能推荐系统和技术已经成为电商、资讯、娱乐、教育、旅游和招聘等众多在线服务平台的核心技术、标准配置和重要引擎,用于帮助用户从海量物品中快速地找到他们感兴趣的物品(例如商品、新闻、视频、课程、景点和岗位等),特别是用户不容易发现的长尾物品(tail items),有效地缓解了信息过载(information overload)问题。例如,抖音海外版TikTok推荐算法凭借其精准的视频推荐和有效的新领域拓展等功能,被《麻省理工科技评论》(MIT Technology Review)评为2021年全球十大突破性技术之一。需要说明的是,物品可以是一组物品(例如旅游套餐推荐等),而用户也可以是一群用户(例如户外集体活动推荐等)。同时,有些场景中用户也可以作为“物品”,例如社交平台上的好友推荐等,即给用户推荐有相似兴趣的用户。

如图1-1所示,在推荐系统中,通过对用户行为和其他信息的建模,相关算法和技术能较为有效地挖掘和学习用户的真实偏好,进而为用户提供精准的个性化推荐服务,这一过程可以简单地概括为“行为→偏好→推荐”。与信息检索中的“查询串­→­相关性→匹配”相比,至少可以看到两方面的重要区别:

(1)行为 vs. 查询串,前者关注用户与系统的互动,后者侧重用户主动查询的内容;以及

(2)偏好 vs. 相关性,前者关注用户的个性化需求,后者侧重查询串与候选文档(或网页)在内容方面的匹配程度。

640.png


在电商、资讯等众多应用场景中,相较于物品的描述、用户的画像和行为的上下文等其他信息,用户行为往往是与用户的偏好最直接相关的,例如,用户购买商品和阅读新闻等的行为较能体现用户的喜好和兴趣。因此,对用户行为数据的建模,受到了学术界和工业界的广泛关注,并且在知名学术期刊和学术会议上发表了大量相关的研究论文(请参见附录1和附录2)。美国国防部(Department of Defense, DoD)也在2014年将一个类似的问题——对人类行为的计算机建模——列为六大颠覆性基础研究领域之一。

在推荐系统领域,科研人员对用户的各种行为数据进行了较为深入的研究,主要包括以下几种类型:

(1)显式反馈,例如用户对物品的1~5分的数值评分(numerical rating)行为和喜欢/不喜欢的二值评分(binary rating)行为,以及点赞(like)等单值行为;

(2)隐式反馈(又称为单类反馈),例如用户对物品的点击(click)、浏览(browse/view/examination)、收藏(collect/favorite)、加入购物车(add-to-cart)和购买(purchase)等行为;

(3)异构反馈,例如同时包含两种或两种以上的显式反馈和/或隐式反馈;以及

(4)序列反馈,例如在隐式反馈中包含时序信息。

需要说明的是,在一个真实的应用中,为了更加准确地学习用户偏好,我们除了需要考虑上述的多类型行为(multi-type behavior),还可以考虑:

(1)多方面行为(multi-aspect behavior),如用户对物品的价格、质量和售后服务等不同方面的反馈;

(2)多粒度行为(multi-granularity behavior),如用户对商品、品牌、商家和品类等不同粒度的反馈;

(3)多模态行为(multi-modal behavior),如文本评论行为和数值反馈行为等;以及

(4)多领域行为(multi-domain behavior),如用户在电商、资讯和社交等不同领域的行为。

02、常用数据集和验证方法

1●常用数据集

1)MovieLens电影评分数据集

MovieLens电影评分数据集是推荐算法研究中最常用的数据集之一,由美国明尼苏达大学(University of Minnesota)的GroupLens研究组收集和发布,包含了多个在不同时间段内收集到的规模各不相同的子数据集,例如,最经典的由943个用户对1682部电影的100,000条评分记录组成的MovieLens 100K数据集(1998年4月发布)、由6040个用户对3952部电影的1,000,209条评分记录组成的MovieLens 1M数据集(2003年2月发布)和由71567个用户对10681部电影的10,000,054条评分记录组成的MovieLens 10M数据集(2009年1月发布),以及较新的在2019年12月发布的MovieLens 25M数据集,等等。考虑到推荐系统数据的稀疏性问题,MovieLens数据集中仅保留了评分记录数不小于20的用户的数据。并且,除了最基本的(用户ID,物品ID,评分,时间戳)信息外,MovieLens数据集还提供了一些用户的基本信息(性别、年龄和职业)和物品的描述信息(电影名、电影类型和上映日期)。

2)Netflix电影评分数据集

Netflix电影评分数据集也是一个推荐算法研究中常用的历史比较悠久的数据集,由电影租赁网站Netflix在2005年底发布,用于Netflix百万美元竞赛,以激励人们设计和开发更好的推荐算法。Netflix数据集中包含了在1998年10月至2005年12月期间,480189个匿名的Netflix用户对17770部电影的99,072,112条评分记录(包含评分日期),并且包含了电影的标题和发行年份信息。

3)Amazon电商评论数据集

美国加州大学圣迭戈分校(University of California, San Diego)的Julian McAuley教授在其个人主页上发布了他的研究团队收集的一些推荐系统数据集,其中有一个从知名电商平台Amazon上收集到的关于商品的评论数据集。Amazon数据集包含了1996年5月至2014年7月期间的约1.4亿条评论数据(每条评论由评分及文字评论等组成),并且给出了一些商品的描述、类别、价格、品牌和图像特征等信息。为了方便研究,研究人员还将原数据集按照商品类别分为24个较小的子数据集,例如,图书数据集、电子产品数据集和电子游戏数据集等。

4)天猫电商多行为数据集

天猫(Tmall)电商多行为数据集[1]是在IJCAI 2015竞赛中发布的,包含了一些天猫用户在“双十一”前6个月的匿名行为日志。一条行为记录对应的信息有:用户ID、物品ID、时间戳和行为类型等等。其中,记录的行为类型包括点击、加入购物车、购买和收藏。Tmall数据集还提供了用户的性别和年龄等信息,以及物品的类别、商家和品牌等信息。

2●验证方法

1)交叉验证法

对于不考虑序列信息的推荐问题,我们可以使用交叉验证法(cross validation)来对模型进行训练和验证,具体方法为:对于一个数据集,将它随机分成k(例如k=5)个大小相同的子集,每次取其中一个子集作为测试集,其余k-1个子集共同构成训练集,如此重复次,最后取在k个不同测试集上的结果的平均值作为最终的评估结果。注意,在一些算法中,我们可能需要先使用一个较小的验证集来寻找最优的模型参数,这种情况下,我们可以先固定一个测试集作为验证集来进行调参。

2)留一法

留一法(leave-one-out)是交叉验证法的一个特例,即将数据集中的每个样本都分到一个不同的子集中(即k等于数据集的大小),只选取一个样本用作测试,其余数据全部用于训练。在推荐算法研究中,留一法多用于引入序列信息的情况。通常,为了评估模型对用户行为序列的预测能力,我们将每个用户的最后一次行为记录划入测试集,其余记录划入训练集。注意,在进行正式的模型测试前,为了调节模型参数,可以将每个用户的倒数第二次行为记录划入一个新增加的验证集,然后使用剩下的训练集数据来训练模型并观察在各参数下的表现。

3)强泛化效果验证和弱泛化效果验证

在推荐技术的验证中,比较主流的模型效果验证方法包括强泛化效果验证和弱泛化效果验证。强泛化效果验证先对用户进行划分从而得到训练集用户图片、验证集用户图片和测试集用户图片,使得图片,再将每一位用户的交互数据划分到对应的数据中。显然,验证集用户和测试集用户的交互数据没有出现在训练过程中,因此模型需要具备较强的泛化能力才能获得较好的推荐效果。弱泛化效果验证则将每一位用户的交互数据按照设定的阈值划分到训练集、验证集和测试集中,因此验证集用户和测试集用户在训练过程中会以训练集用户的角色出现并参与到训练过程中。显而易见,弱泛化效果验证在验证和测试模型效果时,需要衡量模型在每一个用户上的推荐效果,当用户数目较多时,这种验证方式相较于强泛化效果验证而言效率较低,并且由于验证集用户和测试集用户在训练中已经出现并参与了训练,因此弱泛化验证对模型泛化能力要求相对较低。

目录
相关文章
|
1月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
|
2月前
|
机器学习/深度学习 数据采集 搜索推荐
Python基于深度学习算法实现图书推荐系统项目实战
Python基于深度学习算法实现图书推荐系统项目实战
101 3
|
20天前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
55 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
30天前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法
|
30天前
|
JavaScript 算法 前端开发
JS算法必备之Array常用操作方法
这篇文章详细介绍了JavaScript中数组的创建、检测、转换、排序、操作方法以及迭代方法等,提供了数组操作的全面指南。
JS算法必备之Array常用操作方法
|
1月前
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
20 1
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
|
1月前
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
103 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
30天前
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
131 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
2月前
|
机器学习/深度学习 编解码 监控
算法金 | 深度学习图像增强方法总结
**图像增强技术概括** 图像增强聚焦于提升视觉效果和细节,广泛应用于医学、遥感等领域。空间域增强包括直方图均衡化(增强对比度)、对比度拉伸、灰度变换、平滑滤波(均值、中值)和锐化滤波(拉普拉斯、高通)。频率域增强利用傅里叶变换、小波变换,通过高频和低频滤波增强图像特征。现代方法涉及超分辨率重建、深度学习去噪(如CNN、Autoencoder)、图像修复(如GAN)和GANs驱动的多种图像处理任务。
79 14
算法金 | 深度学习图像增强方法总结
|
1月前
|
数据采集 机器学习/深度学习 算法
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】