英语原文共 9 页,剩余内容已隐藏,支付完成后下载完整资料
基于Spark的混合就业推荐算法
李左全1,林玉北2 *,张兴明1
1华南理工大学计算机科学与工程学院,广州市番禺区高等教育大型中心
2华南理工大学软件学院,中国广州市番禺区高等教育大型中心
邮箱:yupilin@scut.edu.cn
摘要:针对协同过滤就业推荐算法(CF)的实时应用,提出了一种聚类协同过滤推荐算法(CCF),该算法将层次聚类应用于CF中,缩小了邻居项目的查询范围。 另外,为了解决基于内容的推荐算法(CB)的冷启动问题,引入了基于内容的用户信息算法(CBUI)进行求职推荐。 此外,提出了一种结合CCF和CBUI算法的混合推荐算法(HRA),并在Spark平台上实现。 实验结果表明,HRA可以克服冷启动和数据稀疏的问题,并为就业推荐提供良好的具备准确性和可扩展性的数据。
1、引言
随着通信基础设施的改进和互联网相关技术的发展,网络信息量呈爆炸性增长,极大地满足了人们日益增长的信息需求。 但是,它使得用户无法及时找到欲望信息。 因此,人们提出推荐算法,通过分析人们的历史行为数据,可以快速找到欲望信息,并提供最优的推荐结果。 同时,网络的不断发展也极大地拓宽了就业渠道。 求职者和公司都已开始使用网络进行就业。 但是,处理大量与工作有关的信息越来越困难。 因此,良好的就业推荐算法非常重要,值得进一步研究。
从上个世纪末推荐系统的研究开始,推荐算法作为推荐系统的核心,已成为一个热门话题。 1994年,基于用户的协同过滤算法被应用于新闻推荐[1]。在2003年,基于项目的协同过滤算法(IBCF)被提出[2]。同年,提出了一种协同过滤算法。它很简单,并且可扩展。然而,它不能解决冷启动和数据稀疏问题[3]。为了克服冷启动问题,提出了基于内容的推荐算法(CB)[4]。近年来,机器学习算法,如聚类,关联规则和矩阵分解,已经被实现用于推荐算法中[5]。在[6]中提出了一种基于用户兴趣变化的协同过滤算法。文献[7]中引入了基于注意关系和多用户行为的图推荐算法。在[8]中开发了一种基于高阶偏差的因子分解机算法。
一些学者将推荐算法引入人力资源领域。内隐语义模型被用来进行双向推荐人才和职位[9]。利用实施机器学习技术来预测申请人将来的职业变化[10]。在[11]提出了基于本体的网络招聘建议。在[12]中提出了基于随机游走模型的PageRank算法用于求职推荐。用户兴趣和工作偏好模型的建立是为了改进[13]中的协同过滤推荐算法。
对于就业建议,不仅仅要考虑公司的要求,还要考虑求职者的条件和偏好。而且,随着网络信息的不断扩展,一个好的推荐系统必须足够强大才能处理海量数据。然而,上面提到的算法几乎都是作为独立的计算模型来设计的。因此,本文提出了一种基于Spark的混合推荐算法(HRA),该算法是一种为大规模数据处理而设计的快速且通用的计算引擎。首先开发了一种聚类协同过滤算法(CCF)。用户的预测分数可以由CCF获得。每个用户的最高五个预测分数被填充到用户项目评分的原始矩阵中。然后将这个新的评分矩阵作为基于内容的用户信息算法(CBUI)的输入数据,该算法将求职者的信息纳入考虑,以改善用户的偏好向量。最后,可以得到更好的推荐结果。
2.基于Spark的HRA
2.1数据预处理
数据预处理本文的实验数据来自一个研究项目,包括申请人的个人信息,工作基本信息和申请人的历史行为。实验数据的质量将大大影响最终的推荐结果。由于收集的数据不能直接用于推荐算法,因此有必要进行如下的数据预处理。
(1)一些原始数据具有重复值。例如,一些公司一再发布相同的工作。数据预处理后只保留此作业的最新信息。
(2)一些原始数据有缺失或非法值。在数据预处理中,将为这些数据设置默认值。例如,所有工作的平均工资将被设置为工资的默认值。
(3)原始数据中的工资可以每月,每周或每天支付,这使得与工资有关的属性非常混乱。我们需要将这些数据转换为联合表格。
(4)原始数据中的某些属性,例如申请人的电话号码,职位名称,联系电话号码等对于我们的推荐算法不是必需的。因此,我们应该在数据预处理中删除这些属性。
2.2 基于Spark的CCF
传统IBCF必须在所有项目中找到目标项目的邻居,这会导致花费在搜索上的大量时间。通过引入聚类算法,我们可以缩短寻找邻居的时间。具体而言,使用聚类算法将项目集划分为群集。然后我们可以在每个集群中找到目标项目的最近邻居。最后,IBCF被用在目标项目的邻居集合中。同时,由于聚类集合远小于全部项目的集合,因此我们可以在较小的范围内找到目标项目的大部分邻居,而不是整个项目空间,有效地提高了推荐算法的速度。 CCF的流程图如图1所示。
图1. CCF流程图
如图1所示,该算法主要包括以下步骤:
(1)从处理后的数据集中构造用户项目分数矩阵。 本文在数据预处理中进行数据清理,数据转换,属性约简,数据聚合等方法。 经过数据预处理后,可以使用申请人的历史得分数据构建用户项目得分矩阵。
(2)计算项目之间的相似度分数。 假设项?和?的向量分别用{??1,??2,...,???}和{??1,??2,...,???}表示,其中???和???分别表示用户x对项目i和 j。 定义为sim(?,?)的项目similarity和similarity之间的相似性分数可以通过以下公式计算:
(3)对项目进行分层聚类。 在计算项目之间的相似性分数之后,可以根据相似性分数对项目进行聚类。 一旦聚类完成,我们可以为每个聚类定义一个聚类中心。 新项目需要与每个集群中心进行比较。 然后可以找到最近簇中的邻居来提高搜索速度。
(4)获得预测分数。 在上一步得到聚类结果中目标项的K近邻后,IBCF可以应用到邻居集中以获得用户的预测分数。
为了提高CCF的可扩展性和计算性能,该算法在Spark平台上实现。 在这个平台中,并行性主要通过弹性分布式数据集(RDD)来实现。 CCF的整体RDD转换图如图2所示。
图2. CCF的RDD转换图。
值得注意的是,在图2中,用户得分矩阵是该算法的输入数据,Ratings是从用户得分矩阵构建的分数矩阵,RatingPair是由同一用户评价的项目的集合,ItemPairForRating是由同一用户评价的一对项目, JobSim1和JobSim2表示每对物品之间的相似度,RatingWithSim1,RatingWithSim2和RatingWithSim3是与目标物品具有最高相似度的n个相邻物品的记录,并且最终预测分数保存在名为Predict的RDD中。
2.3 基于Spark的CBUI
在2.2节中,我们研究了基于用户评分的聚类协同过滤算法,以对用例进行聚类,提高了就业推荐算法的实时性。但是,它只考虑用户的分数。用户的信息和项目的信息都没有考虑在内。而且,协同过滤推荐算法存在冷启动问题。针对这些问题,提出了一种基于传统的基于内容的推荐算法的方法,其中用户的信息,如年龄,性别,教育程度等被认为可以找到用户的偏好。
CBUI的工作流程如下:
(1)构造项目的属性向量。项目的属性,包括性别要求,年龄要求,学历要求,工作薪酬和工作收益,可用于构建属性向量。
(2)混合用户的基本信息和评分数据,构造用户的偏好向量。一方面,我们可以从用户的评价信息中获取用户喜欢的项目,并利用上一步获得的项目属性来选择这些项目的工作时间,工作收益,工作收入和其他属性。另一方面,我们可以从用户的基本属性中选择一些属性,如性别,年龄,教育程度,工作生活等,作为用户偏好向量属性的一部分。这样,一旦用户的评分数量有限,就可以根据用户的基本信息构建用户的偏好矢量。
(3)获得Top-N推荐结果。在获得项?的属性向量和用户的偏好向量?之后,这两个向量之间的相似性得分被定义为sim(?,?)可以通过以下等式计算:
其中U和I分别是?和?的属性集合。 获得相似度得分后,我们可以对它们进行排序并推荐一组相似度得分最高的项目。
同样,为了提高CBUI的可扩展性和计算性能,该算法在Spark上实现。 CBUI的并行处理主要包括构建项目的属性矩阵,构造用户偏好向量,计算相似度得分,得到前n个推荐结果。 CBUI的RDD转换图如图3所示。
值得注意的是,在图3中,名为DataSet的RDD是算法的输入数据,我们构建了名为工作属性的项属性矩阵,名为“Ratings”的用户评分矩阵和用户的属性矩阵 从DataSet中命名为用户属性。 其他创建的RDD的介绍如下:
(1)评分2:每个用户评分前n项。
(2)具备属性的项目2:按用户分组的作业属性集。
(3)配置文件A部分:每个用户评分最高的n个项目的偏好属性。
(4)用户配置文件:用户的首选项属性。
(5)具有工作属性的配置文件:用户轮廓和工作属性的笛卡尔组。
(6)过滤项目:评分项目。
(7)过滤结果:结果没有评分项目。
(8)推荐结果:前n个推荐结果。
2.4、 HRA
在本节中,基于CCF和CBUI的HRA可实施如下。 首先,用户的预测分数由CCF获得。 然后将每个用户的最高五个分数填入原始用户项目评分矩阵中。 最后,新的评价矩阵作为CBUI的输入数据,可以提高用户的偏好向量,并获得更好的推荐结果。 图4显示了HRA的整个过程。
图3 CBUI的RDD转换图。
图4.建议的HRA的整个过程
3.实验设置和结果
3.1 实验设置
数据集和度量。 在我们的实验中,涉及4692个用户信息,15000个工作信息和170844个用户工作分数数据。 另外,为了验证实验结果,使用定义为以下等式(3)的准确率as作为实验指标。
其中??是推荐项目的集合,??是用户在测试集中选择的一组项目
实验环境。 在实验中,我们使用四台虚拟机构建了一个Spark群集。 其中一台虚拟机充当群集的主节点,另外三台虚拟机充当工作节点。 每台虚拟机的配置如下:8G内存,4核1.799GHZ CPU,80G磁盘空间,centos 6.7操作系统,Spark 1.6.0版本,Hadoop 2.6.0版本和Scala 2.10.4版本。
3.2 结果与分析
预测精度。 CBUI是基于传统的CB,所以我们首先在相同的数据集上测试这两种算法以方便进行比较。 这两种算法的召回率如图5所示。
如图5所示,CBUI优于传统的CB,这意味着用户的基本信息被合理地使用,以便当用户的评分较少或者甚至缺失时,可以根据用户的信息建立用户的偏好向量。 它可以有效缓解冷启动问题并改善推荐结果。
另外,在实验中,CCF,CBUI和HRA在相同的数据集上进行测试。 当簇数为90,邻域项数为40时,这三种算法的准确率如图6所示。
图5.召回CB和CBUI。 图6.召回CBUI,CCF和HRA。
如图6所示,随着推荐列表长度的增加,这三种算法的召回率增加,而上升速度逐渐减慢。 当推荐列表长度为250时,这三种算法的召回率分别为75%(HRA),72.8%(CCF)和55.1%(CBUI)。 由于CCF的预测评分可以缓解用户分数的稀疏性和改善用户的偏好向量,因此HRA的召回率远远高于CBUI,表明所提出的混合策略是有效的。
并行。 HRA的并行化在Spark上实现。 加速定义为等式(4)来衡量并行算法的可伸缩性和性能。
其中T1是单处理器系统中的操作时间,Tp是pnode处理器系统中的操作时间。 在理想情况下,随着节点数量的增加,并行算法的加速应该线性增加。 在Spark集群中,T1是指伪分布式模式下的算法运行时间。
为了验证并行HRA的加速,群集中的节点数量逐渐增加,并且记录并行HRA任务所需的实际操作时间。并行算法的加速比如图7所示。从图中可以看出,随着数据节点数量的增加,HRA的加速曲线基本符合线性趋势,说明该算法具有可扩展性,可以 通过增加节点来缩短时间。 算法的加速曲线与理想曲线“Y = X”不同,主要是节点之间的数据传输需要时间,数据倾斜的问题也会影响完成时间。
图7.并行HRA的加速。
4、总结
本文研究了就业推荐算法的应用,包括CCF和CBUI。 另外,针对单推荐算法的不足,提出了一种基于这两种算法的混合推荐算法,有效解决了传统CB算法冷启动问题,减轻了数据稀疏性的影响。 同时,在Spark上设计并实现了该算法的并行化,提高了算法的并行性和可扩展性。 然而,发现HRA的并行化效率与理想值存在一定差距,仍有改进空间。 因此,我们将对Spark进行深入研究,以进一步提高算法的效率
5.确认
这项工作由广东省科技计划(编号2016B030308002)资助。
6.参考文献
[1] Goldberg D,Nichols D,Oki B M和Terry D 1992使用协作过滤编织信息挂毯Comm。 ACM 35(12)61-70
[2] Sarwar B,Karypis G,Konstan J和Riedl
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[23097],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。