董銀
摘要:隨著大數(shù)據(jù)和數(shù)據(jù)挖掘技術(shù)的不斷發(fā)展和成熟,個(gè)性化推薦越來越發(fā)揮著重要作用。為了能夠更有效地向用戶推薦其感興趣的產(chǎn)品,文章研究了在Spark平臺(tái)架構(gòu)基礎(chǔ)上使用ALS協(xié)同過濾算法在個(gè)性化推薦系統(tǒng)中的應(yīng)用,并對(duì)該系統(tǒng)作了性能和效果的評(píng)估。根據(jù)實(shí)驗(yàn)表明,基于Spark平臺(tái)的ALS算法能有效地為用戶推薦其所感興趣的產(chǎn)品,從而達(dá)到個(gè)性化推薦的目的。
關(guān)鍵詞:個(gè)性化推薦;協(xié)同過濾;Spark;ALS
隨著互聯(lián)網(wǎng)數(shù)據(jù)的不斷增加,如何快速而高效地從如此豐富而復(fù)雜的大量數(shù)據(jù)中為用戶挑選出自己真正感興趣和喜歡的信息變得越來越緊迫。近年來隨著個(gè)性化推薦系統(tǒng)的興起和發(fā)展,為解決這些問題提供了重要手段。推薦系統(tǒng)通過記錄和分析用戶所產(chǎn)生的日志數(shù)據(jù)構(gòu)建用戶的興趣模型,再通過用戶的興趣模型為用戶推薦其喜歡和感興趣的產(chǎn)品。目前個(gè)性化推薦系統(tǒng)在購(gòu)物網(wǎng)站和新聞網(wǎng)站等領(lǐng)域得到了廣泛的應(yīng)用,比如Amazon購(gòu)物網(wǎng)站、豆瓣、今日頭條等。目前在推薦系統(tǒng)中應(yīng)用最為成功和廣泛的推薦技術(shù)是協(xié)同過濾。
協(xié)同過濾是指收集用戶過去的行為以獲得其對(duì)產(chǎn)品的顯式或隱式信息,即根據(jù)用戶對(duì)物品或者信息的偏好,發(fā)現(xiàn)用戶的相關(guān)性或者物品本身的相關(guān)性,然后再基于這些相關(guān)性進(jìn)行推薦。目前,基于協(xié)同過濾的推薦分為基于物品的協(xié)同過濾(ItemCF)、基于用戶的系統(tǒng)過濾(UserCF)和基于模型的協(xié)同過濾(ModelCF)。為了更加快速、有效和準(zhǔn)確地為用戶推薦其喜歡的產(chǎn)品,本文主要研究了基于Spark平臺(tái)上的ALS協(xié)同過濾算法的個(gè)性化推薦系統(tǒng)。
1 Spark簡(jiǎn)介
Spark是一個(gè)基于內(nèi)存計(jì)算的分布式框架,提高了在大數(shù)據(jù)環(huán)境下數(shù)據(jù)處理的實(shí)時(shí)性,同時(shí)保證了高可伸縮性和高容錯(cuò)性。Spark中的計(jì)算模型和Hadoop中的MapReduce類似,不同于Hadoop的是,Spark的計(jì)算過程是在內(nèi)存中進(jìn)行的,從而減少了硬盤的讀寫操作,可以將多個(gè)操作進(jìn)行合并后計(jì)算,因此提升了計(jì)算速度。
圖1為Spark架構(gòu)圖,其整體流程為:Client作為客戶端將應(yīng)用程序提交到Driver中,Driver則向Master(即ClusterManager)申請(qǐng)資源,然后將應(yīng)用程序轉(zhuǎn)換為RDD Graph,再由DAGScheduler將RDD Graph轉(zhuǎn)換為Stage的有向無環(huán)圖提交給TaskScheduler,由TaskScheduler將任務(wù)分發(fā)給Woker節(jié)點(diǎn)中的Exeutor執(zhí)行。
2 ALS算法研究
ALS是Alternating Least Squares的縮寫,意為交替最小二乘法。該方法常用于基于矩陣分解的推薦系統(tǒng)中。例如:將用戶(user)對(duì)商品(item)的評(píng)分矩陣分解為2個(gè)矩陣:一個(gè)為商品所包含的隱含特征矩陣,一個(gè)為用戶對(duì)商品隱含特征的偏好矩陣。在這個(gè)矩陣分解的過程中,評(píng)分缺失項(xiàng)得到了填充,因此可以基于這個(gè)填充的評(píng)分給用戶作商品推薦了。以下就ALS算法理論做一個(gè)介紹。
3 ALS算法在個(gè)性化推薦上的應(yīng)用
為了實(shí)現(xiàn)ALS算法在Spark平臺(tái)上的具體應(yīng)用。本文的系統(tǒng)結(jié)構(gòu)主要由3個(gè)模塊組成,分別為輸入模塊、推薦模塊和輸出模塊。輸入模塊主要將用戶的行為數(shù)據(jù)轉(zhuǎn)換成用戶偏好數(shù)據(jù),再運(yùn)用數(shù)字表示用戶對(duì)產(chǎn)品的偏好。推薦算法模塊主要是通過ALS模型的協(xié)同過濾算法生成推薦結(jié)果。輸出模塊是將通過推薦算法產(chǎn)生的推薦結(jié)果(去除掉一些用戶已購(gòu)買過的產(chǎn)品),生成最終的推薦列表從而為用戶進(jìn)行推薦。如圖2所示,為本文中個(gè)性化推薦系統(tǒng)的處理流程。
3.1 用戶偏好數(shù)據(jù)處理
通過解析用戶訪問網(wǎng)站所產(chǎn)生的行為日志,對(duì)用戶行為數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理操作(即ETL操作),得到用戶對(duì)某產(chǎn)品的瀏覽、購(gòu)買、評(píng)論、加入購(gòu)物車和加入心愿單行為數(shù)據(jù),作為用戶畫像模型的5組向量,再結(jié)合實(shí)際生活情況按5種不同行為分別賦予不同的權(quán)值。通過對(duì)用戶的行為進(jìn)行加權(quán)處理后得到用戶對(duì)某產(chǎn)品的偏好得分。其中,偏好得分計(jì)算公式為:S =購(gòu)買*0.4 +評(píng)論*0.15+購(gòu)物車*0.25+心愿單*0.15+瀏覽*0.05,依此方法,最終形成用戶對(duì)所有產(chǎn)品的偏好得分,從而生成用戶的偏好模型。
3.2 構(gòu)建ALS推薦模型
通過(1)中建立的用戶偏好模型是ALS的輸入樣本,其后的處理過程是:首先輸入用戶的偏好數(shù)據(jù)(偏好數(shù)據(jù)格式為:用戶ID、產(chǎn)品ID、偏好得分),然后初始化ALS權(quán)值,計(jì)算通過ALS預(yù)測(cè)的偏好得分和訓(xùn)練樣本中的偏好得分的均方差,使其RMSE小于預(yù)定值,若未小于預(yù)定值則繼續(xù)訓(xùn)練增加的模型,最后為用戶產(chǎn)生推薦列表。
3.3 Spark平臺(tái)上的實(shí)現(xiàn)
ALS算法在Spark平臺(tái)上的實(shí)現(xiàn)過程是:首先將用戶偏好數(shù)據(jù)從數(shù)據(jù)庫(kù)中導(dǎo)出上傳到HDFS(Hadoop Distribute File System)上,再使用SparkContext類中的textFile函數(shù)加載HDFS上的偏好數(shù)據(jù)文件并創(chuàng)建RDD(Resilient Distributed Datasets),作為ALS訓(xùn)練的輸入數(shù)據(jù)。其次,輸入迭代次數(shù)向量I=(5,8,10,15,20)T和隱含因子向量R=(5,10,20,30,40,50,60,70)T,通過不斷初始化參數(shù)即循環(huán)選擇I和R的值,代入ALS類中的train(ratings,rank,numIterations,lambda)(其中:ratings為用戶的偏好數(shù)據(jù),rank為R中的隱含因子,numIterations為I中的迭代次數(shù),lambda為正則化參數(shù)本文中取0.01)函數(shù)中,生成用戶偏好的預(yù)測(cè)結(jié)果,計(jì)算每次更新參數(shù)后模型的RMSE,最終通過獲取最小的RMSE來確定最優(yōu)參數(shù)的取值。最后使用最優(yōu)的ALS模型為用戶做推薦,使用MatrixFactorizationModel中的recommendProductsForUsers方法為每個(gè)用戶生成推薦結(jié)果,并使用RDD中的saveAsTextFile函數(shù)將結(jié)果保存到HDFS上。
4 實(shí)驗(yàn)和結(jié)論
4.1 實(shí)驗(yàn)環(huán)境
本實(shí)驗(yàn)組建的Spark集群由1臺(tái)Master主機(jī)、7臺(tái)Slaver主機(jī)組成。實(shí)驗(yàn)中使用的數(shù)據(jù)為用戶每天在網(wǎng)站中產(chǎn)生的行為數(shù)據(jù),通過分析用戶的行為日志和ETL操作將其轉(zhuǎn)換為用戶對(duì)產(chǎn)品的偏好得分。其中共有11924653行用戶對(duì)產(chǎn)品的偏好數(shù)據(jù)、662926個(gè)用戶和75288個(gè)產(chǎn)品構(gòu)成。
4.2 性能評(píng)估
為了驗(yàn)證基于Spark 平臺(tái)下ALS協(xié)同過濾算法對(duì)推薦性能的影響,本文使用不同數(shù)目的Spark集群節(jié)點(diǎn)來做實(shí)驗(yàn)以獲得較優(yōu)的效果。圖4為推薦模型訓(xùn)練時(shí)間隨工作節(jié)點(diǎn)數(shù)目變化的情況。
由圖3可以看出隨著集群節(jié)點(diǎn)的增多,Spark ALS模型訓(xùn)練時(shí)間不斷減少,但其處理速度并不是隨著節(jié)點(diǎn)增加而線性減少的。從圖4可知當(dāng)工作節(jié)點(diǎn)增加到4個(gè)時(shí),模型訓(xùn)練速度的變化開始沒有那么明顯了,根據(jù)Amdahl定律,并行化的程序所獲得的加速比和程序中可并行執(zhí)行的代碼有直接關(guān)系,因此,處理時(shí)間并不是隨著節(jié)點(diǎn)線性變化的。
4.3 推薦效果評(píng)估
本文中通過調(diào)整隱含因子數(shù)量(rank)和計(jì)算的迭代次數(shù)(numIterations)來減小RMSE的值,從而達(dá)到最好的推薦效果。由圖4可以得出隨著隱含因子的增大,其模型均方差越小,表示其預(yù)測(cè)的模型越接近真實(shí)的偏好模型。
5 結(jié)語(yǔ)
本文首先對(duì)Spark和ALS協(xié)同過濾算法作了介紹和原理推導(dǎo),然后研究了基于Spark平臺(tái)下的ALS協(xié)同過濾算法在個(gè)性化推薦上的性能和效果,發(fā)現(xiàn)基于Spark平臺(tái)下的ALS推薦模型可以為用戶合理、有效地推薦其感興趣的產(chǎn)品,從而可以提高用戶的體驗(yàn)度和網(wǎng)站的轉(zhuǎn)換率等。
[參考文獻(xiàn)]
[1]李宇澄.協(xié)同過濾算法研究[D].上海:復(fù)旦大學(xué),2005.
[2] Koren Y,Bell R,Volinsky C.Maxtrix factorization techniques for recommender systems[J].Computer,2009(8):30-37.
[3]Apache Spark.[EB/OL].[2013-12-20].http://spark.apache.org/.
[4]Wbite T.Hadoop權(quán)威指南[M].3版.北京:清華大學(xué)出版,2010.
[5]Pilaszy I,Zibriczky D,Tikk D.Fast ALS-based Matrix Factorization for Explicit and Implicit Feedback Datasets[C]// Proceedings of the fourth ACM conference on Recommender systems.New York:ACM,2010.
[6]李改,李磊.,基于矩陣分解的協(xié)同過濾算法[J].計(jì)算機(jī)工程與應(yīng)用,2011(30):4-7.
[7]Hill M D,Mary M R.Amdahls law in the multicore era[J].Computer,2008(7):33-38.
Research and Application of Personalized Recommendation Based on ALS Collaborative Filtering Algorithm
Dong Yin
(School of Computer Science, Wuyi University, Jiangmen 529020, China)
Abstract: With the continuous development of big data and data mining technology, more personalized recommendation system has played an important role. In order to more effectively to recommend interesting products for user, this paper studies the application that using ALS collaborative filtering algorithm in personalized recommendation system on the spark paltform and evaluating the performance and effectiveness of the system. According to the experimental results show that the ALS algorithm based on Spark platform can effectively recommend the products they are interested in, so as to achieve the goal of personalized recommendation.
Key words: personalized recommendations; collaborative filtering; Spark; ALS