APP下载

大数据平台下基于Mahout的图书推荐系统研究

2021-12-21欧卫红杨永琴

电脑与电信 2021年9期
关键词:余弦协同矩阵

欧卫红 杨永琴

(广州科技职业技术大学,广东广州 510550)

1 引言

随着第四次工业革命的不断推进,以云计算、5G、人工智能、区块链、大数据为代表的技术迅猛发展,人们正在用数字时刻记录着我们的生产与生活,数据量呈爆炸式增加,出现了信息过载现象,人们越来越难在大数据里快速得到想要的结果。而大数据正在悄悄改变我们的生活,它蕴含着丰富的信息资源,在智能家居、智能制造、社会服务、生物医疗等领域已被广泛应用。但大数据不同于传统的数据,它具有形式多样性、数据量特别巨大、价值密度低等特性。数据信息爆炸式的增长使得信息的有效性和利用率大大降低[1]。面对数量巨大的信息,用户无法快速准确地获取需求,个性化推荐作为大数据领域中重要的应用之一,解决了信息过载和信息利用的问题,让用户能轻松获取自己想要的资源。目前,在京东、淘宝网、优酷、网易云音乐等众多网络应用平台都使用了个性化推荐系统来提升用户的体验和业绩,在图书方面,当当网就使用了推荐系统来为用户生成个性化的书单,方便用户阅读和购买。因此,在大数据环境下,个性化推荐系统对社会中各行各业有重要作用,因此,研究大数据平台下的图书推荐算法及应用具有重要的意义。

2 推荐算法在国内外的研究现状

推荐系统最早在1992年以单机模式出现,但随着网络技术和信息技术的发展,推荐系统也在不断升级,到如今推荐系统已演变成大数据分布式模式,形式虽然发生了改变,但不管是单机模式还是大数据分布式模式的推荐系统,其核心还是推荐算法。经过多年的发展与完善,目前,大家一般把现有的推荐算法分为以下几种类型:基于内容的推荐算法(Content-based Recommendations,CB)、基于协同过滤的推荐算法(Collaborative Filtering Recommendations,CF)、基于隐语义模型的推荐算法和混合推荐算法[2],这些算法都是成熟的、有着广泛应用场景且比较传统的推荐算法,随着人工智能技术不断发展出现了基于深度学习的推荐算法。

CB算法就是利用被推荐物与推荐事件相关的属性信息及用户与推荐事件相关的属性,再结合被推荐物与用户的交互历史信息来计算推荐结果。它的可解释性是比较强的,它从事物的辅助信息出发,依靠相关辅助信息,基本解决了数据的稀疏性问题和冷启动问题。文献[3]提出了一种基于内容的注意协作过滤算法(Attentive Collaborative Filtering,ACF),文献[4]中基于内存的计算方式实现了基于内容的推荐算法,以上这些都是CB算法的典型应用。

CF算法就是利用用户反馈的显性和隐式数据,挖掘用户信息,获取用户的信息规律和趋势,对用户与被推荐物的历史交互信息进行分析来计算推荐结果。它是目前应用最广的推荐算法,文献[5]提出了一种从评论中学习改进的分布式推荐算法(LDR-CF),文献[6]提出了一种获取用户兴趣变化的推荐算法(FCCF)。虽然CF算法是流行的推荐算法之一,但在大数据场景下也存在不少需要解决的问题,因数据量大、分布式存放且高度稀疏,导致无法快速、正确地获取用户和被推荐物品之间的相似度,无法精准推荐,文献[7]提出了基于双图正则化的稀疏潜模型用于协同过滤算法,部分解决了相关问题。

基于隐语义模型的推荐算法就是利用被推荐物的隐含特征,再联系用户兴趣和被推荐的物品来计算推荐结果。文献[8]提出了贝叶斯概率矩阵分解模型(BPMF)就是基于隐语义模型的推荐算法。混合推荐算法是多种单一算法的结合,避免了单一算法的缺点,融合各算法的优点,在当前应用较多,文献[9]提出了基于遗传算法的聚类与协同过滤组合推荐算法进行项目推荐,部分解决了大数据环境下低效率和推荐质量低的问题。

基于深度学习的推荐算法其实质也是一种混合推荐算法,包括多层感知机(MLP)、自编码器(Auto-Encoder)、卷积神经网络(CNN)、递归神经网络(RNN)等多种技术的结合,文献[10]提出的基于深度学习(DNN、CNN等深度模型)的混合协同过滤模型,携程网就采用了该算法模型,应用效果很好。

在图书领域混合推荐算法得到了广泛的应用,文献[11]为了解决图书借阅服务中种类繁多的推荐问题,通过关联规则和协同过滤相结合的方式提出了基于混合规则的图书推荐模型。然而,随着图书的数字化加快,图书领域数据量快速增长,高度稀疏的图书数据,使得为用户提供精准的图书推荐还需进一步研究。

3 Mahout框架实现的算法

Mahout框架起源于2008年,目前它是Apache基金会下面一个开源项目,它是Hadoop大数据生态中实现数据挖掘与构建推荐系统的重要项目,它完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口。它主要由四大模块组成即分类模块、关联规则模块、聚类模块、推荐模块,每个模块都提出并实现了多种算法。其中分类模块主要是提供一种简单的决策形式,从正确决策样本中进行学习并作出预测分析,分类依赖于有指导的学习,是一种通过分析低代价变量组合来确定高代价变量值的方法。聚类模块主要是实现在大数据中将类似的项目自动组织,或集聚到一起实现“物以类聚”,实现事物的分组分类。推荐模块主要提供协同过滤taste引擎,实现基于事物的协同过滤、基于用户的协同过滤、基于模型的协同过滤,再根据历史用户和项目历史向系统的当前用户提供推荐。表1列举了各个模块中典型算法。

Mahout开源项目其主要功能是提供人工智能处理,它是一个Hadoop大数据处理平台的人工智能算法库,用于完成各种各样的任务,如智能分类、评价性的聚类和模式挖掘等,如表1所示。它已经实现了多种经典算法,并一直在扩充中,成为大数据处理平台中一个可扩容的主流的开源算法库,Mahout能帮助开发人员更加方便快捷地创建智能应用程序,广泛应用于人工智能、数据挖掘等领域。用Mahout来构建推荐系统,是一件既简单方便又复杂且困难的事情,简单方便是指各种算法已经用程序实现,并提供相应的API,我们在使用时直接调用即可;困难复杂是因为业务场景的多样性和复杂性,再加上我们不了解算法细节,因此,在进行具体业务与算法组合、配置、调优就是一件相当困难且复杂的事情。

表1 Mahout框架主流算法

4 基于知识分类和用户兴趣的协同过滤推荐算法

本文基于Mahout框架中的协同混合过滤推荐算法,再结合知识分类与用户兴趣提出基于知识分类和用户兴趣的协同过滤推荐算法,来解决因数据稀疏性而导致的推荐精度不高、不准确的问题。

在Mahout框架基于项目(物品)的协同过滤的推荐中,如何快速、准确地搜索与项目(物品)相似的近邻是推荐过程中关键的一步,其核心是推荐所用的数据和计算相似性的方法。我们以知识结构、用户兴趣为项目类别,分别构建知识项目类别分布矩阵P、用户兴趣分布矩阵T、用户项目评价矩阵E。P是一个n×k矩阵P(n,k),其中k表示知识项目类别的个数,n表示项目的个数;T是一个m×k矩阵T(m,k),其中k表示用户兴趣种类数量,m表示用户的数量;E是一个m×n的矩阵E(m,n),其中m表示用户数,n表示项目数,Eij表示用户i对项目j的评价。计算相似性的方法有多种,如:欧氏距离、余弦相似度、皮尔逊相关系数、修正余弦相似度、汉明距离、曼哈顿距离。在推荐系统中主要用到余弦相似度、皮尔逊相关系数、修正余弦相似度三种方法,本文基于三种计算方法提出一种改进相似度的算法,其算法描述如下:

(1)跟据知识分类的数据集中项目分类信息构建一个知识项目分类分布矩阵P(n,k);

(2)跟据以知识分类的项目分类信息和用户项目评价矩阵E相互作用,计算出用户兴趣分布矩阵T(m,k);

(3)通过步骤(1)(2)的结果,计算出用户对知识分类项目所属兴趣类别的平均评价分;

(4)找出用户对知识分类项目i和用户对知识分类项目j都有评价的用户的并集;

(5)采用用户兴趣分布的协同过滤算法对并集中用户对知识分类项目i或知识分类项目j未评分的项进行预填充;

(6)重构用户项目评价矩阵,计算出知识分类项目i和知识分类项目j有着共同评价分的用户集U;

(7)用基于项目分类的修正余弦相似性算法计算出知识分类项目之间的相似度,组成相似度最大的k个知识分类项目邻居;

(8)对比步骤(7)得到的知识分类相似邻居与相似度值来预测目标用户对知识分类项目的评价分;

(9)排序预测评价分,推荐排名靠前的知识分类项目给目标用户。

通过对知识分类和用户兴趣的优化组合,引入隐语义模型(Latent Factor Model,LMF),并结合实际将各种推荐算法混合使用而形成混合推荐算法来提高推荐精确度,本文构建一种混合模型来提升推荐的效果,如图1基于Mahout下知识分类兴趣分布的混合推荐模型图。

图1 基于Mahout下知识分类兴趣分布的混合推荐模型图

为了测试基于知识分类和用户兴趣的协同过滤推荐算法的优缺点,我们搭建了一个基于Hadoop2.7.2的大数据处理平台,Mahout子项目分别采用本文使用的基于知识分类项目分类的修正余弦相似性算法(ItemCF-CMC)、基于修正余弦相似性的项目推荐(ItemCF-MC)、基于余弦相似性的项目推荐(ItemCF-C)作对比分析。测试时把数据集分成两部分,一部分为训练集,另一部分为测试集,把数据集用随机的方式分成10份,先选一部分作测试集,剩下的作训练集,并进行交叉实验测试。采用评估预测评价分准确度的标准,即用平均绝对误差(MAE)来进行评测,MAE值越低表明性能越好,准确度越高,通过调用Mahout中RecommenderEvaluator得到MAE值。测试结果如图2基于知识分类项目的MAE值对比图。

图2 基于知识分类项目的MAE值对比图

从图2中可以看出基于知识分类项目分类的修正余弦相似性算法,随着项目最近邻居数的增加MAE的值是在逐渐减小的,而且其性能优于另外两种协同过滤的方法,因为它考虑了知识分类项目和用户兴趣分布的因素,从而使计算出来的最近邻居相似度更加贴近现实,也更加准确,再通过较高的准确的最近邻居用户群体,来获取更加贴近目标用户的预测评价分,因此它能提供更加精细的个性化推荐和更高的推荐质量。

5 结语

Mahout项目是 Apache Software Foundation(ASF)旗下的基于Hadoop生态的一个非常成熟的、应用广泛的开源框架,包含了聚类、分类、推荐过滤、频繁子项挖掘等多种算法,其推荐引擎(协同过滤)在实际应用中也非常普遍,但如何利用业务场景选择最优的算法组合及调优仍然是一个需要不断探索和实践的过程。本文利用Mahout项目的协同过滤推荐算法结合知识分类和兴趣分布提出基于知识分类和用户兴趣的协同过滤推荐算法应用于图书的推荐系统中,实验证明效果良好,它提供了更加个性化和更高质量的推荐。但实验中的数据量比较少,不是真正的“大数据”,因此也存在一些问题需要在后续的实践和研究中去改进和优化。

猜你喜欢

余弦协同矩阵
家校社协同育人 共赢美好未来
蜀道难:车与路的协同进化
“四化”协同才有出路
两个含余弦函数的三角母不等式及其推论
实施正、余弦函数代换破解一类代数问题
三医联动 协同创新
初等行变换与初等列变换并用求逆矩阵
分数阶余弦变换的卷积定理
图像压缩感知在分数阶Fourier域、分数阶余弦域的性能比较
矩阵