吳榮 段宏濤

摘要:在大數據挖掘方面,基于Hadoop平臺的Spark快數據推薦算法具有一定優勢。基于這種認識,本文從平臺算法組成和算法實現兩個角度對該算法進行了解析,并對算法在圖書推薦系統中的應用方法展開了探討。從系統功能仿真分析結果來看,應用Spark快數據推薦算法進行圖書推薦,能夠使圖書推薦系統推薦準確度得到提高,并且大幅度縮短圖書推薦時間。
關鍵詞:Hadoop平臺;Spark快數據推薦算法;圖書推薦系統
中圖分類號:G250.74 文獻標識碼:A 文章編號:1007-9416(2020)06-0115-03
0 引言
面對海量圖書資源,想要從中篩選出適合圖書還要依賴信息技術支撐。而目前在圖書推薦算法開發方面,采用傳統算法難以滿足數據實時處理需求。應用基于Hadoop平臺的Spark快數據推薦算法,能夠實現系統推薦性能優化,因此還應加強算法解析和運用,滿足讀者圖書借閱需求。
1 基于Hadoop平臺的Spark快數據推薦算法分析
1.1 平臺算法分析
Spark快數據推薦算法實現需要依靠Hadoop基礎平臺,作為開源組織Apache開發的分布式架構,Hadoop能夠完成Yarn搭建以實現平臺資源管理,并搭建Mahout框架為機器學習算法實現提供支撐,利用MapReduce模型實現數據信息挖掘,借助Storm完成在線數據實時處理。在Hadoop平臺上完成Spark框架的搭建,可以采用基于內存的編程模型實現數據快速挖掘,通過節省中間迭代過程提高程序執行速率。實際在框架建立過程中,需要完成四個數據處理單元設計,具體包含Spark SQL-RDD、MLlib、Sprak Streaming和Graphx,分別為數據執行單元、機器學習、實時處理和圖計算單元,均屬于RDD,因此能夠保證各種應用場景編程一致,體現算法強大數據整合能力[1]。按照RDD數據處理機制,算法能夠完成數據結構包裝,通過機器學習ALS算法進行數據推薦,利用圖計算PageRank算法進行排名,所以能夠成為快數據推薦算法。應用該算法,需要先完成框架初始化,然后進行原始數據加載,在將數據轉換為數據集后,可以進行機器學習訓練,完成需要預測內容的提取。重復進行數據合并與預測,能夠實現數據格式映射,將推薦內容排名顯示出來。完成新數據接收后,算法可以進行數據集中數據更新,然后重新進行推薦排名。
1.2 算法實現原理
對Spark快數據推薦算法實現原理展開分析可以發現,該算法主要依靠機器學習算法和PageRank算法進行推薦排名。機器學習算法ALS實際就是交替最小二乘法,能夠在上下文中通過交替最小二乘求解實現協同推薦,對觀察到的全部內容進行打分,結合對用戶喜好的推斷進行相應內容的推薦[2]。如式(1)所示,為推薦打分算法模型,式中U和M分別為評分專家和推薦內容,U×M為打分矩陣,ui指的是第i個評分專家,mj指的是第j個推薦內容,rij指的是i專家對j內容的評分,T則為矩陣轉置,λ為矩陣特征向量。采用Spark算法進行數據集訓練,可以得到預測函數進行專業推薦。在數據更新后,可以重新訓練,從而實現準確推薦。在算法應用過程中,還應完成初始數據、迭代次數及收斂值的設定,以便使算法能夠在指定時間內完成訓練。
由于算法統一利用彈性分布式數據集進行數據表示,RDD本身屬于共享內存模型,能夠對分區集合進行記錄,并對確定轉換操作進行執行,所以可以降低算法開銷。
2 Spark快數據推薦算法在圖書推薦系統中的應用
2.1 算法應用思路
設計圖書推薦系統,可以結合讀者借閱興趣進行圖書推薦。而以往在讀者興趣數據挖掘方面,系統多采用聚類分析等方法,需要在開源平臺上實現數據并行處理,如采用Apriori算法,依靠關聯規則進行數據挖掘,算法需要經過大量迭代運算,導致系統無法在短時間內迅速完成信息反饋,無法滿足讀者的圖書借閱需求。針對這一問題,采用Spark快數據推薦算法能夠利用開源集群計算框架完成讀者個性化閱讀信息的快速挖掘,從中提取閱讀數據偏好,在分析讀者借閱行為數據基礎上實現圖書推薦,因此能夠使系統為讀者提供個性化服務。
2.2 系統框架分析
實際應用算法可以將圖書館借閱數據當成是訓練數據,使系統能夠通過數據分析及時向借閱讀者推薦感興趣的圖書。為保證系統能夠迅速完成大數據挖掘,還要采用Hadoop云平臺,利用分布式計算系統進行各種結構類型數據集合,提供分布式存儲計算環境,保證系統在數據分析上具有一定優勢。在該環境下,系統可以獲得開放信息資源,利用平臺進行數據上傳下載管理,使大數據吞吐量問題得到解決,保證資源交互的流暢性。從系統平臺框架上來看,主要包含Map Reduce和HDFS,可以滿足分布式計算任務要求,將完整數據流拆分成多個作業流[3]。針對每個作業流,可以利用Job表示,構成相應DAG圖,利用圖中各邊進行兩個Job間關系表示。經過處理優化,能夠使系統數據庫連接次數得到減少,同時降低無用候選項集的生成概率,因此能夠使圖書推薦正確率得到提高。
2.3 圖書推薦流程
在系統圖書推薦功能實現上,需要利用Spark算法完成transformation和action操作程序調用,根據上次迭代結果進行迭代求解[4]。在算法并行化偽代碼實現上,還要先進行數據輸入,數據源路徑為input path,得到的數據集為Dataset,可以在系統云平臺上進行存儲。系統算法操作過程中,還要由Master憑借算子完成事物集獲取,并對數據源進行預處理掃描,在HDFS上進行存儲,得到相應RDD。在系統初始化期間,還應完成最小支持度閾值和置信度的設置,分別為0.4和0.7。通過output path路徑,可以進行頻繁集的輸出。由Worker利用count,能夠對各項集合求取,將RDD分解為多個數據塊,在m個worker節點上得到分配處理。根據節點項集Itermsets,可以得到局部K-項集subitemset,完成函數過濾。針對每行數據記錄,應當進行分割,進行事物所有項候選項集的計算。在Key相同的情況下,可以將選項集歸為同一組。針對同組,還應根據次數和規則完成置信度的計算。通過對無法達到置信度閾值的選項集,可以進行過濾刪除,最終返回推薦列表。實際應用Spark算法,能夠將數據庫中各事物數據對多個子節點進行均衡分發,利用局部查找頻繁項集進行全局操作的替代,以免對數據集進行實時排序。因此算法應用能夠實現數據挖掘和生成的并行化,達到提高數據挖掘效率的目標。
2.4 系統功能仿真
為確定系統圖書推薦功能實現情況,還要采用Matlab軟件進行仿真,共完成圖書館2500位用戶和15000本圖書的數據收集和分析。仿真采用Intel Core i5 2.2GHz處理器,擁有400GB硬盤和6GB內存,軟件采用Windows 10操作系統。為加強算法對比,還要采用傳統Apriori算法對相同測試數據進行分析。從分析結果來看,在系統推薦書籍數量從1000提高至15000的過程中,采用Spark算法排序準確度能夠從0.54提高至0.69,采用傳統算法從0.51提高至0.61。由此可見,在系統推薦圖書數量不斷增加的過程中,算法的準確度都能得到提高。但相較于傳統算法,采用Spark算法準確度提高幅度更大。從時間變化上來看,在推薦書籍數量提高過程中,采用Spark算法耗費的時間從35s逐步增加至500s,采用傳統算法耗費時間從135s提高至2493s。由此可見,推薦圖書數量的增加將導致系統數據處理時間增加,但采用Spark算法時間明顯得到了縮短,由此可見算法擁有較強的數據處理能力,能夠使系統獲得良好圖書推薦性能。
3 結論
綜上所述,在海量數據分析和挖掘方面,采用基于Hadoop平臺的Spark快數據推薦算法能夠縮短數據處理時間,在一定程度上實現數據實時分析和有價值信息的提取。在圖書推薦系統中應用該算法,能夠在提高圖書推薦準確度的同時,大幅度縮短圖書推薦時間,因此能夠使系統推薦功能得到較好實現。
參考文獻
[1] 陳虹君,吳雪琴.基于Hadoop平臺的Spark快數據推薦算法分析與應用[J].現代電子技術,2016(10):18-20.
[2] 高琪娟,劉鍇,陳佳.面向Spark的圖書借閱數據關聯模型的研究[J].安徽農業大學學報,2018(4):768-771.
[3] 曹耀輝.基于Spark平臺的電商推薦系統的設計分析[J].自動化與儀器儀表,2017(7):100-103.
[4] 賈旖旎,周新民,曹芳.基于HDFS+Spark的時空大數據存儲與處理——以智慧無錫時空大數據為例[J].軟件,2019,40(11):19-23.