最 近這兩年推薦系統特別火,本文蒐集整理了一些比較好的開源推薦系統,即有輕量級的適用於作研究的SVDFeature、LibMF、LibFM等,也有重 量級的適用於工業系統的 Mahout、Oryx、EasyRecd等,供你們參考。PS:這裏的top 10僅表明我的觀點。 html
主頁:http://svdfeature.apexlab.org/wiki/Main_Page 語言:C++
一個feature-based協同過濾和排序工具,由上海交大Apex實驗室開發,代碼質量較高。在KDD Cup 2012中得到第一名,KDD Cup 2011中得到第三名,相關論文 發表在2012的JMLR中,這足以說明它的高大上。
SVDFeature 包含一個很靈活的Matrix Factorization推薦框架,能方便的實現SVD、SVD++等方法, 是單模型推薦算法中精度最高的一種。SVDFeature代碼精煉,能夠用 相對較少的內存實現較大規模的單機版矩陣分解運算。另外含有Logistic regression的model,能夠很方便的用來進行ensemble。 git
主頁:http://www.csie.ntu.edu.tw/~cjlin/libmf/ 語言:C++
做者Chih-Jen Lin來自大名鼎鼎的臺灣國立大學,他們在機器學習領域頗負盛名,近年連續多屆KDD Cup競賽上均 得到優異成績,並曾連續多年得到冠軍。臺灣大學的風格很是務實,業界經常使用的LibSVM, Liblinear等都是他們開發的,開源代碼的效率和質量都很是高。
LibMF 在矩陣分解的並行化方面做出了很好的貢獻,針對SGD(隨即梯度降低)優化方法在並行計算中存在的locking problem和memory discontinuity問題,提出了一種 矩陣分解的高效算法FPSGD(Fast Parallel SGD),根據計算節點的個數來劃分評分矩陣block,並分配計算節點。系統介紹能夠見這篇 論文(ACM Recsys 2013的 Best paper Award)。 github
主頁:http://www.libfm.org/ 語言:C++
做者是德國Konstanz大學的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)等算法。 算法
主頁:http://lenskit.grouplens.org/ 語言Java apache
這個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等 典型的推薦系統算法。 編程
主頁:GraphLab - Collaborative Filtering 語言:C++
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等算法。 api
主頁:http://mahout.apache.org/ 語言:Java
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等。 服務器
主頁:http://myrrix.com/ 語言:Java
Myrrix 最初是Mahout的做者之一Sean Owen基於Mahout開發的一個試驗性質的推薦系統。目前Myrrix已是一個完整的、實時的、可擴展的集羣和推薦系統,主要 架構分爲兩部分:服務層:在線服務,響應請求、數據讀入、提供實時推薦;計算層:用於分佈式離線計算,在後臺使用分佈式機器學習算法爲服務層更新機器學 習 模型。Myrrix使用這兩個層構建了一個完整的推薦系統,服務層是一個HTTP服務器,可以接收更新,並在毫秒級別內計算出更新結果。服務層能夠單獨使 用,無需 計算層,它會在本地運行機器學習算法。計算層也能夠單獨使用,其本質是一系列的Hadoop jobs。目前Myrrix以被 Cloudera 併入Oryx項目。 架構
主頁:http://easyrec.org/ 語言:Java
EasyRec 是一個易集成、易擴展、功能強大且具備可視化管理的推薦系統,更像一個完整的推薦產品,包括了數據錄入模塊、管理模塊、推薦挖掘、離線分析等。 EasyRec能夠同時給多個不一樣的網站提供推薦服務,經過tenant來區分不一樣的網站。架設EasyRec服務器,爲網站申請tenant,經過 tenant就能夠很方便的集成到 網站中。經過各類不一樣的數據收集(view,buy.rating)API收集到網站的用戶行爲,EasyRec經過離線分析,就能夠產生推薦信息,您 的 網站就能夠經過 Recommendations和Community Rankings來進行推薦業務的實現。 框架
主頁:http://waffles.sourceforge.net/ 語言:C++
Waffles 英文原意是蜂蜜甜餅,在這裏卻指代一個很是強大的機器學習的開源工具包。Waffles裏包含的算法特別多,涉及機器學習的方方面面,推薦系統位於 其中的Waffles_recommend tool,大概只佔整個Waffles的1/10的內容,其它還有分類、聚類、採樣、降維、數據可視化、音頻處理等許許多多工具包,估計 能與之媲美的也就數Weka了。
主頁:http://rapidminer.com/ 語言:Java
RapidMiner(前 身是Yale)是一個比較成熟的數據挖掘解決方案,包括常見的機器學習、NLP、推薦、預測等方法(推薦只佔其中很小一部分),並且帶有GUI的 數據分析環境,數據ETL、預處理、可視化、評估、部署等整套系統都有。另外RapidMiner提供commercial license,提供R語言接口,感受在向着一個商用的 數據挖掘公司的方向在前進。
======================================分割線======================================
開 源的推薦系統大大小小的還有不少,以上只是介紹了一些在學術界和工業界比較流行的TOP 10,並且基本上都是用C++/Java實現的,在參考資料[1]、[2]中還提 到的有Crab(Python)、CofiRank(C++)、MyMediaLite(.NET/C#)、PREA(Java)、Python- recsys(Python)、Recommendable(Ruby)、Recommenderlab(R)、 Oryx(Java)、recommendify(Ruby)、RecDB(SQL)等等,固然GitHub上還有更多。。。即有適合單機運行的,也有 適 合集羣的。雖然使用的編程語言不一樣,但實現 的算法都大同小異,主要是SVD、SGD、ALS、MF、CF及其改進算法等。
[1]推薦系統開源軟件列表彙總和點評
[2]開源中國社區 - 搜索:推薦系統
Original Link: http://ibillxia.github.io/blog/2014/03/10/top-10-open-source-recommendation-systems/
Attribution - NON-Commercial - ShareAlike - Copyright © Bill Xia
原文出處:@Cheedoong