陳虹君 趙力衡 羅福強 李瑤
摘 要:高校圖書館圖書推薦是學生自主化學習的必然趨勢。本研究充分利用高校一卡通大數據、圖書系統、成績管理系統數的海量數據,結合OpenStack云平臺技術、大數據Spark MLlib的數據挖掘的技術進行圖書推薦。本文從技術架構思路、OpenStack構建云平臺、Spark集群配置、基于不同策略的圖書推薦、組合圖書推薦等方面進行了描述和分析,從用戶行為相關性、基于圖書行為的推薦、新書、提高專業成績等多個維度進行了推薦為,學生提供個性化、多樣化的圖書推薦,對學生的學習效率和效果有很大的幫助。
關鍵詞:云平臺;大數據;圖書推薦;關聯規則
中圖分類號:G715.5 文獻標識碼:A 文章編號:1671-2064(2018)14-0058-02
高校圖書館是學生系統化自主學習的主要陣地,盡管互聯上的海量碎片化的信息可以快速方便地提供大量的信息量,但也大量地分散了學生的精力。高校的圖書管理系統有大量有價值的數據,本文充分利用云平臺分布式存儲技術、與大數據spark的快速挖掘的技術,將高校一卡通數據及學生成績系統數據,并結合云平臺與大數據挖掘技術,為學生提供個性化的精準推薦。目前也有較多基于圖書推薦的算法,其數據源信息相對比較單一,僅僅是用戶的借閱信息,因此推薦的角度相對較窄,容易使得學生被限定在一個局部范圍內。本研究數據源來源于一卡通信息、學生成績系統、圖書管理系統等,信息是多維度的,推薦信息更符合學生的實際需要。
1 建設主要內容
1.1 技術架構思路
數據的采集來自一卡通信息、學生成績系統、圖書管理系統,數據量十分巨大,采用Pandas進行了數據的清洗和分析,比如缺失值的處理;聚合、索引、選取和數據過濾等。清洗的數據以HDFS存于Hadoop集群中,推薦算法借助于了Spark MLlib的機器學習能力,進行了推薦模型的訓練;由Spark MLlib推薦的結果以標準數據格式JSON保存;推薦結果送入web端,進行頁面呈現。
面向REST服務的系統集成機制。WEB端有新的借閱行為并結合定時觸發以REST服務HTTP請求的方式觸發Python Pandas做數據清洗。清洗結束后,采用REST服務的方式發送HTTP請求,把數據推送給Spark Mllib。推薦結果存放在HDFS中,供登陸用戶使用。為了提高用戶使用感受,當用戶登陸后,會在以其學號命名的HDFS文件中讀取推薦結果顯示。如圖1所示。
1.2 構建云平臺
OpenStack是搭建云平臺的主流技術。OpenStack基于物理集群搭載多個虛擬機。虛擬機采用自管理,用戶可以通過圖形化界面的方式進行:虛擬機創建、開機、關機;掛起、暫停、調整;遷移、重啟、銷毀等操作。同時通過OpenStack,也可以默認或者用戶自定義管理配置CPU、內存、網絡等;同時對日志、鏡像的管理也十分方便[1]。
Spark集群由六臺虛擬機構成。四臺作為工作節點slave,一臺主節點master,一臺主備份節點master backup。本研究在OpenStack云平臺的基礎上搭建了Hadoop分布式的環境,并搭建了Spark的大數據框架,運行模式采用Spark on yarn。Spark推薦結果的數據將通過JSON數據格式與PHP web端進行交互。
2 基于不同策略的圖書推薦
2.1 推薦算法比較
推薦技術已經有很多的應用,有基于內容的個性化推薦算法、基于協同過濾的推薦算法、基于關聯規則的推薦算法等。下面對經典的圖書推薦算法進行比較,以選擇合適的推薦算法。
2.1.1 基于內容的個性化推薦算法
基于內容的推薦算法在圖書推薦中一般從用戶以往的歷史評價記錄中推斷出用戶對各個圖書的特征[2]。
2.1.2 基于協同過濾的推薦算法
該算法在推薦系統中被廣泛應用,該算法又分為兩種具體的算法實現。
(1)基于User的協同過濾算法。該算法需要搜尋興趣相似的“鄰居”用戶。在用戶對項目(Item)有評分的基礎上進行,首先分析不同評分之間的相似性,搜索與目標用戶興趣最相似的“鄰居”用戶,然后根據最相似的“鄰居”評分給目標用戶進行相關推薦。評分與計算用戶相似性是該算法的重點。(2)基于Item的協同過濾算法。該算法需要搜尋相似度大的項目,用戶對該項目興趣大,那么有很大的可能性會對相似的項目感興趣。該算法仍然是在用戶對項目有評分的基礎上進行,首先分析項目與項目的相似性,然后為目標用戶推薦可能感興趣的項目。評分與計算項目相似性是該算法的重點。
2.1.3 基于關聯規則的推薦算法
基于關聯規則的推薦算法是以關聯規則為基礎的,把曾經記錄下來的行為作為推薦基礎,從中挖掘出行為規律,發現不同用戶或者項目之間的關聯性,該算法無需重新為圖書提取特征信息,無需考慮評分,也不需要計算相似度。具體有Apriori算法和FP-growth(Frequent Pattern growth)算法。Apriori算法需要對數據庫進行多次掃描,同時產生大量的候選頻繁集,之后產生頻繁項式,這就使算法時間和空間復雜度較大。FP-growth算法只需要掃描兩次數據集,對大規模數據釆用分治的辦法以減少搜索空間,在時間效率、空間效率上都有一個量級的提高。
2.2 高校圖書館的圖書推薦
本文對圖書的推薦,基于關聯規則的推薦算法選擇了FP-Growth算法。組合了不同的策略。為用戶呈現8本推薦的書目,其中3條基于用戶行為相關性;2條基于圖書行為相關性;2條新書推薦,按專業推薦;1條基于學生成績的推薦,按課程推薦,是推薦算法與統計方法的結合。
FP-Growth算法中,支持度(Support)和置信度(Confidence)是關聯規則的兩個度量依據。支持度(Support)的公式是:Support(X=>Y)=P(X U Y),X的支持度是指事務集中同時包含X和Y的事務數與所有事務數的概率,概率小則說明X與Y的相關不大;反之則說明X與Y總是相關的。
Support(X=>Y)=P(XUY)=N(XUY)/N(T) 推導(1)
設M={M1,M2,…,Mm}是個元素的集合,其中的元素則是項(Item),設T是事務的集合,是由M中的元素構成的非空集合,且每一個事務TID有且僅有一個標識符。X包含于M,Y包含于M,并且X和Y沒有交集。N(XUY)是X和Y并的數量,N(T)是T中所有事務的數量[3]。
置信度(Confidence)的公式是:Confidence(X=>Y)=P(Y|X)。置信度揭示了X出現時,Y是否也會出現或有多大概率出現,概率越大,說明A的出現B有很大可能出現。見公式(2),其中support_N(XUY)是同時包含和的事務的支持度計數,support_N(X)只包含X的事務的支持度計數。
confidence(X=>Y)=P(Y|X)=support(X=>Y)/support(X)
=support_N(XUY)/support_N(X) 推導(2)
給定了最小支持度和最小置信度,接在就在給定的最小支持度度和最小置信度的基礎上確立了關聯規則,就可以進行頻繁項的挖掘了,指定全部圖書編號同時為關聯規則的前項(Antecedents)和后項(Consequents)來尋找頻繁相關借閱的書籍[4]。
FP-Growth的推薦方法能解決基于用戶行為相關性,基于圖書行為的推薦,但是對于新書的推薦和幫助專業成績提高為目的的推薦則沒有辦法,因此,本文結合了統計方法:對于新書,按專業和新書的上架時間推薦;對應專業成績提高則結合了課程與成績多種信息。
3 結果分析
推薦運行結果的一部分截取出來,如表1所示,這些規則展示了用戶借閱一本書后,很有可能會借閱另一本書。比如借閱了34號書的用戶有73.456%的可能借閱125號書,因此,就將為借閱34號書的用戶推薦125號書。
4 結語
基于云平臺與一卡通大數據的圖書推薦采用了OpenStack構建云平臺,搭建Spark集群,采用多種圖書推薦策略,結合FP-Growth算法與統計方法,為用戶推薦書目該過程考慮了用戶行為相關性和圖書行為相關性,同時也考慮了新書的推薦,基于學生成績的推薦,并考慮了推薦的準確率及推薦的多樣化。本研究還存在一些不足,比如采用HDFS文件存儲方式,雖然降低了耦合,但從Spark的架構方式來看,并不是最優,應減少寫入HDFS的次數,充分Spark實時快速的優勢。
參考文獻
[1]陳虹君,謝彩云.基于Spark的大數據實驗室建設的研究與實施[J].教育現代化,2016,(8):218-219+233.
[2]李瑞敏,林鴻飛,閆俊.基于用戶標簽項目語義挖掘的個性化音樂推薦[J].計算機研究與發展,2014,51(10):2270-2276.
[3]劉亞林.基于FP_growth算法的音樂推薦應用研究,北京交通大學[D],2015.
[4]趙力衡,陳虹君.基于Apriori算法的圖書推薦應用研[J].電腦知識與技術,2018,(4):211-212.