基于相似用户索引和ALS矩阵分解的推荐算法研究
2023-06-05
来源:步旅网
2016年12月 第32卷第6期 陕西理工学院学报(自然科学版) Journal of Shaanxi University of Technology(Natural Science Edition) DeC.2016 Vo1.32 No.6 [文章编号]1673—2944(2016)06—0047—06 基于相似用户索引和ALS矩阵分解 的推荐算法研究 盛伟, 余英, 王保云 (云南师范大学信息学院,云南昆明650500) [摘要] 针对交替最小二乘法(ALs)在处理大数据集时所面临的处理速度和计算资源问 题,提出了基于相似用户索引的分布式矩阵分解推荐算法。首先算法基于用户的评分行为找 到用户之间的最近邻,然后使用Spark平台运行提出的算法,并产生推荐。在GroupLens网站 上提供的MovieLens数据集上进行仿真实验,实验结果表明,提出的算法能够有效解决ALS对 于大数据集运行效率低及在云环境中可扩展性较差的问题。 [关键词] 交替最小二乘法; 最近邻;推荐算法;Spark [文献标识码]A [中图分类号]TP391.3 个性化推荐系统如同一个信息过滤器,只把有用的信息提供给用户,有效解决了信息过载的问题。 协同过滤算法…是最成功的个性化推荐技术之一,被广泛应用于很多领域。然而,在现实生活中用户 和物品的数量庞大,而消费者通常只对一小部分物品进行评分,造成了评分矩阵严重稀疏,这导致传统 协同过滤算法可以利用的数据非常有限,推荐精度较差。在用户和物品不断增加的同时,评分矩阵的维 度也变得极高,这使得传统协同过滤算法的计算复杂度急剧增加,由此产生了可扩展性较差的问题。针 对数据稀疏性问题,李红梅等 提出利用LSH快速获取目标用户的近邻用户集合,然后采用加权方法 来预测用户评分并产生推荐;LIKA B等 提出了分类算法与相似度技术相结合的模型。针对可扩展性 较差的问题,孙天昊等 在分布式平台下,提出改进聚类协同过滤推荐算法。近年来,隐语义模型(La— tent Factor Model,LFM) 受到越来越多的关注,矩阵分解技术是其中最常用的一种方法,这是一类有效 解决数据稀疏性问题的推荐算法,基于它的推荐模型获得了Netlfix Prize推荐比赛冠军。此后,该方法 被应用于更多的推荐系统研究中 j。在众多基于矩阵分解的方法中,交替最小二乘(Ahernating Least Squares,ALs)算法最为流行,它非常容易实现并行化计算。可是,随着用户数量的增加,ALS需要计算 更多用户的评分集信息,计算量会迅速增大,ALS在大数据集下的可扩展性更加不理想。 大数据计算平台的更新及数据的增长进一步促进了推荐系统的快速发展。Spark是一个高效的分 布式计算平台,不同于需要过多的文件读取操作的MapReduce,可以将任务中间输出结果保存在内存 中,因此Spark能更好地适用于数据挖掘、矩阵分解等需要迭代的算法。 本文提出一种基于相似用户索引的分布式矩阵分解推荐算法,结合分布式计算特点,利用位置敏感 收稿日期:2016-05-06 修回日期:2016-06-13 基金项目:云南省教育厅科学研究基金资助项目(2014Y145) 作者简介:盛伟(1988一),男,江苏省丰县人,云南师范大学硕士研究生,主要研究方向为推荐系统;[通信作者]余英 (1965一),女,云南省昆明市人,云南师范大学副教授,硕士生导师,硕士,主要研究方向为网络通信;王保云(1977一), 男,云南省玉溪市人,云南师范大学讲师,博士,主要研究方向为机器学习。 陕西理工学院学报(自然科学版) 第32卷 哈希(Locality Sensitive Hashing,LSH)处理高维数据的良好特性来快速寻找用户之间的近邻集合,并将 其植入到ALS矩阵分解推荐技术中,降低了计算复杂度,改善了算法可扩展性较差的问题并且在一定 程度上提高了推荐精度。 1 基于相似用户索引和ALS矩阵分解的推荐算法 首先将己知用户一物品评分数据集分为训练集 和测试集 ,训练集用来学习矩阵特征并构建 LSH模型,测试集用来评价推荐结果。本文提出的算法分为两个阶段进行,分别是LSH的相似用户索 引构建和基于ALS的矩阵分解推荐。以上阶段均在Spark集群下进行分布式计算,算法流程如图1所 示。 图1 基于相似用户索引和ALS矩阵分解的推荐算法流程图 Spark是UC Berkeley AMP Lab开源的通用并行计算框架。Spark立足于内存计算,提供了批处理、 实时数据处理、机器学习以及图算法等一站式服务,非常适合于各种迭代算法和交互式数据挖掘。 Spark中使用了弹性分布式数据集(Resilient Distirbuted Datasets,RDD)Is]抽象分布式计算,即使用RDD 以及对应的相关操作来执行分布式计算;并且基于RDD之间的依赖关系组成Lineage以及CheckPoint 等机制来保证整个分布式计算的容错性。 Spark运行架构如图2所示,用户将任务提交给Driver,Driver将任务分发到所有的Worker节点。 Worker节点根据Driver提交过来的任务,算出位于本地的那部分数据,将数据以RDD的形式保存到内 存中,然后对RDD进行接下来的计算。用户提交的任务一般在Cluster Manager中运行,目前Spark支持 Standalone、Mesos和YARN等不同的Cluster Manager,本文选择的是Standa|one模式。 图2 Spark运行架构图 1.1基于LSH的相似用户索引构建 建立相似用户索引,不仅可以过滤掉与目标用户不相关的评分信息,还降低了推荐算法需要计算的 评分矩阵维度。因此,基于相似用户索引的推荐算法能够快速为用户产生推荐。 针对上述问题,本文引入LSH 9。。。对相似用户建立索引。LSH是当前最流行的近似最近邻快速查 找技术之一,它使用哈希的方法把数据从原空间哈希到一个新的空间中,如果数据在原空间中相似,那 .48・ 第6期 盛伟,余英,王保云 基于相似用户索引和ALS矩阵分解的推荐算法研究 么哈希到新的空间中的数据也保持一定的相似性。LSH通过原始评分矩阵,能够将评分行为相似的用 户以一定的概率散列到同一个桶中。 定义(位置敏感哈希)存在函数族H={h: 一 },对于任意的数据点P,q∈Js,都有: 若P∈B(g,r1),则Pr[h (P)=h (g)]>p ; 若P∈B(q,r2),贝0 P,[h (P)=h (g)]>p2; 如果满足条件P >p 和r。<r:,就称此函数族是(r。,r:,P。,P:)敏感的函数族。 对评分数据处理之前,首先需要将评分数据向量化。通常评分数据向量化是对用户评分行为的提 取,通过相关计算将评分数据转化成对应的高维向量。常用的向量度量方式有:欧式距离、杰卡德距离 以及余弦距离等。在这些度量方式中余弦距离在实际应用中有较好的效果。 在余弦距离的度量下,Chairkar M S_】 于2002年提出了超平面的思想,通过随机的超平面将原始 数据空间进行划分,其中每一个空间构成一个散列桶,而位于每个桶内的数据被认为具有很大的相似 性。因此我们选用超平面的思想方法对评分数据进行哈希。Chairkar M S设计了一族哈希函数,使得 落人平面一侧的向量被哈希为1,另一侧被哈希成为0,哈希函数如公式(1)所示: h (1,):f , 其中l,是待哈希的向量,H是随机生成的向量。 【O, l,・ ≥【J, <0, (1) 当数据量变得很大时,用户评分行为向量的维度也变得很高,单机模式的LSH构建会因为内存的 限制而变得很慢,甚至无法继续运行。本文利用Spark平台将LSH构建过程分布化和并行化,以适应海 量高维数据的计算需求。基于Spark的LSH索引模型构造算法描述如下: 输入:评分数据 ,哈希函数数目K,哈希表数L; 输出:LSH索引模型, ①var se=new sparkContext(), ②val data=sc.textFile(”…”,numPa ̄ion), ③数据经过map生成sparseVectorData:RDD[user—id,SparseVector],SparseVector是序列<Item: Int,rating:Double>, ④Hasher(K L,seed)随机生成K L个哈希函数Hash(U:SparseVector)利用随机生成的哈希函数 和公式(1)对每个向量生成hash signature(e.g.11110010), ⑤保存哈希过的向量hashTables:RDD[((hashTableld,hashValue),user_id)], ⑥输出LSH模型。 代码中:第①一②行初始化SparkContext,从HDFS中读人数据;第③行根据原始评分数据生成每个 用户对所有已评分项目的评分记录向量;第④一⑤行利用随机超平面的思想对原始数据进行划分。 1.2基于ALS的矩阵分解推荐算法 在协同过滤推荐系统中,输人数据可以用一个m行n列的评分矩阵 来表示,本文称之为User—I— tem矩阵,其中m表示用户数目,n表示物品数目。真实生活中消费者产生的评分数据非常少,造成us— er.Item矩阵极为稀疏。矩阵分解的核心思想是把稀疏的User.Item评分矩阵分解为两个低维度的矩阵 P和Q,用一个重构的低秩预测矩阵 =PQT来逼近原来的评分矩阵,逼近的目标是使预测矩阵和原始 矩阵之间误差的平方最小,其中P为m xd(d表示特征个数,也即为低维度矩阵的维度)的用户特征向 量矩阵,Q为n×d的物品特征向量矩阵。预测方法如公式(2)所示: , =p q , (2) 其中p 和垡 分别为用户/Z和物品i的特征向量,r 为用户 对物品 的预测评分。当矩阵中含有大量 空值时,此模型容易导致过拟合问题。许多研究者建议采用一个正则化 。 模型来避免过拟合问题。其 需要优化的函数如式(3): P’,q’(u.i)EK min∑(r 一p g ) +A(I l + ll ),l (3) ・49. 陕西理工学院学报(自然科学版) 第32卷 其中A是正则化系数,K代表已有评分记录,r 为用户u对项目i的真实评分。ALS算法是求解上述模 型最常用的方法。 ALS算法基本求解思想是固定P求解Q,然后固定Q求解P,重复交替上述两步直到算法收敛。 ALS算法易于实现并行化,然而随着评分数据的增加,它需要更多的计算时间,大数据集下推荐效率不 高。因此本文采用LSH和ALS相结合的算法。对于评分矩阵 ,可以利用LSH算法对具有相似评分记 录的用户进行粗略划分,得到相应的相似用户评分数据。然后为了产生项目推荐结果,可以利用相似用 户的评分数据进行ALs推荐。这样不仅减少了ALS算法的计算量,改善了算法可扩展性较差的问题, 也提高了推荐精度。算法描述如下: 输入:原始评分矩阵 ,评分测试集 ,LSH索引模型LSHModel; 输出:推荐列表, ①vat se=new sparkContext(), ②val data=se.textFile(”…”,numPartion), ③读入 生成TestRatings:RDD[Rating],Rating是序列<user:Int,item:Int,rating:Double>, ④LSHMode1.getCandidates(TestRatings:RDD[(Int,Int,Double)])生成相似用户集合 , ⑤读人 根据 生成候选集Hratings:RDD[Rating], ⑥ALS.train(Hratings,rank,numher,lambda)对评分数据Hratings进行numlter次训练,rank是用户 因子矩阵和项目因子矩阵的维度,lambda是正则化因子, ⑦recommendProducts(r, )为用户r产生i个初始推荐, ⑧输出推荐列表。 代码中:第①一②行初始化SparkContext,从HDFS中读人数据;第③行读取并生成评分测试集;第 ④一⑤行评分测试数据集通过算法1的LSH模型的LSH映射获得相似用户集合,最后生成评分数据候 选集合。第⑥~⑦行ALS算法训练候选集合生成ALS推荐模型,完成测试数据集的用户TOP-N推荐。 2实验及结果分析 根据上述研究,利用4台计算机搭建Spark分布式集群,其中一台计算机作为Master节点,另外3 台作为Slave节点负责运算。每个节点内存为2 GB,2核,安装CentOS 6.7操作系统和Spark 1.4.1。程 序采用IntelliJ IDEA集成开发环境完成。从GroupLens网站(http://www.gouplens.org)下载MovieLens 100 KB和1 MB两个不同大小的数据集作为本文的数据源,其中100 KB数据集包含了943个用户对 1 682部电影的评分,共100 000条评分记录;1 MB数据集包含6 040个用户对3 900部电影的评分,共 1 000 209条评分记录。 实验采用加速比S=L /L 衡量同一数据集下增加节点时本文算法的运行效率,其中£ 为单个节 点完成任务所需的时间,£ 为n个节点完成任务所需的时间。实验过程中,从1个节点增加到4个节 点,分别测试100 KB和1 MB数据集在单机模式下的运行时间以及在不同规模Spark集群下的运行时 间,获取其完成运算所需时间 — ,绘制加速比曲线图如图3所示。 从图3可以看出,随着Spark集群节点数目的增加,两组数据集的加速比值都在增大,因此增加节 点数目可以提高算法执行效率。100 KB数据集的加速比值较小,加速比曲线增长缓慢,1 MB数据集的 加速比值较大。针对同一节点,数据量很小的情况下加速比不明显,随着数据量增加,加速比曲线提升 明显,可以预期处理更大规模数据集时,本文算法执行效率会进一步提升。 实验采用均平方根差RMSE Ll 作为本文算法推荐质量的评价指标。RMSE的值越小,表明算法的 推荐准确率越高,其公式为 RMSE= . (4) 其中Ⅳ为物品数量, 为真实的评分,P 为预测的分数。从100 KB数据集中分别选取用户数量为100、 300、700和943作为4组实验数据(表1)。本文实现的算法与传统矩阵分解算法的比较如图4所示。 第6期 盛伟,余英,王保云 基于相似用户索引和ALs矩阵分解的推荐算法研究 表1 4组实验数据量 2-4 2_2 2.O 筮1.8 ・.6 l-4 1.2 1.O ∞善r 4 0 3 O 2oO 400 6oo 8oo l 000 节点数目 5 2 9 6 用户数目 图3加速比曲线图 图4 RMSE值 从图4可看出,随着用户数据逐渐增大,ALS推荐算法的推荐精度也在逐渐提高,所以ALS算法在 处理大规模数据集时在推荐精度上有显著优势。然而,由于数据量巨大,ALS算法需要计算很多不相关 信息,推荐精度还有进一步提升的空间。本文算法利用LSH技术找到用户最近邻,过滤掉不相似用户 的评分信息,在此数据集的基础上再进行推荐,在改善ALs算法复杂度的同时,推荐结果也更加精确。 3 结语 本文针对ALS矩阵分解算法存在的计算开销大及可扩展性较差的问题,结合Spark分布式计算和 LSH快速处理高维数据的特点,提出了基于相似用户索引的分布式矩阵分解推荐算法。利用LSH找到 用户之间的最近邻集合,ALs通过这些用户的评分数据重新排列用户的喜好列表,形成最后的推荐,降 低了时间复杂度。同时,算法在大数据环境下具有良好的可扩展性。后续研究将结合其他用户信息或 者项目信息进行更准确地推荐。 [ 参考文献] [1]LIU Zhao—bin,QU Wen-yu,LI Hai-tao,et a1.A hybrid collaborative filtering recommendation mechanism for P2P networks [J].Future generation computer systems,2010,26(8):1409—1417. [2] 李红梅,郝文宁,陈刚.基于改进LSH的协同过滤推荐算法[J].计算机科学,2015,42(10):256-261. [3]LIKA B,KOLOMVATSOS K,HADJIEFrHYMIADES S.Facing the cold start problem in recommender systems[J].Expe ̄ Systems with Applications,2014,41(4):2065-2073. [4]孙天吴,黎安能,李明,等.基于Hadoop分布式改进聚类协同过滤推荐算法研究[J].计算机工程与应用,2015, 51(15):124—128. [5]KOREN Y,BELL R,VOLINSKY C.Matirx factorization techniques ofr recommender systems[J].Computer,2009,42(8): 30-37. [6]JAMALI M,ESTER M.A matirx factorization technique with trust propagation for recommendation in social networks[c 3// Proceedings of the fourth ACM conference on Recommender systems.ACM,2010:135—142. [7]TAKACS G,PIL ̄SZY I,Nl ̄METH B,et 1.Ianvestigation of various matirx factorization methods for large recommender sys- terns[C]//2008 IEEE International Conference on Data Mining Workshops.IEEE,2008:553-562. [8] ZAHARIA M,CHOWDHURY M,DAS T,et a1.Resilient distirbuted datasets:A fault—tolerant abstraction for in—memory cluster computing[C]//Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation. ・51. 陕西理工学院学报(自然科学版) USENIX Association.2012:2. 第32卷 『9]ANDONI A,INDYK P.Near-optimal hashing algorithms for near neighbor problem in high dimensions[C]//Proceedings of the Symposium on the Found ̄ions of Computer Science,2006:459-468. 『10]SLANEY M,CASEY M.Locality-sensitive hashing ofr ifnding nearest neighbors[1ecture notes]….IEEE Signal Pr0cess— ing Magazine,2008,25(2):128—131. [11 1 CHARIKAR M S.Similarity estimation techniques from rounding algorithms[C]//Proceedings of the thiry。fourth annual ACM svmposium on Theory of computing.ACM,2002:380-388. PATEREK A.Improving regularized singular value decomp。siti。n for collaboratiVe ifltering[C]//Proceedings of KDD c“p and workshop,2007:5-8. RICCI F,ROKACH L,SHAPIRA B,et a1.Recommender systems Handb0ok[M].Berlin:Springe卜Veflag,2011:109・ [责任编辑:魏强] ALS.based matrix factorization recommendation algorithm with similar user index SHENG Wei, YU Ying, WANG Bao—yun f Sch。。l。f Inf0rrnati。n Science and Techn。1。gY,Yunnan Normal University,Kunming 650500,China) speed and resource allocation of A1- tleneck problems of processing Abstract: In order to solve the botrecommendation approach with simi— ternating Least Squares(ALS), a distirbuted parallel matirx factorization lar user index was proposed. First,the approach found nearest neighbors among the users based on the r rat— ings;Then,Spark was employed to implement the proposed approach,and the recommendation to th user produced. Simulate experiments in MovieLens datasets provided by GroupLens website show that the proposed algorithm can resolve the issue of low execution efficiency of ALS for large。scale datasets and the worse scal’ ability in clouds. KeV words: ahernating least squares; nearest neighbors; recommendation algorith; Spark (上接第18页) Software development on litfing capacity for big tonnage mobile crane NING Wei,PENG Feng・sheng f Schoo1 of Mechanical Engineering,Shaanxi Sci—Tech University,Hanzhong 723000,China) orf lifting capacity of mobile crane,the litfing capacity Abstract: In terms of the calculation problem the ANSYS platform based on related theory algorithms. ca1culatiOn software for mobile crane is developed on Firstly,the stmcture characteristics for crane boom and the wh。1e machine are parameterized・Secondly,the finite element parametric m。del of crane boom is established.The nonlinear static analysis is executed by ca1l。 ing ANSYS s01ver.Finally,the calculation results are appraised by Virtue of safety evaluation system Litfing capacity results are obtained through iterative calculation. Software interface module uses the TCL/TK lan guage and the 0ther modules use the APDL language.The crane load test in mobile crane is carried out・ Ex— Derimental resuIts sh0w that there is a good agreement between calculation value and experimentl vaalue・The d eloDed soflware has high computational efficiency and covers all mobile crane’s operating cases・ KeY words:mobile crane;litfing performance;parameterization;finite element method; ware development . soft— 2.