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