1 绪论
1.1 研究背景与意义
自第三次信息化浪潮以来,随着大量移动终端的普及,数据的产生方式发生变革,数据呈现指数式增长。据统计,现如今抖音和 YouTube 等视频网站,每天更新的视频可达百万级以上;而对于用户量更加庞大的社交网络如 Facebook 和 Twitter 等,每天发布的动态就达几亿条。人们为了从互联网的海量数据中找到自己感兴趣的内容,需要耗费大量的时间和精力,信息过载给人们的生活带来了困扰[1]。
虽然用户可以使用搜索引擎,搜索出自己想获取的信息,但由于搜索出的结果中包含大量的杂乱数据,并且这些数据中大多不是用户真正想要的,还需要用户一条一条的进行筛选,此时用户的体验大打折扣[2]。并且在某些特定情况下,用户并没有很明确的需求,如在电影视频网站上观看电影时,用户并不知道想看什么电影,有时候也只是随意看看;或者是在听音乐时,用户只是想听一些自己没听过但可能很好听的音乐,由此推荐系统应运而生。
技术的革新,引领着时代的发展,推荐系统是大数据时代下标志性的产物。推荐系统的产生,通过记录用户的评分、浏览或者购买记录等等,然后再按照一定的策略对这些数据进行分析,从而得到用户可能感兴趣的信息,再推送给用户。这个过程与搜索引擎有所不同,用户在使用搜索引擎时是占主导地位的,并且搜索到的数据不仅很冗余,而且对所有用户都是一样的。而推荐系统则先是记录了用户的历史偏好行为,再通过分析这些数据才挖掘出用户的个人喜好;并且推荐系统可进行个性化推荐,即为每个用户推荐的信息会有所不同。推荐系统的出现弥补了搜索引擎在某些情况下的不足[3]。
推荐系统的出现还为企业带来了极大的商业价值。如推荐系统为亚马逊贡献了 25%到 35%的收益,不仅节约了用户的查找时间,提升了用户的体验,而且还刺激了经济消费[4]。现如今推荐系统已经广泛应用于邮件、电子商务、音乐、影视和社交网络等领域,极大的丰富了人们的生活。
......................
1.2 国内外研究现状
推荐系统自诞生以来,经历了漫长的发展过程。而推荐算法作为推荐系统的核心模块,经过几十年的发展,现如今呈现出百家争鸣的景象。推荐算法的发展主要可分为三大方向,即考虑物品自身属性的基于内容的推荐,考虑用户评分记录的协同过滤推荐以及多种算法相混合的混合推荐[7]。
(1) 基于内容的推荐
Pazzani 等人从物品的自身属性的角度,抽取出物品的部分特征,从而提出了基于内容的推荐算法[8]。该算法在提取了物品的部分特征后,再基于用户过去的行为记录提取出用户的偏好;然后将两者相结合再进行推荐。
(2) 协同过滤推荐
David Goldberg 等人在开发邮件过滤系统时,从用户的历史行为记录的角度考虑,提出了协同过滤推荐算法,并基于该算法开发出了 Tapestry[9]。Paul Resnick 等人基于协同过 滤推荐算 法,开发出了一 个新闻推 荐系统 GroupLens[10];后来又开发出了MovieLens,用于推荐电影[11]。Badrul Sarwar 等人基于用户的评分记录,并从物品的角度出发,从而提出了基于物品的协同过滤[12]。Greg Linden 等人提出了基于 Item-to-Item的协同过滤[13],该算法可进行实时推荐,Amazon 也将该算法应用到了电子商务领域,为用户推荐商品。Daniel Lemire 等人通过计算不同物品之间评分的平均偏差,从而提出了 Slope One 单类协同过滤[14]。
矩阵分解模型作为经典的协同过滤算法,发展至今有很多研究人员基于矩阵分解模型进行了改进。其中 Daniel Billsus 等人提出了奇异值分解(Singular Value Decomposition,SVD)[15],该模型通过特征值的变化,来判断矩阵的扰动大小。SVD 作为早期的矩阵分解算法,存在数据规模和计算效率的问题。后来 Simon Funk 等人提出了较为简单的矩阵分解模型 Funk-SVD[16],该模型将原始的矩阵分解为两个更加低纬的矩阵,并在模型中加入了正则化项,防止模型过拟合等。Daniel Lee 等人提出了非负矩阵分解 NMF [17],该模型认为矩阵进行分解后,其分量(隐特征)都应该大于 0。Ruslan Salakhutdinov 等人提出了概率矩阵分解 PMF [18],该模型在大型、稀疏的数据集上表现良好。
...................
2 相关理论介绍
2.1 常见的推荐算法
推荐系统离不开推荐算法。推荐算法的主要流程是,对用户或者物品的本身属性即基本信息,或者是对用户的行为数据等进行分析,然后从海量数据中找到相关性较强的用户或者物品,从而产生推荐结果。常见的推荐算法有考虑物品自身属性的基于内容的推荐,考虑用户评分记录的协同过滤推荐,以及多种算法相混合的混合推荐。接下来将简要介绍这些算法的原理。
2.1.1 基于内容的推荐
基于内容的推荐,其中内容指的是物品自身的内容,即物品的基本属性,比如物品有类型、长度和大小等基本属性。基于内容的推荐即根据自身的基本属性进行推荐,该算法仅仅与用户自身的评分等行为有关,与其他用户的行为无关。基于内容的推荐首先会从用户的历史行为中,挖掘出用户的偏爱特征,如用户喜欢观看科幻类的电影,或者观看某某演员主演的电影等等;然后再从众多物品中,找到与用户偏好较为接近或者相关性较强的物品,最后再推送给用户[30]。
基于内容的推荐的过程,类似于用户主动通过搜索引擎,查找自己感兴趣的内容,只不过基于内容的推荐实现了自动化,它已经提前从用户的历史记录中分析出了用户的偏好,省略了用户自己查找的过程[31]。基于内容的推荐原理图如图 2.1。
图 2.1 基于内容的推荐原理图
2.2 矩阵分解模型原理
提到矩阵分解模型,首先需要了解什么是矩阵,突然联想到令人叹为观止的《黑客帝国 3:矩阵革命》,该电影的片头就是一串串的数字矩阵。简单的理解,矩阵就像是一个结构化的魔方,魔方的每一小块放一个数字。不过矩阵可以是 2 维、3 维和多维的。
矩阵分解模型作为经典的协同过滤推荐算法,主要基于原始的用户评分记录。由于用户和物品的个数比较庞大,所以由用户评分记录所构成的用户评分矩阵是非常稀疏的。为了缓解矩阵的稀疏性,可以采用降维等方法,将高纬度的矩阵分解为多个更低维度的矩阵,这即是矩阵分解模型名字的由来。
经过漫长的岁月,矩阵分解模型发展至今有许多变种。最早的矩阵分解模型是奇异值分解(SVD),该模型将最原始的矩阵,分解为 3 个更低维度的矩阵。
由于该模型比较耗时,并且还依赖于稠密的评分矩阵,所以仅适用于较小规模数据集的场景,很难在实际系统中应用。由于 SVD 模型存在着一些问题,无法满足现实的需要,后来学术界又提出了Funk-SVD、BiasSVD 和 SVD++等模型,接下来将分别介绍这些模型的原理。
2.2.1 Funk-SVD 模型
在 SVD 模型之后,首先被提出的是 Funk-SVD 模型,该模型将原始矩阵 R 分解为两个更低维度的矩阵,即用户隐特征矩阵 P 和物品隐特征矩阵 Q,如图 2.7,该模型也被称为隐语义模型,也是现在很多矩阵分解算法的雏形[41]。由于该模型比较简单,且易于扩展,可以结合很多现实因素进行改进。
图 2.7 矩阵分解模型示意图
3 基于 IPUA-SVD++和 K-means 的混合推荐算法..................................20
3.1 分析与提出问题.....................................20
3.2 基于物品热度和用户活跃度的模型 IPUA-SVD++..........................22
4 实验与分析.....................................33
4.1 IPUA-SVD++模型的实验...................................33
4.1.1 实验环境...............................................33
4.1.2 实验过程与分析..........................34
5 总结与展望.........................................44
5.1 总结......................................44
5.2 展望....................................44
4 实验与分析
4.1 IPUA-SVD++模型的实验
4.1.1 实验环境
为了验证本章改进的 IPUA-SVD++模型,实验环境配置如下表 4.1。
表 4.1 实验环境配置
本实验主要基于用户评分记录表进行训练,以 ML-1M 数据集的用户评分记录表ratings.dat 进行说明,该表中的数据格式为如下表 4.2。其中使用到的信息有用户 id、电影 id 和评分,并不使用时间戳。在数据输入模块,首先需要进行预处理,将时间戳这一列去掉,同时检查是否有空值和非法字段等。
.........................
5 总结与展望
5.1 总结
本文首先搜集了推荐系统的具体应用场景,然后从三个方面简要概括了推荐算法的研究现状,并对常用的推荐算法的原理做了简单的介绍。对具体的算法,如矩阵分解模型和 K-means 聚类算法等进行了深入的研究,通过剖析这些算法的原理,不仅了解了不同算法的思想,而且还为新灵感的产生创造了源泉。然后尝试结合更多的因素,提出了自己的改进思路。本文提出了两种改进算法,具体如下:
(1) 提出了一种基于物品热度和用户活跃度的模型 IPUA-SVD++。该模型考虑了将隐特征转化为隐式反馈,然后再转化为物品在具体隐特征上的热度,即特征热度,优化了原来的模型,经过这样改进后,解决了 SVD++模型的执行效率和预测准确率。另外,该模型还考虑了物品的被评分次数以及用户的评分次数,引入了物品的热度和用户的活跃度。经过实验验证,IPUA-SVD++相比 SVD++而言,在执行效率和评分预测准确率方面都有所提升。
(2) 提出了一种基于 IPUA-SVD++和 K-means 聚类的混合推荐算法。该算法认为相似的用户很大可能会被推荐相似或者相同的物品,在 IPUA-SVD++模型之上,结合K-means 算法对用户进行聚类分析,充分考虑了最近邻用户的推荐列表。最终该混合推荐算法相比 IPUA-SVD++模型而言,其 top10 推荐的准确率提升了 6.4%,召回率提升了21%。
参考文献(略)