赞
踩
随着互联网和电子商务的发展,个性化推荐技术逐渐成为一种新型的内容提供方式,得到越来越多研究者的关注。目前,几乎所有大型电子商务系统、网络流媒体等都在使用各种形式的推荐系统,它的出现有效地解决了用户如何从海量数据中获取相关信息这一难题。然而,用户在不同的时间段会有不同的兴趣,随时间而变化,如何通过捕捉用户的兴趣变化来提高推荐质量成为了当今推荐系统的挑战。同时由于信息爆炸产生的大量数据已经超出了单机环境的处理极限,系统的可扩展性面临巨大压力。
首先,针对推荐质量与时间相关的特性,本文重点研究了基于聚类和时间因素的协同过滤推荐算法。利用用户行为数据中的时间信息对传统协同过滤推荐算法进行改进,提出新的相似度计算方法。同时引入聚类算法,充分挖掘用户的兴趣,提高推荐准确率。
然后,因为基于协同过滤推荐算法无法通过高阶特征交互来学习复杂的用户项目评分,本文提出基于大数据的CNN-DSCK推荐算法。所选应用的CNN-DSCK架构,通过在多个内核上进行深度卷积并在最后组合来利用产品评论来模拟用户偏好和项目属性。顶部的融合/联合层用于从每个网络中通过不同内核获得的特征中推断出最有影响力的特征,以进行最终评级。
最后,为了验证本文所提出的理论方法的可行性,进行实验检测。实验结果表明,CNN-DSCK 在七个公开可用的基准数据集上的预测精度方面取得了卓越的性能,并且优于各种最先进的基线方法。通过基于真实的电商数据的实验,验证该系统的可扩展性以及实时性。
关键词:推荐系统、协同过滤、聚类、高阶特征交互、CNN-DSCK
With the development of the Internet and e-commerce, personalized recommendation technology has gradually become a new type of content providing method, which has attracted more and more researchers' attention. At present, almost all large-scale e-commerce systems, network streaming media, etc. are using various forms of recommendation systems, and its emergence effectively solves the problem of how users obtain relevant information from massive data. However, users have different interests in different time periods, which change with time. How to improve the recommendation quality by capturing the changes of users' interests has become a challenge for today's recommendation systems. At the same time, the large amount of data generated by the information explosion has exceeded the processing limit of the stand-alone environment, and the scalability of the system is under enormous pressure.
First, in view of the time-related characteristics of recommendation quality, this paper focuses on the collaborative filtering recommendation algorithm based on clustering and time factors. The traditional collaborative filtering recommendation algorithm is improved by using the time information in the user behavior data, and a new similarity calculation method is proposed. At the same time, a clustering algorithm is introduced to fully tap the interests of users and improve the accuracy of recommendation.
Then, because collaborative filtering-based recommendation algorithms cannot learn complex user item ratings through high-order feature interactions, this paper proposes a big data-based CNN-DSCK recommendation algorithm. The selected applied CNN-DSCK architecture leverages product reviews to model user preferences and item attributes by performing depthwise convolutions on multiple kernels and combining them at the end. A fusion/union layer on top is used to infer the most influential features from the features obtained by different kernels in each network for the final rating.
Finally, in order to verify the feasibility of the theoretical method proposed in this paper, an experimental test is carried out. Experimental results demonstrate that CNN-DSCK achieves superior performance in prediction accuracy on seven publicly available benchmark datasets and outperforms various state-of-the-art baseline methods. Through experiments based on real e-commerce data, the scalability and real-time performance of the system are verified.
Keywords: Recommendation System; Collaborative filtering; Clustering; Higher-order feature interaction, CNN-DSCK
第三章 基于聚类和时间因素的推荐算法................................................................... 17
第四章 基于大数据的分布式推荐算法设计............................................................... 27
4.7.1 基于Mapreduce的物品相似度计算.................................................................... 37
4.7.2 基于Mapreduce的聚类算法设计........................................................................ 42
攻读硕士学位期间取得的研究成果.............................................................................. 55
得益于计算机技术与网络技术的迅猛发展,互联网在过去20年里得到了飞速发展。随着web2.0时代的到来,网民的数量急剧增加,移动设备的普及进一步加剧了这一现象。根据CNNIC的最新数据[1]显示,到目前为止,中国的互联网用户已达10.32亿,互联网普及率达到73%。在2021年中国新增网民接近4296万人,增长率为2.6%。从这份数据中本文同样可以发现,中国网民越来越多的使用手机来上网,截止到2021年12月底,中国通过手机上网的人数达到10.29亿之多,在中国的网民中有99.7%的人通过手机来上网。随着互联网迈向web2.0时代,互联网上的每一个用户不仅是信息的获取者,同时也是信息的生产者;用户既是网站内容的浏览者,也是网站内容的制造者。正是这种转变加速了大数据时代的到来。
大数据给本文的生活创造了多样性的同时也带来“信息过载”的困扰。为了解决这一困扰,人们研发了搜索引擎,来帮助用户从大数据中获取有价值的信息。但这还远远不够,因为搜索引擎需要用户提供信息以获取用户的搜索意图,用户可获取的信息限定在其己知的信息范围中,而不能帮助用户找到其不知道但有价值或感兴趣的内容。推荐系统[2]能够从一定程度上弥补搜索引擎的缺陷,成为继搜索引擎技术之后的又一个解决信息过载问题的利器,具有广泛的应用场景和商业价值。自从 Netflix成功举办的Netflix Prize大奖赛以来,推荐算法成为了各个公司的热门研究方向。今天,推荐系统已成为了互联网应用的重要组成部分,Amazon、Google News、今日头条、快手、淘宝、百度、京东等众多互联网公司都通过采用推荐算法来提高用户体验,增加商业收益。据相关数据显示[3],亚马逊使用的推荐系统为其营业收入贡献了35%左右,由此可见推荐系统蕴含的巨大商业价值。
随着社交网站和电子商务网站的发展崛起,推荐系统面临一些新的挑战:1)可扩展性。随着互联网的高速发展,每天产生的数据量巨大,用来做推荐的数据将会越来越多,已经超过了单机处理能力的极限,在大数据场景下,推荐系统和其他系统一样,不单要考虑用户可以容忍的响应时间,还要考虑系统在存储方面的问题。2)准确性。用户的兴趣会随着时间发生变化,如何捕捉用户兴趣的变化是提高推荐系统准确率的关键。同时随着移动互联网的快速发展,网民的上网设备正在向手机端集中,受移动设备屏幕的限制,信息呈现给用户的机会变少,只有提升推荐准确率才能获得更好的用户体验。3)实时性。传统的个性化推荐系统都是定期对数据进行分析,然后更新模型,再基于新的模型进行推荐。但用户的行为是在实时改变的,用户最近的行为反应了用户的兴趣,如果不能实时捕捉用户的行为,更新推荐模型,推荐的结果可能不会非常精准。如何使得推荐系统更加具有实时性,更加能够反应用户当前行为是当前推荐技术面临的挑战。
国外研究机构提出了用户兴趣衰减模型来拟合用户的兴趣漂移从而提高推荐的准确率,提升用户体验。在大数据处理方面,通过学术界和工业界的不断创新,得出了许多优秀的大数据处理方案,同时也相继诞生了许多优秀的大数据处理平台,如批处理平台Hadoop[4],流式处理平台Storm[5]等。为了解决大数据处理过程所面临的可扩展性和实时性,工程师Nathan Marz在2011年提出了大数据架构Lambda[6],该架构的设计目标就是解决实时大数据系统中存在高延时以及可扩展等问题,因此该架构在解决实时推荐方面有很大优势。
自1997年Hal R.Varian和Paul Resnikc提出推荐系统[7]以来,人们对推荐系统的研究就从未停止,而且随着近几年电子商务和互联网不断发展,推荐系统越来越受到人们的重视,功能不断强大,应用规模也随着扩大。在工业界,协同过滤推荐算法被应用于早期的推荐系统如Grouplens8[8]、PHOAKS[9]、 Jester[10]以及Amazon网站[11]等,而且都取得了巨大成功。当前,绝大多数的商业系统仍广泛釆用协同过滤推荐算法,这是因为该算法与基于内容的推荐算法有本质上的区别,它独立于具体的推荐内容,可以处理用户行为数据并向用户推荐各种项目,如商品、电影、音乐等。与其他推荐领域的算法相比,基于协同过滤的推荐算法简单易实现。协同过滤是个性化推荐算法当中研究和应用最为广泛的技术,该算法主要通过对用户之前的日志数据进行分析建立模型拟合他的兴趣来为其做推荐。基于协同过滤机制进行推荐的算法按照生成结果的方式不同分为启发式的和基于模型的。其中启发式的推荐算法简单易于实现,成为主流的推荐算法。在启发式的协同过滤算法中,相似度计算方法关系到推荐结果的准确性,Nathan等[12]通过加入了时间信息来拟合用户的兴趣衰减。Xue[13]等引入聚类技术对用户做预处理,然后对相似的用户计算相似度。
(1)可扩展性问题研究现状
协同过滤推荐技术在可伸缩性方面效果较差,随着处理的数据量越来越大,推荐系统的计算能力,可扩展性和实时性都受到限制。为了解决推荐系统的可扩展性,专家和学者提出了很多解决方法,如通过奇异值分解和主成分分析来降低数据的维度。但上述方法在处理数据的过程中都会丢失部分信息,从而影响推荐精度。而且上述方法都是在单机上实现,受到单机计算能力的限制。近年来,随着大数据平台的提出,使得推荐算法在可扩展性方面取得很大突破。Zhao等[14]在分布式平台Hadoop上实现了基于用户的协同过滤推荐算法。Sebanstian[15]等提出利用MapReduce实现了基于相似性邻居的推荐算法。Muqeet Ali[16]等在Storm和Hadoop平台上实现了基于隐语义模型的推荐算法。除此之外,Google News、Youtube都在它们的商业推荐系统使用到大数据平台进行分布式算法。
(2)实时性问题研究现状
在实时性方面,工业界研究居多,如Netflix 公司的3层推荐架构[17]以及Google公司的新闻推荐系统架构[18]都能有效地解决实时推荐的问题。实时个性化推荐算法一般分为两部分:实时在线计算部分和离线计算部分。离线部分在分布式平台上对数据进行处理,然后训练出模型;实时在线计算部分处理少量的增量数据,生成推荐结果并更新用户模型。在目前的实时性推荐架构中,离线模块一般都采用分布式批处理工具,如Hadoop平台,而在线模块都釆用分布式流式处理工具,目前主流的有Yahoo开发的S4分布式流式处理平台,BackType开发的Storm实时计算框架,UC Berkeley AMP Lab开发的Spark通用并行计算框架[19]。其中Storm为了方便处理持续不断的流数据而设计,弥补了批处理在实时性方面的缺陷,其主要应用在在线分析,在线机器学习,持续计算等场景中。
(3)时间因素问题研究现状
自Netflix大奖赛以来,关于时间因素对推荐准确率的影响得到了许多学者的关注。Netflix大奖赛的冠军得主Koren在LFM(latent factor model)隐语义模型[20]中引入时间因素,拟合用户随时间变化的兴趣漂移以及项目的季节效应,更好的捕获用户在某一时间段的兴趣,将系统推荐的准确率进一步提高。国内学者项亮将用户兴趣分为长兴趣和短兴趣,并通过引入会话节点来对用户项目二部图模型进行改进得到了能捕捉用户长短期兴趣的时间段图模型。Neal Lathia博士也对推荐系统中时间因素的影响进行深入的研究[21]。邢春晓[22]从用户的兴趣随时间变化的角度出发,提出了一种基于协同过滤算法改进的推荐算法来捕捉用户的兴趣漂移,从而提高系统的准确率。由于基于协同过滤的算法在数据稀疏性,可扩展性与冷启动等方面表现不佳,并且随着用户数目和物品数目不断增多而变得十分耗时,为了克服这些问题,许多学者将聚类算法引入推荐系统中,在保证推荐结果准确率的同时大大提高最近邻的搜索效率。O' Connor[23]提出了先对物品进行聚类然后再使用协同过滤机制进行推荐的算法,该算法通过对物品进行聚类,然后从与物品相似的几个类中进行筛选,从而减少了计算量。Wang[24]从用户的角度出发,以评分数据库为基础,利用K-Means算法对用户进行聚类,有效缓解了数据的稀疏性问题并提升了系统的准确率。本文同样提出了一种考虑时间因素和聚类算法的动态推荐算法。
尽管协作过滤方法(Koren 等人,2009 年,Salakhutdinov 等人,2007 年,Deshpande 和 Karypis,2004 年)在推荐方面仍然很流行,但它们也有一些局限性。首先,在稀疏数据的情况下,大多数 CF 方法的性能会显着下降。其次,他们无法解决冷启动问题(Wan & Niu,2018 )。产品评论、用户和项目描述等文本信息是许多推荐系统中最流行的辅助信息。因此,利用文本评论来解决这些关键限制已成为热门研究课题。
在过去的几年里,已经做了很多工作,利用文本评论来提取有用的信息来提高评分预测性能,例如 HTF ( McAuley & Leskovec, 2013 )、CTR ( Wang & Blei, 2011 )、RBLT ( Tan et al., 2016 )、RMR ( Ling, Lyu, & King, 2014 ) 和 TopicMF ( Bao et al., 2014 )。这些作品将主题模型集成到其框架中,以从文本中提取潜在的主题因素。隐藏因素作为主题 (HFT) 采用类似 LDA 的技术从用户或项目评论中学习潜在方面。与使用评论或评级的方法相比,该模型获得了显着改进。同样,CTR 采用类似于LDA的技术来学习潜在方面(谭等人,2016 年)。还采用主题建模技术从评分提升文本评论中发现主题特征作为潜在因素。这些潜在主题因素随后被集成到矩阵分解(MF) 框架中以推断项目偏好。RMR 也是一种主题建模技术,用于发现从项目评论文本和高斯混合到模型评级的主题因素。该模型利用了来自评级和评论的信息。RMR 与 HFT 的不同之处在于它使用主题建模来利用项目评论,并将主题与评级维度对齐以提高预测性能。TopicMF (鲍等人,2014)。Yang、Yu、Liu、Nie 和 Wang (2016)使用 LDA 对从评论中提取的方面术语进行聚类。张量分解策略用于首先自动推断权重,然后根据方面评级和权重对项目进行总体评级。协作深度学习 (CDL) ( Wang, Wang, & Yeung, 2015 ) 是第一个在堆叠去噪自动编码器(SDAE) ( Vincent, Larochelle, Lajoie, Bengio, & Manzagol, 2010 ) 和矩阵分解之间建立关联的分层贝叶斯模型模型. SDAE 用于从文本和 PMF 中捕获隐式评分矩阵的潜在因素。这种方法优于完全依赖用户项目评级的模型。总体而言,上述研究有一个局限性,即这些方法中的文本相似性完全基于词汇相似性。这种方法不适用于英语评论,因为任何两个评论即使词汇重叠较少也可能在语义上相似。此外,评论是通过词袋表示的,因此无法保留评论中单词的顺序。此外,基于主题建模的方法存在可扩展性问题,无法处理新项目和用户,即冷启动场景。
最近,已经进行了各种尝试,利用基于深度神经网络的技术进行预测和推荐任务(Khan、Niu、Sandiwarno 和 Prince,2020 年)。一些作品用于将协同过滤与不同的神经网络结构相结合以提高预测精度(He et al., 2017 , He and Chua, 2017 , Wei et al., 2017)。他等人。(2017)提出了一种神经协同过滤 (NCF) 框架,该框架用神经架构替换 MF 的内积,以学习用户和项目之间的非线性特征交互。后来,神经分解机 (NFM) ( He & Chua, 2017) 被提议通过对高阶和非线性特征交互进行建模来增强分解机 (FM)。对于利用评论的方法,协作深度学习 (CDL) ( Wang et al., 2015 ) 采用分层贝叶斯模型,该模型对内容执行深度表示学习以及对评分矩阵的协同过滤。ConvMF ( Kim et al., 2016 ) 将卷积神经网络 (CNN) 集成到概率矩阵分解 (PMF) 中以进行评分预测。它利用项目描述文档来使用 CNN 提取上下文信息。深度协作神经网络(DeepCoNN) ( Zheng et al., 2017 ) 由两个并行卷积神经网络组成,最后通过 FM (Rendle, 2010 ) 用于评级预测。其中一个网络用于从用户评论文档中学习潜在特征,另一个网络用于从项目评论文档中学习潜在特征。然后,FM 用于理解潜在特征交互以进行评分预测。Transnets ( Catherine & Cohen, 2017 )通过引入额外的潜在层来扩展DeepCoNN 模型,以解决其中文本评论仅可用于训练且不可用于测试的限制。D-attn ( Seo et al., 2017 ) 使用CNN对用户偏好和项目属性进行建模来自用户和项目评论的双重可解释的本地和全球关注。最后,通过使用项目和用户嵌入的点积来评估评级。邢等人。提出了一种分层注意模型 HAUP ( Xing et al., 2019 ),它同时从评论和评分中学习用户和项目信息。Liu 等人最近提出了一项工作。(2020)以端到端的神经方式从评论和评级中学习用户和项目表示。同样,在最近的另一项工作(Khan、Niu、Nyamawe 和 Ijaz,2021 年)中,用户和项目表征学习是在端到端神经网络中利用评级、评论和元数据信息联合执行的。
2013 年,Laurent Sifre 在 Google Brain 实习期间开发了深度可分离卷积(Chollet,2017)。他在 AlexNet 中使用了它们,并观察到准确性和收敛速度方面的一些改进。还观察到模型尺寸显着减小。Inception V1 ( Szegedy et al., 2015 ) 和 Inception V2 ( Ioffe & Szegedy, 2015 ) 使用深度可分离卷积作为第一层。霍华德等人。(2017)使用深度可分离卷积来提出称为 MobileNets 的高效移动模型。Jin、Dundar 和 Culurciello (2014)和Wang、Liu 和 Foroosh (2016)还进行了一些相关工作,旨在减少使用可分离卷积的卷积神经网络的计算成本和大小。Chollet (2017)提出了一个名为 Xception 的卷积神经网络模型,它是对 Inception 的修改,完全基于用于图像分类的深度可分离卷积。与最先进的基于 Inception 的模块相比,实证结果验证了该模型的有效性。本文利用深度可分离卷积的强度从产品评论中捕获高阶和低阶语义特征。实证结果表明,与基线模型相比,它在捕获相关特征方面的有效性。
本文主要通过引入时间因素和聚类算法来提高推荐算法的准确率,同时在算法的可扩展性和实时性方面进行深入分析,着重研究了如何在分布式平台上实现推荐算法并对其性能进行优化。结合当前主流的大数据处理平台,设计了能在大数据环境下进行实时推荐的算法。具体研究内容如下:
1)引入时间因素和聚类技术改善推荐效果。针对用户兴趣随时间变化的特性,提出了一种基于时间衰减因子的相似度计算方法,并利用聚类算法对其进行聚类,再结合用户的兴趣偏好,深入挖掘用户架构与项目簇的关系以及用户与簇内项目的关系,最后得到用户对未评分项目的偏好度,根据偏好度排序从而得到最终的推荐结果。
2)所提出的架构 CNN-DSCK 通过在多个内核上进行深度卷积并在最后组合来利用产品评论来模拟用户偏好和项目属性。顶部的融合/联合层用于从每个网络中通过不同内核获得的特征中推断出最有影响力的特征,以进行最终评级。
3) 进行推荐准确性和实时性的相关实验。本文进行了 CNN 与多个内核的使用,并在以后组合以获得特征可能有助于提高评分预测的性能。从经验结果中可以看到,在评估数据集上,CNN-DSCK 的性能优于 CNN-DSC(没有组合内核),这证明了它们的使用是合理的。
第一章首先从课题的研究背景开始,介绍了在当前海量数据环境下研究推荐系统的意义以及推荐系统面临的问题。然后介绍了当前国内外对时间因素在推荐系统中的影响的研究现状,以及分布式平台在推荐系统中的应用情况,并阐述了本文的研究内容,最后描述了文章的组织结构。
第二章首先介绍了推荐系统的概念和定义,然后介绍了当前主流的推荐算法:基于内容进行推荐的算法,基于协同过滤机制进行推荐的算法,混合推荐算法,并分析了各个算法中存在的问题,以及相应的改进措施。
第三章针对用户兴趣衰减的特性,提出了一种考虑时间因素的推荐算法。首先在计算项目的相似度时引入时间因素,然后利用聚类算法对其做聚类,再结合用户的兴趣偏好,深入挖掘用户与项目簇的关系以及用户与簇内的项目关系,得到用户对未评分项目的偏好度,根据偏好度排序从而得到最终的推荐结果。最后通过实验验证了改进的推荐算法确实提升了推荐结果的准确率。
第四章提出了具有深度可分离卷积和组合内核(CNN-DSCK)的卷积神经网络架构,以利用文本评论对评级预测问题进行建模用户偏好和项目属性。所提出的架构使用深度可分离卷积从评论中提取潜在特征,并结合不同的过滤器,以最大化所提出模型的性能。为用户和项目学习的潜在因素然后被馈送到顶部引入的全连接层。该层从潜在(专业)特征中获得最有影响力的特征(高阶),然后通过回归层来估计评级。
第五章主要对本文进行总结,提出了当前研究工作的不足,并对下一步工作进行了展望。
随着信息技术和互联网的迅猛发展,用户产生的数据越来越多;与此同时随着 Web技术的不断发展,Web已经从数据展示平台渐渐的转变为数据分享平台。在现实应用场景中,如何让人们从海量的数据中找到他们想要的东西将变得越来越难。搜索引擎的出现,很大程度上缓解了这一难题,用户通过提供关键字来描述自己的需求,然后搜索引擎根据关键字为用户快速找到相关的信息。正如上文所述,用户使用搜索时必须提供关键字来描述自己的需求,但有时候用户并不明确自己的需求或者需求很难描述,就不能通过搜索引擎来获取有用的信息。同时,用户还可能会更希望获得符合个人兴趣的信息,这些都是搜索引擎不能解决的问题。在这样的背景下,推荐系统应运而生。
众所周知,推荐系统的作用就是为用户提供有用的信息,这点与搜索引擎相似。但是,由于搜索引擎存在天生的缺陷,即它需要根据用户的输入来帮助用户获取信息,导致它很难解决其他场景下的问题,如用户无法描述自己的需求以及用户的个性化需求。而推荐系统则不需要用户提供明确的信息,而是通过分析用户的历史数据来构建用户的兴趣模型,然后根据模型筛选出对用户有用的信息。
自诞生以来,关于推荐系统如何定义的问题,学者们各执己见。现在广泛使用的是1997年Resnick对推荐系统做出的描述性的定义[25]:将用户与信息联系起来,用户的信息作为输入,系统的推荐结果作为输岀,帮助用户筛选出对其有价值的信息,然后把这部分信息推荐给对应的用户。
推荐系统主要由3个部分组成:用户,推荐算法,推荐对象。推荐系统首先对用户的历史记录进行分析并对其兴趣进行拟合得到用户的兴趣模型,然后根据推荐对象的信息对其建模,最后根据不同的场景选择合适的算法来计算推荐列表,然后把它显示给用户。由于是根据用户的兴趣模型来筛选推荐对象,因此最后得到的推荐列表中的推荐对象都是用户可能感兴趣的推荐对象。
用户的兴趣模型蕴含着用户的兴趣爱好,系统在该模型的帮助下能更好的猜测用户的意图,从而帮助用户查询到更多对用户有用的信息。推荐对象随着推荐场景的不同而发生变化,当前的推荐场景包括电子商务、新闻资讯、电影、音乐等,这些领域都广泛釆用了推荐系统。在整个推荐系统中推荐算法最为关键,它的好坏关系着整个系统的用户体验。目前,工业界以及许多学者都对相应的算法进行了深入的研究,并提出了很多有效的算法,这些算法主要分为:基于内容进行推荐,基于协同过滤机制进行推荐以及混合推荐。
最近几年由于推荐系统的广泛应用,使得很多研究人员对其进行研究并得出了很多不同的推荐算法。本文把这些算法主要分成两类。第一种根据算法中用到的数据来划分,可以分为基于内容进行推荐的算法,基于协同过滤机制进行推荐的算法以及混合推荐算法。第二种是根据算法使用的模型来划分,可以分为基于邻域的模型,基于矩阵分解的模型和基于图的模型。本章将根据第一种分类方法来介绍。
推荐系统一般会利用不同的数据来分析。在基于内容进行推荐的系统中会通过分析物品或内容的信息,然后根据它们之间的相关性来进行推荐。在基于协同过滤机制进行推荐的系统中会分析用户的历史记录得到物品或者用户之间的相关性,再根据相关性信息来推荐。如果在系统中融合了多种方法来进行推荐,则称之为混合推荐。接下来将详细介绍这几种方法。
作为推荐系统中的一个重要方法,基于内容进行推荐的方法其基本思想就是分析推荐对象的元数据,该算法也被叫做“内容过滤”,它主要通过分析用户历史行为偏好,在内容中找出与用户行为偏好相似的项目再将其推荐给目标用户。基于内容的推荐技术主要依据就是信息检索技术和信息过滤技术的运用。目前很多推荐对象的信息都以文本方式来存储,而获取和过滤文本信息的技术比较成熟,可以将推荐对象的信息抽取出来并对其进行分析得到不同形式的数据,如通过抽取视频和音乐的内容信息并将其存储为关键词(标签)、特征向量等形式,然后就可以按照处理文本的方式处理这些信息。其中应用最广泛的就是TF-IDF方法,而基于此方法的向量空间模型也是当前最著名的物品内容建模方法。
基于内容进行推荐的方法的优点在于只需对当前用户的行为数据进行分析,每个用户的推荐结果都是根据它自身对推荐对象的偏好计算得到的,而不需要分析其他用户的行为数据,这使得该方法没有冷启动和数据稀疏性的问题,而且该方法还可以通过列出物品的内容特征向用户直观的解释为什么会推荐这些物品,改善系统的用户体验。除此之外,新物品进入系统后,通过提取该物品的信息得到其内容特征向量,根据该特征向量进行计算,使得新的物品可以立刻被推荐给对其感兴趣的用户。基于内容进行推荐的方法也存在缺陷,首先该方法提取物品信息时只能处理那些以文本形式存储的内容,对于其他形式的内容如视频、音频等则很难进行处理,目前在这方面还没有比较成熟的技术;其次由于方法本质上的缺陷,使得该方法只能为用户推荐与其当前兴趣相似的物品,而不能为用户推荐其他新的物品;最后由于该方法需要分析用户的历史记录,如果一个用户刚进入系统或者在系统中的记录很少,则很难为该用户进行可靠的推荐。
进入Web2.0时代,用户不仅是Web内容的消费者,而且越来越多的参与到Web内容的生产当中,正是这种转变催生了基于协同过滤机制的推荐方法。到目前为止,基于协同过滤机制进行推荐的方法是最成功,应用最普遍的方法。该方法的本质就是分析用户的历史记录数据来拟合用户的兴趣得到模型并在此基础上对用户做出推荐。其中基于用户的协同过滤方法(user-based collaborative filtering)在1994年由Konstan等创建的GroupLens首次提出并将其应用于新闻个性化推荐当中,该方法的原理是通过分析用户的历史记录得到各用户之间的相似度,并在此基础上构建用户相似度模型,然后根据该模型将相似用户感兴趣的项目推荐给目标用户。由于基于用户的协同过滤推荐算法在用户数量越来越大的情况下,计算用户兴趣相似度矩阵将越来越困难,其运算时间复杂度和空间复杂度的增长和用户数的增长近似于平方关系,同时基于用户的协同过滤很难对推荐结果作出解释。因此,著名的电子商务公司亚马逊提出了基于物品的协同过滤算法。该算法通过分析用户的历史行为数据来计算物品之间的相似度, 构建物品相似度模型,然后根据此模型为目标用户推荐和用户感兴趣的物品。由于该方法是通过分析用户之间的相关性来做推荐的,因此当系统中用户数量越来越大时,获取用户间的相关性矩阵就比较困难,算法的时间复杂度和空间复杂度都会呈指数增长。除此之外,该方法还有一个缺陷就是对推荐结果很难做出解释。为了解决这些问题,亚马逊的工程师从推荐对象的角度出发,提出了基于物品的协同过滤方法。该方法的原理是通过分析用户的历史记录获得物品间的相关性模型,然后根据此模型将和目标用户之前感兴趣的物品,相似的物品推荐给用户。
物品A |
用户A |
推荐 |
用户B |
物品B |
相似 |
物品C |
用户C |
图2-1基于用户的协同过滤机制
推荐 |
相似 |
物品A |
用户A |
用户B |
物品B |
物品C |
用户C |
图2-2基于项目的协同过滤机制
基于用户的协同过滤推荐算法假设喜欢类似物品的用户可能有相同或者相似的口味和偏好,也就是说用户可能会喜欢和他有相似兴趣的用户喜欢的物品。因此要为用户做出推荐,需要先找到和该用户兴趣相似的那些用户,然后根据这些用户对目标物品的评价来预测用户对该物品的感兴趣程度。一般基于用户的协同过滤算法主要包括两个步骤:(1)找到和目标用户兴趣相似的用户集合。(2)找到这个集合中的用户喜欢的且目标用户没有听说过的物品推荐给目标用户。步骤(1)的关键就是计算两个用户的兴趣相似度。计算相似度的方法有很多,这里使用余弦相似度计算公式,给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过正反馈的物品集合。那么u和v的兴趣相似度为:
(2-1)
得到用户之间的兴趣相似度后,取与目标用户相似度最高的前若干个用户作为最近邻用户,然后向目标用户推荐最近邻用户喜欢的物品。公式2-2描述了用户u对物品i的感兴趣程度:
(2-2)
其中,S(u, K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合, 是用户u和用户v的兴趣相似度, 代表用户v对物品 i的兴趣。
基于物品的协同过滤推荐算法假设用户可能会对和他之前喜欢的物品相似的物品感兴趣,该算法主要通过分析用户的行为记录计算物品之间的相似度,然后为用户推荐那些和他们之前喜欢的物品相似的物品。通常情况下基于物品的协同过滤推荐算法主要分为两步:(1)计算物品之间的相似度。(2)根据物品的相似度和用户的历史行为给用户生成推荐列表。由于该算法认为物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B,从这句话的定义出发,本文可以用公式2-3定义物品的相似度:
(2-3)
这里N(i)表示喜欢物品i的用户集合,N(j)表示喜欢物品j的用户集合。在得到物品之间的相似度后,基于物品的协同过滤推荐算法通过公式2-4计算用户u对一个物品j的兴趣。
(2-4)
这里N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品的集合, 是物品j和i的相似度, 是用户u对物品i的兴趣。从公式2-4中可以直观的看到和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得比较高的排名。
近年来,基于模型的协同过滤算法也成为了学术界研究的热点,也产生了很多的方法,如隐语义模型,基于矩阵分解的模型以及图模型。由于该方法通过使用原始的用户行为数据来建立模型,因此产生的模型存在滞后性,不能满足用户行为的实时性变化,在实际应用中较少釆用该方法。
基于协同过滤进行推荐的方法是目前使用最普遍的推荐方法,它的优点在于无需关心物品的内容,无论系统是否能够理解物品的描述都可以使用该方法,也就是说该方法是领域无关的,同时对物品或用户进行相似度建模很容易。同样的,该方法也存在一些缺陷,例如在冷启动和数据稀疏性方面存在问题。因为该方法是通过分析用户的历史记录来计算用户之间或物品之间的相似度的,因此对于没有交互记录的新用户或新物品则存在冷启动问题;而对于系统中已有的用户历史记录,在很大程度上都是以稀疏矩阵的方式存储,直接在稀疏矩阵上进行计算存在很多问题,例如耗时较长、计算结果不准确等。
因为上述的各个方法都有优缺点,为了提高系统整体的推荐效果,目前很多推荐场景都将不同的方法组合,进行混合推荐。由于基于内容和协同过滤机制进行推荐的方法简单易实现,而且推荐效果较好,因此当前很多系统都将两者进行组合,最常用的做法是将两种方法生成的结果按照某种方法进行组合,然后推送给用户。
将不同的方法生成的结果进行组合时需要注意所选的组合方法能够尽量消除各种方法的缺陷。目前最常用的混合推荐方法主要有以下几种:加权混合,分级混合,分层混合。
加权混合技术的原理是将不同算法的结果按照不同的权重进行组合,然后对其求和得到最终的结果。目前有很多加权模型,最常用的有如下几种:线性加权模型、LR(Logistic Regression) 、RBM(Restricted Boltzmann Machines) 、GBDT(Gradient Boosted Decision Trees)。其中线性加权模型最为简单,其他三种模型则相对复杂,但效果要好于线性加权模型,而且经常被应用于比赛中,在Netflix大奖赛上,最终获胜的队伍就是通过运用加权模型来组合不同算法的结果来提高推荐准确度。此外在前几届举办的KDD Cup竞赛中,来自台湾大学的参赛者将不同算法的推荐结果进行二次混合加权,取得了很好的推荐效果。在混合方法上,最简单的加权方法就是根据不同算法的推荐效果为其赋予一个固定的权值。然而固定的权值不能适应所有的上下文场景,因为对于算法来说,其在不同的场景下其推荐效果不同,固定权值的加权系统无法进行调整。当前应用最普遍的解决方法就是通过在训练集上进行训练得到模型,然后在测试集上验证生成的模型来动态的调整权值。
分级混合技术的原理是将不同的算法进行划分,划分的依据是根据不同的推荐场景以及算法自身的推荐效果。在进行推荐时,先使用推荐效果较好的算法,然后再釆用其他后续算法进行计算,最后将所有算法产生的结果组合作为最终的推荐结果返回给用户。在Top-N推荐场景中,由于需要为用户推荐较多的物品,而对于单个算法来说其推荐结果往往不够丰富,为了提高系统推荐的召回率,往往釆用分级混合技术,首先釆用推荐准确率较高的算法生成推荐结果,然后接着釆用其他后续算法进行计算并将计算结果与之前算法产生的结果进行组合,直到推荐列表中的物品数达到设定的阀值为止。
分层混合技术的原理是将前面算法的输出作为后续算法的输入,即将每个算法作为过滤器,对推荐对象进行不同粒度的过滤,这种技术经常应用于推荐结果与推荐对象数量相差很大的推荐场景中。通过前一个算法对推荐对象进行过滤生成中间结果,并将中间结果作为输入传给下一个算法进行过滤,经过层层筛选,最后获得的结果往往精度很高。考虑到系统的效率,一般在设计时往往将简单易实现并且耗时较少的算法放在最前面,用此方法先对推荐对象进行粗粒度的过滤, 然后逐渐釆用精度较高的算法进行过滤,由于该算法釆用之前算法的结果作为输入,因此在计算性能上要高很多,从而提高系统整体的运算性能。
最近,已经提出了许多基于神经网络的技术来从产品评论中获取潜在特征以进行评级预测( Kim 等人,2016 年,Zheng 等人,2017 年,Catherine 和 Cohen,2017 年,Xing 等人,2019 年) . 在Kim 等人,2016 年,Zheng 等人,2017 年,Catherine 和 Cohen,2017 年,采用卷积神经网络 (CNN) 架构,而在Xing 等人中。(2019)采用 Bi-GRU 分别从相应的用户和项目评论中提取用户或项目潜在特征。基于 CNN 的方法通过使用密集的方法来更好地理解评论的上下文词嵌入表示和局部窗口,从而显着改进了现有的基于 BOW 的评级预测方法。除了基于 CNN 的方法之外,Bi-GRU 方法还能够处理评论文本中的远程依赖。为了解决基于神经网络的推荐系统的可解释性限制, Seo 等人,2017 年,Xing 等人,2019 年合并了注意力机制来呈现更可解释的模型。
然而,现有的基于卷积神经网络的方法通常使用常规的顺序卷积操作来从评论中获取用户和/或项目潜在因素。因此,通过使用一个具有来自嵌入矩阵的 n-gram(窗口大小)的过滤器来捕获一个特征,就不可能利用多尺度特征的信息。Kim (2014)完成了使用多个过滤器(具有不同窗口大小)获得多个特征的先驱工作。一些最先进的方法 ( Zheng et al., 2017 ) 使用多个内核来捕获不同的特征以提取更多相关的潜在特征,但是并行使用它们的影响并没有得到太多利用。关于图像分类的一些研究(Chollet,2017 年)、图像去噪(Jia、Chai、Guo、Huang 和 Zhao,2018 年)和图像美学评估(Meng、Gao、Shi、Zhu 和 Zhu,2018 年)在他们的作品中使用了深度可分离卷积。受到Chollet, 2017和Meng et al., 2018的启发,在本文的工作中,本文在不同的卷积层中使用具有多个并行内核的深度可分离卷积(深度卷积后跟点卷积)提取高级、中级和低级特征。该技术仅在图像和视频分析中进行了测试,尚未在文本评论中用于评分预测。这是在评级预测中使用这种卷积技术的第一次尝试。
在本文中,受到郑等人的模型的启发。(2017),本文提出了具有深度可分离卷积和组合内核(CNN-DSCK)的卷积神经网络架构,以利用文本评论对评级预测问题进行建模用户偏好和项目属性。所提出的架构使用深度可分离卷积从评论中提取潜在特征,并结合不同的过滤器,以最大化所提出模型的性能。为用户和项目学习的潜在因素然后被馈送到顶部引入的全连接层。该层从潜在(专业)特征中获得最有影响力的特征(高阶),然后通过回归层来估计评级。据本文所知,CNN-DSCK 是第一个通过多个并行内核学习用户和项目的潜在特征的文本架构,每个内核上都有深度可分离的卷积。与基线方法相比,CNN-DSCK 的显着优势(Kim 等人,2016 年,Zheng 等人,2017 年,Seo 等人,2017 年)从评论中受益的是,它通过不同的内核相对更快地学习不同方面的优秀潜在特征。在 Yelp 和 Amazon 的七个真实世界数据集上的实验表明,CNN-DSCK在预测准确性方面几乎优于所有基线方法。
当推荐系统搭建完毕后,怎样来评价这个系统的效果?随着推荐系统的广泛应用,推荐系统的评测问题也得到了很多学者的深入研究。常见的评测指标有:准确度、覆盖度、多样性,这些指标都是通过线下数据计算得到的,还有些评测指标不能通过定量计算得到,而是通过用户的反馈描述来获得,如推荐结果的新颖性,系统的实时性等,下面将详细介绍这些评测指标。
作为推荐算法最重要的评价指标,推荐的准确度指标主要用来衡量算法的推荐结果的可信度。由于准确度指标的重要性,在工业界和学术界都对其进行了广泛的研究。准确度一般通过离线数据计算得到,目前最常用的方法是先对用户的历史记录进行预处理,接着将处理后的数据分为训练集和测试集,将训练集作为算法输入,通过计算得到用户的兴趣模型,然后将模型应用于测试集得到用户的预测行为,最后通过对比用户的实际行为和算法预测的结果得到准确度指标。
在不同的推荐场景中,推荐的准确度会有不同的衡量方法。
在评分预测场景中,一般通过均方误差(Root Mean Squared Error,RMSE)和平均绝对误差(Mean Absolute Error,MAE)来衡量预测结果的准确度。它们的定义如下:
(2-5)
均方根误差是测试集中所有评分的预测值与真实值之差的和再开方的均值,误差越小说明算法预测的越准确。
MAE釆用绝对值计算预测误差:
(2-6)
其中,u表示目标用户,i表示物品, 表示u对i的真实评分。由公式 2-6可知,平均绝对误差是测试集中所有评分的预测值与真实值之间误差绝对值之和的平均值,平均绝对误差可以很好评价一个算法整体的预测性能。
从上述定义可以看出RMSE通过引入平方项对预测存在偏差的评分加大了惩罚,这使得RMSE指标对系统的评测更加严格。而对于MAE评测指标,有研究数据显示,当系统中的评分都为整数时,则可以通过对预测结果取整来降低误差。
目前在大多数推荐系统中都是进行Top-N推荐,在这样的推荐场景中一般都会将用户可能喜欢的物品存放在一个推荐列表中展示给用户。在Top-N推荐场景中通常采用推荐的准确率和召回率来作为系统的衡量指标。文献[26]首次提出这两个指标并将其作为衡量推荐效果的评价指标。其中准确率主要表示用户有多大概率会对系统推荐的物品感兴趣,召回率主要表示系统中用户感兴趣的物品有多大概率会被推荐给用户,一般通过计算测试集中用户真正感兴趣的所有商品与系统推荐给用户的商品数量的比率来得到这两个指标,具体计算公式可由公式2-7和公式2-8表示:
(2-7)
(2-8)
其中R(u)表示根据用户在训练集上的行为给用户作出的推荐列表,T(u)表示用户在测试集上的行为列表。文献[27]指出系统的准确率和召回率两个指标一般呈负相关,而且与系统的推荐列表长度有关。其中准确率与推荐列表长度呈反比,而召回率与推荐列表长度呈正比。在实际的评测当中,为了更全面的评价系统的推荐效果,往往都会选取一组不同的推荐列表长度,然后计算出系统取不同推荐列表长度时的准确率和召回率,并将其以图的形式直观的呈现出来。
覆盖度指标[28]通常表示推荐列表中的物品占系统中所有物品的比例,可以用来衡量推荐系统对长尾物品的发掘能力。如果一个推荐系统的覆盖度比较低,那么这个系统很可能会由于其推荐范围的局限性而降低用户的满意度,因为低的覆盖度意味着用户可选择的商品很少。覆盖度尤其适用于那些需要为用户找出所有感兴趣的商品的系统。根据上文描述,可以将覆盖度指标简单的定义为系统为用户推荐的物品占系统中总的物品集合的比例,具体计算公式可由公式2-9表示:
(2-9)
其中,U为用户集合,i为物品集合,R(u)为用户u的推荐列表。从上式可以看出,系统给用户推荐的物品种类与系统的覆盖率呈正比,覆盖率越高,推荐给用户的物品种类越多,冷门物品就越有可能被展示给用户。通常对于一个推荐系统来说,仅仅只关注系统的准确率是没有多大意义的,因为当系统的准确率越来越高,那么可能最后推荐给用户的全是比较热门的物品,而不能发掘长尾物品。系统应该从用户的体验出发,同时关注算法的准确率和覆盖率,在这两者之间进行折衷来改善用户体验。
对于一个用户来说,其兴趣往往是比较广泛的,因此推荐系统给用户推荐的物品应该尽量覆盖用户的所有兴趣点,即推荐结果要有多样性。尽管用户的兴趣在很长的时间段内都是一样的,但具体到用户与系统进行交互的某一刻,其兴趣往往比较单一,那么如果系统的推荐列表只能覆盖用户的一个兴趣点,而这个兴趣点不是用户这个时刻的兴趣点,推荐列表就不会让用户满意。反之,如果推荐列表比较多样,覆盖了用户的大部分甚至整个兴趣点,那么就很有可能命中用户当前的兴趣,从而改善系统的用户体验。可见系统在为用户进行推荐时也应该考虑推荐结果的多样性。为了弥补这一缺陷,一些研究学者对推荐系统的多样性进行了深入研究,并提出了很多可行的方法[29,30,31]。
多样性主要用来描述系统生成的推荐列表中物品之间的差异。其定义如公式 2-10所示:
(2-10)
其中,R(u)为用户u的推荐列表,s(i,j)为物品i和物品j之间的相似度。得到单个用户的多样性后就可以计算系统的整体多样性,整个推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:
一个好的推荐系统不仅要有较高的推荐准确率,而且还应该确保尽量向用户推荐之前没有听说过的物品。假如系统向用户推荐了热门的物品,虽然这确保了推荐的准确度,但对于这些热门物品用户很可能早己经知道,因此用户会认为系统推荐的信息没有价值。即使推荐准确率很高的系统也不能保证用户对推荐结果满意。为了弥补基于推荐准确度评测指标的不足,相关学者提出了新颖性的评测指标[32]。0’scar Celma在其博士论文中研究了推荐系统新颖度的评测[33]。
推荐的新颖性指系统推荐给用户以前没有听说过的物品,该指标也是影响用户体验的重要指标之一。可以通过计算推荐结果的平均流行度来度量新颖性,因为越不热门的物品越有可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度比较低,那么推荐结果就可能获得较高的新颖性。但是,用推荐结果的平均流行度度量新颖性比较粗略,因为不同的用户没交互过的东西是不同的。因此,需要通过做用户调查来准确地统计新颖性。
在推荐对象当中,有些物品具有很强的时效性,如新闻资讯,微博等,这些物品需要在其还具有时效性时就推荐给用户。比如,新闻资讯网站给用户推荐昨天的新闻显然会影响用户的体验。因此,在某些应用场景中,推荐系统的实时性也是比较重要的一个指标。
推荐系统的实时性[37]主要体现在两个方面:第一,与用户行为相应的实时性,即推荐系统需要根据用户的行为变化来实时的更新用户的推荐列表。目前很多系统仍然釆用离线计算用户的推荐列表,然后再将结果展现给用户。由于离线计算需要处理庞大的数据,计算过程需要耗费的时间量级为天甚至月,这期间用户的行为早己发生变化,而系统给用户的推荐列表却没有变化,这种设计显然无法满足实时性。与用户行为相应的实时性,可以通过推荐列表的变化速率来评测。如果用户与系统进行交互后其推荐列表变化不大,或者没有变化,说明推荐系统的实时性不高。第二,新加入的物品能够及时的推荐给用户。对于新物品推荐能力的度量,本文可以利用用户推荐列表中当天新加的物品占总数的比例来评测。
本章主要介绍了与推荐系统相关的内容。首先阐述了推荐系统的概念以及主要的组成部分。然后介绍了当前主要的三大基本推荐算法。基于内容进行推荐的算法,基于协同过滤的推荐算法以及混合推荐算法,并分析了各个算法的优点和缺点。最后本章详细介绍了当前推荐系统的主要评测指标,为后面的实验做铺垫。
本章主要介绍基于聚类和时间因素的推荐算法TCItemCF。该算法结合了聚类推荐算法的优点,引入时间衰减函数,对传统协同过滤算法进行改进。该算法在计算相似度时引入时间因素,并利用聚类算法对其作聚类,再结合用户的兴趣偏好,深入挖掘用户与项目簇的关系以及用户与簇内的项目关系,最后得到用户对未评分项目的偏好度,并通过偏好度排序得到最终的推荐结果。
时间是一种重要的上下文信息,对用户兴趣有着深入而广泛的影响。用户在不同的时间段会有不同的兴趣[34],比如用户在白天和晚上的兴趣可能不同,用户在周末和工作日的兴趣可能不同,用户在节日可能会有特殊的兴趣,在不同的季节也会有不同的兴趣。比如随着年龄的增长,用户小时候喜欢看动画片,长大了喜欢看文艺片。一位程序员随着工作时间的增加,逐渐从阅读入门书籍过渡到阅读专业书籍。一个人参加工作了,工作后的兴趣和学生时代的兴趣相比发生了变化。那么,如果本文要准确预测用户现在的兴趣,就应该关注用户最近的行为,因为用户最近的行为最能体现他现在的兴趣。此外,对于被推荐的物品也是有生命周期的。一部刚上映的电影很可能被很多人关注,但是上映后不久可能就会被人们淡忘。刚刚发生的新闻事件随着时间的推移也会淡出人们的视野。因此,当本文决定在某个时刻给某个用户推荐某个物品时,需要考虑该物品在该时刻是否已经过时了。
由于用户阶段兴趣的影响,导致用户短期内交互的项目之间具有一定的相关性。传统的推荐算法在计算相似度时没有利用用户行为的时间属性,Yi[35]提出用户未来的兴趣主要受他近期兴趣的影响,所以推荐算法应该加重用户近期行为对最终结果的影响。基于上述观察,本文在计算项目相似度时考虑用户行为的时间信息,提出基于时间衰减的项目相似度计算方法。
在推荐算法中根据聚类的对象不同通常分为用户聚类和项目聚类两种。其中邓爱林[36]提出了一种基于项目聚类的协同过滤算法,该算法釆用K-Means算法对项目进行聚类,以用户评分数据库和聚类数目作为输入,最终得出K个项目类。然后在查询目标项的最近邻项目时不在全局项目空间中搜索,而是在与目标项最相似的几个类中搜索最近邻项目,通过计算相似度并按相似度大小排序得到候选推荐列表,最后利用公式3-1计算用户u对目标项目i的预测评分:
(3-1)
Wang[37]利用聚类算法将用户集合划分成K个簇,同一簇内的用户的喜好是比较相似的,而不同簇之间的用户喜好则不同,根据聚类结果对未评分的项目作初步的评分预测,计算公式如公式3-2所示:
(3-2)
该算法利用同一个用户簇里的每一个对项目i评过分的用户v的评分来预测用户u对项目i的初步评分。经过评分预处理后评分数据库的稀疏性就会有所缓解,然后在此基础上利用协同过滤算法进行推荐。
以上两种算法都只是简单使用了聚类结果,没有深入挖掘聚类结果的信息且均不能很好地提升推荐准确率,而且在作聚类时没有考虑时间因素。
本文结合了聚类推荐算法的优点,引入时间衰减函数,对传统协同过滤算法进行改进,提出了TCItemCF算法。该算法在计算相似度时引入时间因素,并利用聚类算法对其作聚类,再结合用户的兴趣偏好,深入挖掘用户与项目簇的关系以及用户与簇内的项目关系,最后得到用户对未评分项目的偏好度,根据偏好度排序从而得到最终的推荐结果。
在基于项目的协同过滤算法中,项目之间的关系是通过同时与这两个项目都有交互的用户数来衡量的。由于用户在短期内交互的项目之间具有更大的相关性,随时间间隔的增加,相关性会随之衰减,可以通过引入衰减函数来拟合这种关系。同时为了消除项目间用户集合的差异以及热门项目对相似度的影响,引入阻尼系数a。项目之间的相似度计算公式如3-3所示:
(3-3)
其中:a∈(0,1]为阻尼系数;N(i),N(j)分别表示与项目i, j交互过的用户集合;D(N(i), N(j))表示两个项目的用户集合之间的差异,若两个项目的用户集合完全相同,则定义其差异值为1,相应公式如3-4所示:
(3-4)
为时间衰减函数,定义如下:
(3-5)
其中b∈(0,1]为阻尼系数; 是用户u对物品i产生行为的时间。 函数的含义是用户对物品i和物品j产生行为的时间,间隔越大,则 越小。
本文计算推荐权值分两部分:
1)计算用户对项目类的偏好程度;
2)计算项目的类内权重。
在计算用户对项目类的偏好程度时基于如下假设:在一个项目类中,如果用户最近交互的项目占用户总共交互的项目数的比例越高,表示用户越有可能喜欢该项目类。这个假设包含两个条件:一是某个类中用户交互过的项目占用户总共交互过的项目数的比例要高,二是用户与这些项目的交互行为都是在最近发生的。只有同时符合了两个条件,结论的可信度才越大。
下面给出用户对项目类的偏好度的计算式:
(3-6)
其中 表示用户u在类c中交互过的项目占用户总共交互过的项目数的比例: 表示类c中的项目集合; 表示用户u交互过的项目集合。
(3-7)
其中: 表示用户u对类c访问的平均时间间隔;t表示用户u与系统最近一次交互的时间; 表示用户u与项目i交互的时间。用户u对类c的偏好度如下所示:
(3-8)
有了用户对类的偏好度后可以根据偏好度来排序,通过设定一个阈值,选取一定数量的项目类来作为项目空间为用户作推荐。
由于聚类结果中簇与簇之间相似度会尽可能的小,而同一个簇内的项目之间相似度会尽可能的大,因此在计算项目不会造成准确率的显著下降,而且还能大幅度地提升计算的效率,因为一个类内的项目数是明显小于整个项目空间的项目数的,聚类数目越多提升得越明显。
本文在计算项目的类内权重时的方法如下:以用户在这个项目类内评过分的项目为中心,计算该类中其他用户未评过分的项目与用户评过分的项目的相似度,即项目i的类内权重为项目类c中项目i与项目类c中用户评过分的每个项目j的相似度之和的平均值,计算式可由公式3-9表示:
(3-9)
其中: 即为项目i在项目类c中的类内权重;项目j为项目类c中用户交互过的项目; 为项目i与项目j的相似度,在计算 时会引入时间衰减函数。
有了用户对项目类的偏好程度和项目在类内的权重后,就可以得到项目的推荐权值:
(3-10)
其中: 为用户u对项目i的喜好度。得到项目的推荐权值后,就可以根据项目的推荐权值从大到小排序,选取前K个项目推荐给用户。
3.3.1和3.3.2节就是本文提出的基于项目聚类和时间因素改进的推荐算法的思想,将这种改进的算法称为TCItemCF,算法的具体步骤如下:
步骤一:根据用户-项目交互记录构造用户-项目倒排记录表T。
步骤二:利用公式(3-3)在倒排记录表T上计算项目之间的相似度IS(i,j),并构建相似度矩阵IS。
步骤三:利用K-Means算法对项目进行聚类。
步骤四:对给定用户u,计算其对每个项目类的偏好度 ,然后按偏好度从大到小对每个类排序 、 、...、 。
步骤五:给定一个项目空间 ,初始为∅,设定阀值ε,如果| |<ε,则将类 中未被用户访问过的项目按权值 从大到小依次放入 = ,直到 中的数目超过阀值。
步骤六:计算项目空间 中每个项目i的推荐权值 。
步骤七:按项目的权值 从大到小排序并取出前K个生成推荐列表。
本实验是在天猫举办的推荐算法大赛的数据集[38]上完成的。本实验是在测试了864个用户在4个月内对天猫上5650个品牌的行为日志的用户行为记录,每条记录都有用户的行为时间。日志记录的格式如下:(user, brand, type, timestamp),其中type为用户的行为类型(0:点击、1:购买、2:收藏、3:加入购物车)。由于数据集存在噪声,所以需要对数据集进行去噪处理,同时还需对数据集进行归一化处理,将所有的用户行为都认为是用户与品牌的交互行为,处理后变成如下格式:(user, brand, timestamp,interaction)。此时的记录数缩减成2万条左右,将这些数据划分成训练集和测试集,选取最后15天的数据作为测试集,其余部分作为训练集。
本文利用十折交叉验证法,通过多组实验分别观察聚类数目,时间衰减因子以及阻尼系数对TCItemCF算法的影响,并对比各算法在评测指标上的效果。参与评测的算法主要有:基于项目的协同过滤算法(ItemCF),考虑时间因素的协同过滤算法(TItemCF),基于项目聚类的推荐算法(ItemCluster),基于项目聚类和时间因素的推荐算法(TCItemCF)。
一、各个参数对推荐效果的影响
本节设计了3组实验分别验证时间衰减因子b,阻尼系数a以及聚类数目C 对算法推荐效果的影响。本节实验的项目阀值为500。图3-1描述了在推荐列表长度K取20,阻尼系数a取0.01,聚类数目C取160,时间衰减因子b从0.1 到0.9变化时,准确率、召回率以及覆盖率的变化曲线。从图3-1中可以看出,推荐准确率,召回率和覆盖率指标先增后减,在b取0.5附近的值时效果较优。
图3-1时间衰减因子对算法的影响
下面考虑阻尼系数a对算法推荐效果的影响。图3-2描述了在推荐列表长度 K取20,时间衰减因子b取0.5时,聚类数目C取160时,阻尼系数a取不同的值对各个指标的影响。可以看出随着阻尼系数a不断增加,召回率下降比较明显。通过交叉验证,当阻尼系数a取0.01时,推荐效果较优。
图3-2阻尼系数对算法的影响
图3-3描述了在推荐列表长度K取20,阻尼系数a取0.01,时间衰减因子b取0.5时,聚类数目C取不同的值对各个指标的影响。从图3-3中可以看出TCItemCF算法的准确率和召回率随着聚类数目的增加产生的波动比较小,在C取120-160之间的数值时效果较佳。在表3-1中通过对比算法的准确率、召回率可以看出,当聚类数目C取160时,平均的准确率,召回率指标最优。
图3-3聚类数目对算法的影响
表3-1 算法的准确率,召回率随聚类数目变化
聚类数目 | 平均准确率 | 平均召回率 |
20 | 0.0521 | 0.1137 |
40 | 0.0683 | 0.1231 |
60 | 0.0775 | 0.1053 |
80 | 0.0638 | 0.1129 |
100 | 0.0724 | 0.1259 |
120 | 0.0829 | 0.1208 |
140 | 0.0832 | 0.1152 |
160 | 0.0861 | 0.1226 |
180 | 0.0369 | 0.0974 |
200 | 0.0141 | 0.0751 |
二、TCItemCF算法结果对比
本节设计一组实验对比TCItemCF算法与其他推荐算法的推荐结果。图3-4、图3-5和图3-6分别描述了在TCItemCF算法取定阻尼系数a为0.01,时间衰减因子b为0.5,聚类数目为160,不同算法在推荐列表长度取不同值时的准确率、召回率和覆盖率曲线。从图3-4中可以看出TCItemCF算法的准确率要明显高于传统的协同过滤推荐算法,也高于TItemCF和ItemCluster算法,当推荐列表长度取K=20时,TCItemCF算法的准确率高出ItemCluster算法4.7%左右。这是因为TCItemCF算法考虑了时间因素对用户兴趣的影响,在计算IS时以用户阶段兴趣为中心,更加准确地捕获了项目之间的相似度;同时通过挖掘聚类结果中隐含的信息,在计算用户对项目类的喜好度时引入时间衰减因子,准确地描述了用户对项目类的偏好程度。
图3-4不同算法准确率对比
图3-6不同算法覆盖率对比
用户的兴趣是随时间变化的,因此推荐算法需要考虑用户兴趣的动态模型。本章通过引入时间衰减因子并结合聚类算法提出了一种基于时间因素和项目聚类改进的推荐算法。该算法通过在计算项目相似度时引入时间衰减函数,有效地拟合了用户在短期内交互的项目之间的强相关性。同时在挖掘聚类结果隐含的信息时考虑时间因素,准确地把握了用户对项目类的偏好程度。最后通过实验验证了改进后的算法确实有效地改善了推荐效果。
随着计算机技术和信息技术的发展,个性化推荐技术逐渐成为一种新型的内容提供方式,得到越来越多研究者的关注,它的出现有效的解决了用户如何从海量数据中获取相关信息这一难题。然而,用户在不同的时间段会有不同的兴趣,随时间而变化,如何通过捕捉用户的兴趣变化来提高推荐质量成为了当今推荐系统的挑战;同时由于信息爆炸产生的大量数据已经超出了单机环境的处理极限,系统的可扩展性面临巨大压力。为了解决时间因素带来的影响,本文提出了用户与项目之间的关联度随时间动态改变的相似度计算方法,并结合聚类算法充分挖掘用户的兴趣;同时为了提高推荐效率,解决系统扩展性问题,提岀了基于大数据架构的分布式解决方案,以理论研究为基础,从推荐系统架构的角度,设计了能根据实时获取用户行为信息并动态更新用户兴趣模型的推荐系统架构。本文研究内容为:
(2)所提出的架构 CNN-DSCK 通过在多个内核上进行深度卷积并在最后组合来利用产品评论来模拟用户偏好和项目属性。顶部的融合/联合层用于从每个网络中通过不同内核获得的特征中推断出最有影响力的特征,以进行最终评级。据本文所知,CNN-DSCK 是第一次尝试通过深度卷积利用产品评论进行评级预测。
(3)本文对CNN与多个内核的使用,并在以后组合以获得特征可能有助于提高评分预测的性能。从经验结果中本文可以看到,在评估数据集上,CNN-DSCK 的性能优于 CNN-DSC(没有组合内核),这证明了它们的使用是合理的。实验结果表明,CNN-DSCK 在七个公开可用的基准数据集上的预测精度方面取得了卓越的性能,并且优于各种最先进的基线方法
本文主要研究了基于大数据架构的实时推荐系统,对基于聚类和时间因素的推荐算法进行并行化以及优化方面都处于初级阶段,研究过程中仍然存在很多不足,需要在下一步工作中进行深入研究:
一、在对基于大数据架构的实时推荐技术的研究中着重针对相应的推荐算法这块进行了研究,目前主要完成了基于聚类和时间因素的TCItemCF推荐算法,对于其他算法如基于隐语义模型的LFM算法没有实现,同时TCItemCF算法中釆用的聚类算法为K-means聚类算法,对于其他聚类算法没有进行实验,如何选取一个更为合适的聚类算法以提高最终的推荐质量需要进一步分析。
二、本文在实时处理方面的实验是离线完成的,数据输入方面通过读取本地文件来模拟实时场景中的数据流,这样并不能准确的得出系统在实际场景中的响应速度,在条件允许的情况下,可以在线上进行实验,测试系统在线上环境中的性能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。