嚴水歌,付珍珍(南通大學現(xiàn)代教育技術(shù)中心,南通 226000)
基于Mahout的高校學生食堂就餐窗口推薦算法研究
嚴水歌,付珍珍
(南通大學現(xiàn)代教育技術(shù)中心,南通226000)
從2011年開始,中國進入大數(shù)據(jù)風起云涌的時代,以Hadoop[1]為代表的家族軟件,占據(jù)了大數(shù)據(jù)處理的廣闊地盤。開源界及廠商,所有數(shù)據(jù)軟件,無一不向Hadoop靠攏。Hadoop逐步變成了大數(shù)據(jù)開發(fā)的標準。在Hadoop原有技術(shù)基礎(chǔ)之上,出現(xiàn)了Hadoop家族產(chǎn)品,常用的項目包括Hadoop,Hive,Pig,HBase,Sqoop,Mahout,Zookeeper,Avro,Ambari,Chukwa等。通過“大數(shù)據(jù)”概念不斷創(chuàng)新,推出科技進步。Mahout是Hadoop家族中與眾不同的一個成員,是一個基于Hadoop的機器學習和數(shù)據(jù)挖掘的分布式計算框架。Mahout為數(shù)據(jù)分析人員解決了大數(shù)據(jù)的門檻;同時為算法工程師提供了基礎(chǔ)的算法庫;對于Hadoop開發(fā)人員而言提供了數(shù)據(jù)建模的標準;對于運維人員而言,為其打通了和Hadoop的連接渠道。Mahout完整地封裝了“協(xié)同過濾”算法,并實現(xiàn)了并行化,提供了非常簡單的API接口,本文用Mahout來構(gòu)建推薦系統(tǒng),抽樣統(tǒng)計我校學生對學校食堂各就餐窗口進行評分,得到一個數(shù)據(jù)集,采用基于Mahout推薦算法API對數(shù)據(jù)集進行分析,能得到非常高效的結(jié)果。
協(xié)同過濾推薦算法主要有基于用戶的協(xié)同過濾,基于item的協(xié)同過濾以及SlopeOne推薦算法?;谟脩舻膮f(xié)同過濾,通過不同用戶對物品的評分來評測用戶之間的相似性,基于用戶之間的相似性做出推薦。簡單來講就是:給用戶推薦和他興趣相似的其他用戶喜歡的物品。計算上,就是將一個用戶對所有物品的偏好作為一個向量來計算用戶之間的相似度,找到K鄰居后,根據(jù)鄰居的相似度權(quán)重以及他們對物品的偏好,預測當前用戶沒有偏好的未涉及物品,計算得到一個排序的物品列表作為推薦?;趇tem的協(xié)同過濾,通過用戶對不同item的評分來評測item之間的相似性,基于item之間的相似性做出推薦。簡單來講就是:給用戶推薦和他之前喜歡的物品相似的物品?;贗temCF的原理和基于UserCF類似,只是在計算鄰居時采用物品本身,而不是從用戶的角度,即基于用戶對物品的偏好找到相似的物品,然后根據(jù)用戶的歷史偏好,推薦相似的物品給他。從計算的角度看,就是將所有用戶對某個物品的偏好作為一個向量來計算物品之間的相似度,得到物品的相似物品后,根據(jù)用戶歷史的偏好預測當前用戶還沒有表示偏好的物品,計算得到一個排序的物品列表作為推薦。基于物品的協(xié)同過濾算法可分為三個步驟,步驟1:建立物品的同現(xiàn)矩陣,按用戶分組,找到每個用戶所選的物品,單獨出現(xiàn)計數(shù)及兩兩一組計數(shù)。步驟2:建立用戶對物品的評分矩陣,按用戶分組,找到每個用戶所選的物品及評分。步驟3:矩陣計算推薦結(jié)果,推薦結(jié)果是同現(xiàn)矩陣和評分矩陣的乘積,即同現(xiàn)矩陣×評分矩陣=推薦結(jié)果。SlopeOne是一種簡單高效的協(xié)同過濾算法。通過均差計算進行評分。其基本思想是采用平均加權(quán)計算。Slope One的核心優(yōu)勢是在大規(guī)模的數(shù)據(jù)上,它依然能保證良好的計算速度和推薦效果。
基于Mahout環(huán)境開發(fā),官方建議我們的標準化的程序開發(fā)過程可以參見圖1。
圖1 一個簡單的基于用戶推薦的插圖[3]
圖1清晰展現(xiàn)了基于Mahout開發(fā)推薦系統(tǒng)的完整流轉(zhuǎn)過程。從圖中我們可以粗略地看出推薦引擎分為5個主要部分組成,分別是數(shù)據(jù)模型,相似度算法,近鄰算法,推薦算法以及算法評分器。Mahout框架里面的接口包cf.taste包實現(xiàn)了推薦算法引擎,它提供了一套完整的推薦算法工具集,同時規(guī)范了數(shù)據(jù)結(jié)構(gòu),并標準化了程序開發(fā)過程。根據(jù)Mahout推薦引擎,我們可以創(chuàng)建自己的推薦引擎構(gòu)造器,主要用到的關(guān)鍵API接口列舉如下:recommend(long userID,int howMany),該方法獲得推薦結(jié)果,給指定userID推薦howMany個Item。推薦算法實現(xiàn)類主要有GenericUserBasedRecommender,該實現(xiàn)類是基于用戶的推薦算法的。GenericItemBasedRecommender類是基于物品的推薦算法的。構(gòu)造自己的推薦系統(tǒng),具體步驟可歸結(jié)如下:
①構(gòu)造數(shù)據(jù)模型
②構(gòu)造相似度算法模型,該步驟需要計算用戶相似度距離,衡量用戶相似度距離可以用歐氏距離相似度 (EuclideanDistanceSimilarity)和對數(shù)似然相似度(LogLikelihoodSimilarity)。其中歐式距離d可表示如下:
利用歐氏距離d定義的相似度s,s=1/(1+d)。由表達式可以得知其范圍介于0與1之間,歐氏距離相似度的值越大,說明d越小,也就是距離越近,則相似度越大。
③構(gòu)造近鄰算法模型
近鄰算法給相似的用戶進行排序,選出前N個最相似的,作為最終推薦的參考的用戶。近鄰算法分為2種,即 NearestNUserNeighborhood算法[4]和 Threshold UserNeighborhood算法。NearestNUserNeighborhood算法指定最近鄰用戶N的個數(shù)。例如選出前10最相似的用戶。ThresholdUserNeighborhood算法指定最近鄰用戶的比例。例如選擇前10%最相似的用戶。
④構(gòu)造推薦算法模型
⑤構(gòu)造算法評估模型
⑥推薦結(jié)果輸出
3.1搭建開發(fā)環(huán)境
本次實驗所需要的實驗環(huán)境列舉見表1。
表1 實驗環(huán)境
3.2實驗數(shù)據(jù)說明
本次實驗選取我校主校區(qū)學生對兩個學生食堂各窗口的服務,就餐等各方面進行綜合評分。根據(jù)該調(diào)查,對實驗數(shù)據(jù)集進行以下闡述:第一個數(shù)據(jù)集以rating2.csv命名,見圖所示。第二個數(shù)據(jù)集是學校學生食堂的窗口組別,見圖2所示。
rating.csv文件是一個行為數(shù)據(jù)集,該數(shù)據(jù)集有3列數(shù)據(jù),第一列是學生ID,標識每個學生,為了更加清晰表達含義,選取自增的數(shù)據(jù)來標識每個學生,其中增量選取為1,這種表示方式跟用學生學號標識學生具有同樣意義。第二列是POS機ID,該ID標識每個食堂窗口,第三列是具體某個學生對各個窗口的評分。測試集的記錄數(shù)是4000,代表學生對窗口的評分次數(shù)。統(tǒng)計的學生數(shù)為200個,選取100個窗口進行評分。評分值用1-10表示。
圖2 實驗數(shù)據(jù)集截圖
圖3 食堂窗口組別截圖
該截圖所列出的記錄是我校主校區(qū)兩個學生食堂的窗口組別,每個食堂的每個組別下面有若干個窗口,實驗數(shù)據(jù)集里的每個窗口號都在這組別里。也就是說數(shù)據(jù)集中的窗口號與該記錄是多對一的關(guān)系。
3.3實驗過程
我們選擇了基于用戶的協(xié)同過濾(UserCF),基于物品的協(xié)同過濾ItemCF以及SlopeOne算法共3種推薦算法,本實驗進行了7種組合的測試,主要是針對相似度算法模型和推薦算法的不同組合,其中基于用戶的協(xié)同過濾算法有三種組合,采用歐氏距離用戶相似度或?qū)?shù)似然用戶相似度,最近鄰算法以及基于用戶的有評分和無評分的推薦算法組合。基于物品的協(xié)同過濾算法也有三種組合,其組成部分也采用歐氏距離用戶相似度或?qū)?shù)似然用戶相似度,最近鄰算法以及基于用戶的有評分和無評分的推薦算法組合,詳見表2列舉如下:
表2 推薦算法組合測試
3.4算法評估
算法評判標準:召回率(recall)與查準率[5](precision)。Mahout提供了2個評估推薦器的指標,查準率和召回率(查全率),這兩個指標是搜索引擎中經(jīng)典的度量方法[6]。結(jié)果集按檢索到的以及未檢索到的,相關(guān)性與不相關(guān)性可以有4種組合,這4種組合用一個表格展示,請參見表3。
表3 算法評判標準
表格中A表示檢索到的,而且是相關(guān)的,即結(jié)果集是搜到的也是想要的。B表示未檢索到的,但是相關(guān)的,即結(jié)果集是沒搜到,然而實際上想要的。C表示檢索到的,但是不相關(guān)的,即結(jié)果集是搜到的,但是沒用的。D表示結(jié)果集是未檢索到的,也是不相關(guān)的,即結(jié)果集沒搜到也沒用的。查準率用P表示,P=A/(A+C)。被檢索到的結(jié)果集相關(guān)得越多越好,不相關(guān)的越少越好,這是追求“查準率”,即A/(A+C)的值越大越好。召回率用R表示,R=A/(A+B)。結(jié)果集被檢索得越多越好,這是追求“查全率”,即A/(A+B),其值越大越好。
3.5實驗結(jié)果
經(jīng)過7種算法組合的測試,用查準率和召回率兩個指標對7種算法組合進行評估,形成如下結(jié)果集,具體參見表4。
為了得到差異化結(jié)果,我們分別取4個算法:userEuclidean,itemEuclidean,userEuclideanNoPref,item EuclideanNoPref,也就是采用歐氏距離用戶相似度,基于用戶和物品的推薦算法,并且采用有評分和無評分,對推薦結(jié)果進行比較,形成如下推薦結(jié)果,對推薦結(jié)果進行一個截圖,見圖所示。
圖4中左列列出的是算法名稱,右列是針對4種推薦算法形成的實驗結(jié)果,針對每一種推薦算法,根據(jù)每個學生已有的一些評分,給每一個學生推薦三個窗口。實驗所得到的結(jié)果集是綜合各方面所得到的最佳推薦結(jié)果。
圖4 實驗結(jié)果集截圖
表4 實驗結(jié)果
[1]鄧雄杰.基于Hadoop的推薦系統(tǒng)的設(shè)計與實現(xiàn)[D].華南理工大學,2013
[2]周濤,李華.基于用戶情景的協(xié)同過濾推薦[J].計算機應用,2010(04).
[3]S.Owen,R.Anil,T.Dunning,E.Friedman.Mahout in action,2011
[4]M.Deshpande,G.Karypis.Item-based top-n recommendation algorithms.ACM Transactions on Information Systems,2004
[5]李文海,許舒人.基于Hadoop的電子商務推薦系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2014(01).
[6]Shlomo Berkovsky,Tsvi Kuflik,F(xiàn)rancesco Ricci.Mediation of user models for enhanced personalization in recommender systems[J]. User Modeling and User-Adapted Interaction,2008(3).
Mahout;Collaborative Filtering;Recommendation System;Precision;Recall
Research on Dining Windows Recommendation Algorithm for Students in Higher Education Based on Mahout
YAN Shui-ge,F(xiàn)U Zhen-zhen
(Modern Educational Technology Centre,Nantong University,Nantong 226000)
1007-1423(2015)23-0024-05
10.3969/j.issn.1007-1423.2015.23.005
2015-06-09
2015-07-31
討論基于Mahout的推薦系統(tǒng)開發(fā)過程,以我校學生對學校食堂各就餐窗口進行評分為例,通過建立實驗系統(tǒng),利用Mahout推薦系統(tǒng)引擎提供的API分析實驗數(shù)據(jù)。該實驗樣例完整地闡述創(chuàng)建自己的推薦引擎構(gòu)造器的過程。本實驗采用常用的協(xié)同過濾推薦算法,協(xié)同過濾推薦算法主要包括基于用戶的協(xié)同過濾,基于物品的協(xié)同過濾以及Slope-One推薦算法。搭建自己的開發(fā)環(huán)境,基于相似度算法模型和推薦算法,使用7種不同組合進行對比實驗。使用查準率和召回率兩個指標對7種算法組合進行評估。采用歐氏距離用戶相似度,基于用戶和物品的推薦算法,并且采用有評分和無評分的方法對推薦結(jié)果進行比較,由實驗得知,基于Mahout的推薦系統(tǒng)能快速高效地給學生推薦相似的就餐窗口。
Mahout;協(xié)同過濾;推薦系統(tǒng);查準率;召回率
嚴水歌,男,碩士,初級實驗師,研究方向為數(shù)據(jù)挖掘
付珍珍,女,碩士,初級實驗師,研究方向為數(shù)據(jù)挖掘
Constructs an experimental system based on the deep discussion on development process of Mahout recommended system and empirical researches on scoring all dining windows by students.Furthermore,conducts a deep analysis on experimental data through API provided by Mahout recommended system engine.This experimental sample completely narrates the process to create its own recommended engine constructor.The commonly-used collaborative filtering recommendation algorithm is adopted by this experiment which includes collaborative filtering of users,collaborative filtering of articles and recommendation algorithm of SlopeOne.Under construction of its own development environment,adopts seven different combinations to conduct contrast experiment based on similarity algorithm model and recommended algorithm.Precision ratio and recall rate are applied to evaluate the seven algorithm combinations.Compares these recommended results through Euclidean distance similarity of users,collaborative filtering of users,collaborative filtering of articles,scoring method and non-scoring method.From the experimental results,it can be concluded that recommended system of Mahout can efficiently and rapidly recommend similar dining windows to students.