林楠 楊文淵 馬伊莉 朱婷婷 陳圣磊
摘 要:推薦系統(tǒng)是互聯(lián)網(wǎng)和電子商務(wù)的產(chǎn)物。它是建立在對(duì)海量數(shù)據(jù)訓(xùn)練的基礎(chǔ)上的一種智能平臺(tái),能夠向顧客提供個(gè)性化的信息服務(wù)和決策。隨著電子商務(wù)大數(shù)據(jù)的高速發(fā)展,推薦系統(tǒng)正逐漸成為學(xué)術(shù)界的研究熱點(diǎn)之一。針對(duì)推薦系統(tǒng)理論性強(qiáng)、內(nèi)容抽象的特點(diǎn),本文介紹了以MyMediaLite為平臺(tái)的個(gè)性化推薦實(shí)踐方案,并詳細(xì)闡述了其具體的實(shí)施過程。通過介紹MyMediaLite的系統(tǒng)結(jié)構(gòu)框架,以及分析基于MyMediaLite的實(shí)驗(yàn)過程,為研究者使用MyMediaLite推薦系統(tǒng)庫進(jìn)行算法研究奠定了基礎(chǔ)。
關(guān)鍵詞:個(gè)性化推薦;機(jī)器學(xué)習(xí);MyMediaLite;推薦系統(tǒng);協(xié)同過濾
中圖分類號(hào):TP317 文獻(xiàn)標(biāo)識(shí)碼:A
Abstract:The recommendation system is the product of Internet and e-commerce.It is an intelligent platform built on the basis of massive data training.It provides personalized information service and decision-making to customers.With the rapid development of big data in electronic commerce,the recommendation system is becoming one of the hot topics in the academic field.In view of the highly theoretical and abstract nature of the recommendation system,this paper introduces the personalized recommending practice scheme based on MyMediaLite,and expounds its specific implementation process in detail.By introducing the system framework of MyMediaLite and analyzing the experimental process based on MyMediaLite,it establishes a foundation for researchers to conduct studies on the algorithms with MyMediaLite recommendation system library.
Keywords:personalized recommendation;machine learning;Mymedialite;the recommendation system;collaborative
filtering
1 引言(Introduction)
互聯(lián)網(wǎng)的日益普及,使得電子商務(wù)成為人們生活中不可或缺的一部分。隨著大量商品和用戶群體的涌入,電子商務(wù)系統(tǒng)中的數(shù)據(jù)量呈爆炸式增長(zhǎng),這便使得推薦系統(tǒng)獲得了極大的發(fā)展空間。短時(shí)間內(nèi)涌現(xiàn)出很多諸如SVDFeature[1]、MyMediaLite[2]、Apache Mahout[3]等知名的開源推薦系統(tǒng)。SVDFeature包含一個(gè)很靈活的Matrix Factorization推薦框架,能方便地實(shí)現(xiàn)奇異值分解(SVD)和改進(jìn)的SVD++[4]等算法。Apache Mahout是一種能實(shí)現(xiàn)大多數(shù)分布式機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的平臺(tái)。其中有一部分包含了推薦算法中的協(xié)同過濾算法,但大部分其他類型推薦算法并未涉及。MyMediaLite提供了多種項(xiàng)目預(yù)測(cè)和評(píng)級(jí)預(yù)測(cè)任務(wù)下先進(jìn)的算法,以及為大多數(shù)推薦模型提供了增量式更新數(shù)據(jù)。與其他平臺(tái)相比,MyMediaLite囊括的算法與模型更加全面,對(duì)于推薦系統(tǒng)的系統(tǒng)學(xué)習(xí)和研究更有幫助。
2 MyMediaLite推薦系統(tǒng)庫(MyMediaLite
recommendation system library)
2.1 MyMediaLite簡(jiǎn)介
MyMediaLite是由德國希爾德海姆大學(xué)基于微軟.NET平臺(tái)開發(fā)的輕量級(jí)、多用途、可拓展的推薦系統(tǒng)算法庫。它包含了包括SVD++算法、K-近鄰(KNN)[5]算法和直接優(yōu)化物品排序的矩陣分解算法(BPRMF)[6]等在內(nèi)的幾十個(gè)不同的推薦算法。除了提供了常見場(chǎng)景的推薦算法,MyMediaLite也有Social Matrix Factorization這樣獨(dú)特的功能。在實(shí)現(xiàn)方面,MyMediaLite推薦系統(tǒng)庫涉及了兩個(gè)最常見的任務(wù):評(píng)級(jí)預(yù)測(cè)和項(xiàng)目預(yù)測(cè)。此外,精心設(shè)計(jì)的軟件框架可以使新算法的實(shí)現(xiàn)和評(píng)估更加容易。通過使用開源的Mono的項(xiàng)目,MyMediaLite可以在所有相關(guān)操作系統(tǒng)上使用。這個(gè)庫的使用不再僅限于C#,它可以很容易被其他語言如Ruby和Python調(diào)用。
2.2 推薦任務(wù)
2.2.1 評(píng)級(jí)預(yù)測(cè)
評(píng)級(jí)預(yù)測(cè)加載的評(píng)級(jí)是用戶偏好的顯式反饋(explicit feedback)。評(píng)級(jí)可以分為1—n級(jí),例如1—5級(jí),5級(jí)表示用戶十分喜歡,而1級(jí)則表示不喜歡。評(píng)級(jí)預(yù)測(cè)算法根據(jù)給定的已知評(píng)級(jí)集估算未知的評(píng)級(jí),從而推薦系統(tǒng)可以根據(jù)預(yù)測(cè)的評(píng)級(jí)進(jìn)行推薦。
MyMediaLite中包含的評(píng)級(jí)預(yù)測(cè)算法有:不同變種的K-近鄰(KNN)分類算法、簡(jiǎn)單基線算法(Slop-One)[7]和矩陣分解算法(SVD++)等。
評(píng)級(jí)預(yù)測(cè)下的常用的準(zhǔn)確性度量指標(biāo):RMSE(均方根誤差)和MAE(平均絕對(duì)誤差)。endprint
(1)RMSE:均方根誤差是均方誤差的算術(shù)平方根,如式(1)所示。其中observedt表示實(shí)際評(píng)級(jí),predictedt表示預(yù)測(cè)評(píng)級(jí)。均方根誤差常用于衡量推薦結(jié)果與實(shí)際結(jié)果的離散程度。均方根誤差越大,表明推薦結(jié)果與實(shí)際結(jié)果離散程度越大,推薦算法越不精準(zhǔn)。均方根誤差越小,表明推薦結(jié)果與實(shí)際結(jié)果的離散程度越小,推薦算法精度越高。
2.2.2 項(xiàng)目預(yù)測(cè)
與評(píng)級(jí)預(yù)測(cè)不同的是,項(xiàng)目預(yù)測(cè)加載的數(shù)據(jù)是用戶偏好的隱式反饋(implicit feedback),如用戶瀏覽頁面的時(shí)間、轉(zhuǎn)發(fā)行為、購買等。購買商品或者長(zhǎng)時(shí)間瀏覽某個(gè)商品的頁面的行為可以很好地從側(cè)面體現(xiàn)出用戶的偏好。現(xiàn)實(shí)生活中的大多數(shù)推薦系統(tǒng)(如電子商務(wù)等)也往往并不依賴評(píng)級(jí),它們往往根據(jù)用戶的歷史行為推測(cè)出用戶的偏好,從而推薦出與用戶偏好相一致的產(chǎn)品。
MyMediaLite中包含的項(xiàng)目預(yù)測(cè)算法有:K-近鄰分類算法、簡(jiǎn)單基線算法(Random,MostPopular)、矩陣分解算法(BPR-MF,WR-MF)等。
項(xiàng)目預(yù)測(cè)下常用的準(zhǔn)確性度量指標(biāo)有:prec@N和AUC。
(1)prec@N(precision at N): 推薦準(zhǔn)確率表示算法推薦成功的比率,如式(3)所示。其中test表示測(cè)試集,top-N表示系統(tǒng)推薦給用戶的N個(gè)項(xiàng)目。
(2)AUC(Area Under the ROC Curve):AUC被定義為ROC曲線下的面積。ROC(Receiver Operating Characteristic)有兩個(gè)指標(biāo):sensitivity(敏感度)和Specificity(特異度)[8]。前者為任選一個(gè)用戶喜歡的項(xiàng)目,該項(xiàng)目被系統(tǒng)推薦的概率;后者為任選一個(gè)用戶不喜歡的項(xiàng)目,該項(xiàng)目未被系統(tǒng)推薦的概率。設(shè)定一個(gè)域值,項(xiàng)目被正確推薦的概率大于域值的,認(rèn)為是用戶喜歡的項(xiàng)目;概率小于域值的,認(rèn)為是用戶不喜歡的項(xiàng)目。圖1所示為ROC曲線,縱坐標(biāo)Sensitivity,橫坐標(biāo)為1-specificity。
Sensitivity值在0到1之間變化,給定一個(gè)域值,就對(duì)應(yīng)圖中左上角的曲線上的一個(gè)點(diǎn)。圖中穿過原點(diǎn)和(1,1)點(diǎn)的直線表示一個(gè)隨機(jī)推薦的系統(tǒng),即任選一個(gè)用戶喜歡的項(xiàng)目,該項(xiàng)目被系統(tǒng)推薦的概率為0.5。由圖1可知,曲線越向左上角靠近,則AUC越大,說明推薦系統(tǒng)的推薦精度越高,反之則越低。
3 基于MyMediaLite的實(shí)驗(yàn)過程(Experimental
process based on MyMediaLite)
由于MyMediaLite使用C#進(jìn)行編寫和Windows的廣泛使用,本次實(shí)驗(yàn)將使用Visual Studio 2010的開發(fā)環(huán)境進(jìn)行實(shí)驗(yàn)。
3.1 數(shù)據(jù)選取
本次實(shí)驗(yàn)我們使用的是推薦系統(tǒng)研究中權(quán)威的測(cè)試集MoiveLens-100k。數(shù)據(jù)集一共記錄了943名用戶對(duì)于1682部電影的100000條評(píng)級(jí)記錄(1—5)。其中每名用戶至少評(píng)論過20部電影。
其中u.base文件中記錄的是數(shù)據(jù)集中完整的數(shù)據(jù)。它是一個(gè)制表符分隔數(shù)據(jù)的列表,每一行的數(shù)據(jù)包含用戶ID、項(xiàng)目、評(píng)級(jí)、時(shí)間戳。u1.base和u1.test到u5.base和u5.test則是將u.base中的完整數(shù)據(jù)按照80%/20%的比率分割成的5組訓(xùn)練數(shù)據(jù)與比對(duì)數(shù)據(jù)。ua.base、ua.test和ub.base、ub.test則是按照將每個(gè)用戶10%的評(píng)級(jí)加入比對(duì)數(shù)據(jù)的規(guī)則進(jìn)行分割得到的訓(xùn)練數(shù)據(jù)和比對(duì)數(shù)據(jù)。訓(xùn)練數(shù)據(jù)(.base)用于訓(xùn)練模型,從而得到用戶的偏好,而比對(duì)數(shù)據(jù)(.test)則用于測(cè)試推薦系統(tǒng)推薦的精準(zhǔn)度。
需要注意的是,將MoiveLens數(shù)據(jù)集用于MyMediaLite時(shí),RatingPrediction下的算法將截取前三列作為數(shù)據(jù)(用戶、項(xiàng)目、評(píng)分),而ItemRecommender下的算法將只取前兩列作為數(shù)據(jù)(用戶、項(xiàng)目)。
3.2 運(yùn)行配置
MyMediaLite推薦系統(tǒng)庫是以C#源碼的形式提供給用戶使用的,它實(shí)際上是一個(gè)依賴于.NET框架的程序集。雖然源代碼的形式可以讓我們深入了解算法底層的細(xì)節(jié),從而根據(jù)業(yè)務(wù)的場(chǎng)景進(jìn)行算法配置和調(diào)優(yōu),但這樣無疑增加了很多使用難度。在使用MyMediaLite進(jìn)行推薦實(shí)驗(yàn)之前,我們需要進(jìn)行相關(guān)的配置。
3.2.1 引用的動(dòng)態(tài)鏈接庫文件
打開程序集中源碼(src)文件夾下的解決方案文件MyMediaLite.sln,則可以在VS2010中查看MyMediaLite的解決方案。通過項(xiàng)目MyMediaLite,可以對(duì)MyMediaLite推薦算法庫中算法的源碼進(jìn)行查看。
MyMediaLite項(xiàng)目需要四個(gè)類庫文件的支持:C5、MathNet.Numerics、MathNet.Numerics.IO和Mono.Posix。
需要注意的是,MyMediaLite推薦算法庫的發(fā)行版不會(huì)自帶Mono.Posix的庫文件,需要用戶自行下載并引用,否則項(xiàng)目將無法通過之后的編譯。
3.2.2 動(dòng)態(tài)鏈接庫文件的生成
將MyMediaLite項(xiàng)目生成,之后便可以在src/MyMediaLite/bin/Debug目錄下找到生成的MyMediaLite.dll、MyMediaLite.pdb和項(xiàng)目引用的庫文件。
動(dòng)態(tài)鏈接庫文件(.dll)為我們使用MyMediaLite推薦系統(tǒng)庫提供了應(yīng)用程序接口。調(diào)試配置文件(.pdb)可以為我們的應(yīng)用程序和源碼之間建起一座橋梁,它將讓我們?cè)谡{(diào)試時(shí)準(zhǔn)確定位到源碼。
3.3 新建實(shí)驗(yàn)項(xiàng)目
使用C#新建一個(gè)控制臺(tái)程序,在項(xiàng)目中引用MyMediaLite.dll,然后在主函數(shù)中輸入相應(yīng)代碼(以評(píng)級(jí)預(yù)測(cè)任務(wù)中的SVD++為例),源代碼如下所示。該代碼展示了使用MyMediaLite推薦系統(tǒng)庫的常見步驟;(1)加載數(shù)據(jù);(2)建立推薦系統(tǒng)模型;(3)訓(xùn)練數(shù)據(jù);(4)得出推薦結(jié)果。endprint
3.4 參數(shù)設(shè)置
接下來設(shè)置程序的命令行參數(shù),將一組訓(xùn)練數(shù)據(jù)與比對(duì)數(shù)據(jù)作為參數(shù)傳入到應(yīng)用程序中。在項(xiàng)目屬性中選擇調(diào)試,將啟動(dòng)選項(xiàng)的工作目錄選定為MoiveLens數(shù)據(jù)集的文件地址,命令行參數(shù)選擇u1.base文件和u1.test文件(以空格隔開),這樣就能順利地把訓(xùn)練數(shù)據(jù)和比對(duì)數(shù)據(jù)加載到應(yīng)用程序中。
3.5 結(jié)果分析
運(yùn)行應(yīng)用程序的結(jié)果如圖2所示。由結(jié)果可知,通過對(duì)訓(xùn)練數(shù)據(jù)集u1.base的訓(xùn)練,以及與比對(duì)數(shù)據(jù)集u1.test的比對(duì),推薦算法SVD++推薦的均方誤差(RMSE)為0.9701232,平均絕對(duì)誤差(MAE)為0.7696601。根據(jù)用戶的偏好模型,推薦算法SVD++給出了用戶1對(duì)項(xiàng)目1的預(yù)測(cè)評(píng)級(jí)4.022615,以及用戶1預(yù)測(cè)評(píng)級(jí)最高的20個(gè)商品的編號(hào)和相應(yīng)的評(píng)級(jí)。
4 結(jié)論(Conclusion)
個(gè)性化推薦系統(tǒng)具有理論性強(qiáng)、方法繁多、實(shí)踐困難等特點(diǎn)。使用諸如MyMediaLite推薦算法庫這類開源的平臺(tái),能夠幫助使用者更加全面、深入、系統(tǒng)地學(xué)習(xí)推薦系統(tǒng)。但隨著個(gè)性化推薦系統(tǒng)研究的深入和技術(shù)的快速提升,僅僅局限于學(xué)習(xí)MyMediaLite推薦系統(tǒng)庫中的推薦方法還是不夠的,我們將繼續(xù)深入研究,以改進(jìn)MyMediaLite中的算法。
參考文獻(xiàn)(References)
[1] Chen T,Zhang W,Lu Q,et al.SVDFeature:a toolkit for feature-based collaborative filtering[J].Journal of Machine Learning Research(JMLR),2012,13(1):3619-3622.
[2] Gantner Z,Rendle S,F(xiàn)reudenthaler C,et al.MyMediaLite:a free recommender system library[C].ACM Conference on Recommender Systems(RecSys),2011:305-308.
[3] Sadafale K,Sadafale K.An online recommendation system for e-commerce based on apache mahout framework[C].Conference on Computers and People Research(SIGMIS-CPR),2013:153-158.
[4] Koren Y.Factorization meets the neighborhood:a multifaceted collaborative filtering model[C].ACM SIGKDD International Conference on Knowledge Discovery and Data Mining(SIGKDD),2008:426-434.
[5] 張著英,黃玉龍,王翰虎.一個(gè)高效的KNN分類算法[J].計(jì)算機(jī)科學(xué),2008,35(3):170-172.
[6] Salakhutdinov R,Mnih A.Bayesian probabilistic matrix factorization using Markov chain Monte Carlo[C].International Conference on Machine Learning(ICML),2008:880-887.
[7] Lemire D,Maclachlan A.Slope One Predictors for Online Rating-Based Collaborative Filtering[J].Computer Science,
2005:21-23.
[8] Yang Y,Liu X.A re-examination of text catego rization methods[C].In:Proceedings of ACM SIGIR Conference on Research and Development in Information Retrieval(SIGIR),
1999:42-49.
作者簡(jiǎn)介:
林 楠(1997-),男,本科生.研究領(lǐng)域:推薦系統(tǒng).
楊文淵(1994-),男,本科生.研究領(lǐng)域:軟件工程.
馬伊莉(1997-),女,本科生.研究領(lǐng)域:前端開發(fā).
朱婷婷(1997-),女,本科生.研究領(lǐng)域:前端開發(fā).
陳圣磊(1977-),男,博士,副教授.研究領(lǐng)域:機(jī)器學(xué)習(xí),數(shù)據(jù)挖掘.endprint