十大开源推荐系统简介 [转自oschina]
最近這兩年推薦系統特別火,本文搜集整理了一些比較好的開源推薦系統,即有輕量級的適用于做研究的SVDFeature、LibMF、LibFM等,也有重 量級的適用于工業系統的 Mahout、Oryx、EasyRecd等。PS:這里的top 10僅代表oschina觀點。
1. SVDFeature
上海交通大學 Apex實驗室 【C++】項目主頁:http://svdfeature.apexlab.org/wiki/Main_Page
項目簡介:一個feature-based協同過濾和排序工具,由上海交大Apex實驗室開發,代碼質量較高。在KDD Cup 2012中獲得第一名,KDD Cup 2011中獲得第三名,相關論文 發表在2012的JMLR中,這足以說明它的高大上。SVDFeature 包含一個很靈活的Matrix Factorization推薦框架,能方便的實現SVD、SVD++等方法, ?是單模型推薦算法中精度最高的一種。SVDFeature代碼精煉,可以用 相對較少的內存實現較大規模的單機版矩陣分解運算。另外含有Logistic ?regression的model,可以很方便的用來進行ensemble。
2. LibMF
臺灣國立大學 【C++】項目主頁:http://www.csie.ntu.edu.tw/~cjlin/libmf/
項目內容:作者Chih-Jen Lin來自大名鼎鼎的臺灣國立大學,他們在機器學習領域享有盛名,近年連續多屆KDD Cup競賽上均 獲得優異成績,并曾連續多年獲得冠軍。臺灣大學的風格非常務實,業界常用的LibSVM, Liblinear等都是他們開發的,開源代碼的效率和質量都非常高。LibMF 在矩陣分解的并行化方面作出了很好的貢獻,針對SGD(隨即梯度下降)優化方法在并行計算中存在的locking problem和memory ?discontinuity問題,提出了一種 矩陣分解的高效算法FPSGD(Fast Parallel ?SGD),根據計算節點的個數來劃分評分矩陣block,并分配計算節點。系統介紹可以見這篇?論文(ACM Recsys 2013的 Best paper Award)。
3. Libfm
德國Konstanz大學 【C++】項目主頁:http://www.libfm.org/?
項目內容:Steffen Rendle用LibFM同時玩轉KDD Cup 2012 Track1和Track2兩個子競賽單元,都取得了很好的成績,說明LibFM是非常管用的利器。LibFM 是專門用于矩陣分解的利器,尤其是其中實現了MCMC(Markov Chain Monte ?Carlo)優化算法,比常見的SGD優化方法精度要高,但運算速度要慢一些。當然LibFM中還實現了SGD、SGDA(Adaptive ?SGD)、ALS (Alternating Least Squares)等算法。
4. LensKit
美國明尼蘇達大學 GroupLens團隊【Java】項目主頁:http://lenskit.grouplens.org/?
項目內容:這個Java開發的開源推薦系統,來自美國的明尼蘇達大學的GroupLens團隊,也是推薦領域知名的測試數據集Movielens的作者。該源碼托管在GitHub上,https://github.com/grouplens/lenskit。 主要包含lenskit-api,lenskit-core, ?lenskit-knn,lenskit-svd,lenskit-slopone,lenskit-parent,lenskit-data- structures,lenskit-eval,lenskit-test等模塊,主要實現了k-NN,SVD,Slope-One等 ?典型的推薦系統算法。
5. GraphLab
美國卡耐基·梅隆大學【C++】項目主頁:GraphLab - Collaborative Filtering
項目內容:Graphlab 是基于C++開發的一個高性能分布式graph處理挖掘系統,特點是對迭代的并行計算處理能力強(這方面是hadoop的弱項),由于功能獨 到,GraphLab在業界名聲很響。 用GraphLab來進行大數據量的random ?walk或graph-based的推薦算法非常有效。Graphlab雖然名氣比較響亮(CMU開發),但是對一般數據量的應用來說可能還用不上。GraphLab 主要實現了ALS,CCD++,SGD,Bias-SGD,SVD++,Weighted-ALS,Sparse-ALS,Non-negative ?Matrix Factorization,Restarted Lanczos Algorithm等算法。
6. Mahout
Apache Software Foundation 【Java】項目主頁:http://mahout.apache.org/?
項目內容:Mahout ?是 Apache Software Foundation (ASF) ?開發的一個全新的開源項目,其主要目標是創建一些可伸縮的機器學習算法,供開發人員在 Apache 在許可下免費 使用。Mahout項目是由 ?Apache Lucene社區中對機器學習感興趣的一些成員發起的,他們希望建立一個可靠、文檔翔實、可伸縮的項目,在其中實現一些常見的用于 ?聚類和分類的機器學習算法。該社區最初基于 Ngetal. 的文章 “Map-Reduce for Machine Learning on ?Multicore”,但此后在發展中又并入了更多廣泛的機器學習 方法,包括Collaborative ?Filtering(CF),Dimensionality Reduction,Topic Models等。此外,通過使用 Apache ?Hadoop 庫,Mahout 可以有效地擴展到云中。在Mahout的Recommendation類算法中,主要有User-Based CF,Item-Based CF,ALS,ALS on Implicit Feedback,Weighted MF,SVD++,Parallel SGD等。
7. Myrrix
Mahout變種 【Java】項目主頁:http://myrrix.com/?
項目內容:Myrrix 最初是Mahout的作者之一Sean ?Owen基于Mahout開發的一個試驗性質的推薦系統。目前Myrrix已經是一個完整的、實時的、可擴展的集群和推薦系統,主要 ?架構分為兩部分:服務層:在線服務,響應請求、數據讀入、提供實時推薦;計算層:用于分布式離線計算,在后臺使用分布式機器學習算法為服務層更新機器學習模型。Myrrix使用這兩個層構建了一個完整的推薦系統,服務層是一個HTTP服務器,能夠接收更新,并在毫秒級別內計算出更新結果。服務層可以單獨使用,無需計算層,它會在本地運行機器學習算法。計算層也可以單獨使用,其本質是一系列的Hadoop jobs。目前Myrrix以被 ?Cloudera 并入Oryx項目。
8. EasyREC
Austrian Federal Ministry of Science and Research 【Java】項目主頁:http://easyrec.org/?
項目內容:EasyRec 是一個易集成、易擴展、功能強大且具有可視化管理的推薦系統,更像一個完整的推薦產品,包括了數據錄入模塊、管理模塊、推薦挖掘、離線分析等。 ?EasyRec可以同時給多個不同的網站提供推薦服務,通過tenant來區分不同的網站。架設EasyRec服務器,為網站申請tenant,通過 tenant就可以很方便的集成到 ?網站中。通過各種不同的數據收集網站的用戶行為,EasyRec通過離線分析,就可以產生推薦信息,網站就可以通過 Recommendations和Community Rankings來進行推薦業務的實現。
9. Waffles
【C++】項目主頁:http://waffles.sourceforge.net/?
項目內容:Waffles 英文原意是蜂蜜甜餅,在這里卻指代一個非常強大的機器學習的開源工具包。Waffles里包含的算法特別多,涉及機器學習的方方面面,推薦系統位于其中的Waffles_recommend ?tool,大概只占整個Waffles的1/10的內容,其它還有分類、聚類、采樣、降維、數據可視化、音頻處理等許許多多工具包,估計 ?能與之媲美的也就數Weka了。
10. RapidMiner
【Java】項目主頁:http://rapidminer.com/?
項目內容:RapidMiner(前身是Yale)是一個比較成熟的數據挖掘解決方案,包括常見的機器學習、NLP、推薦、預測等方法(推薦只占其中很小一部分),而且帶有GUI的數據分析環境,數據ETL、預處理、可視化、評估、部署等整套系統都有。另外RapidMiner提供commercial ?license,提供R語言接口,感覺在向著一個商用的 數據挖掘公司的方向在前進。
總結
以上是生活随笔為你收集整理的十大开源推荐系统简介 [转自oschina]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于内容推荐系统中的常识 [ACM暑校]
- 下一篇: 浅析Windows2000/XP服务与后