TOP 10 開源的推薦系統(tǒng)簡介 - hmy1106的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/hmy1106/article/details/44623703
最 近這兩年推薦系統(tǒng)特別火窥突,本文搜集整理了一些比較好的開源推薦系統(tǒng)缝左,即有輕量級的適用于做研究的SVDFeature、LibMF知给、LibFM等皇钞,也有重 量級的適用于工業(yè)系統(tǒng)的 Mahout悼泌、Oryx、EasyRecd等夹界,供大家參考馆里。PS:這里的top 10僅代表個人觀點。
1.SVDFeature
主頁:http://svdfeature.apexlab.org/wiki/Main_Page 語言:C++一個feature-based協(xié)同過濾和排序工具可柿,由上海交大Apex實驗室開發(fā)鸠踪,代碼質量較高。在KDD Cup 2012中獲得第一名复斥,KDD Cup 2011中獲得第三名营密,相關論文 發(fā)表在2012的JMLR中,這足以說明它的高大上目锭。SVDFeature 包含一個很靈活的Matrix Factorization推薦框架评汰,能方便的實現(xiàn)SVD、SVD++等方法, 是單模型推薦算法中精度最高的一種痢虹。SVDFeature代碼精煉被去,可以用 相對較少的內存實現(xiàn)較大規(guī)模的單機版矩陣分解運算。另外含有Logistic regression的model奖唯,可以很方便的用來進行ensemble惨缆。
2.LibMF
主頁:http://www.csie.ntu.edu.tw/~cjlin/libmf/ 語言:C++作者Chih-Jen Lin來自大名鼎鼎的臺灣國立大學,他們在機器學習領域享有盛名丰捷,近年連續(xù)多屆KDD Cup競賽上均 獲得優(yōu)異成績坯墨,并曾連續(xù)多年獲得冠軍。臺灣大學的風格非常務實病往,業(yè)界常用的LibSVM畅蹂, Liblinear等都是他們開發(fā)的,開源代碼的效率和質量都非常高荣恐。LibMF 在矩陣分解的并行化方面作出了很好的貢獻液斜,針對SGD(隨即梯度下降)優(yōu)化方法在并行計算中存在的locking problem和memory discontinuity問題累贤,提出了一種 矩陣分解的高效算法FPSGD(Fast Parallel SGD),根據(jù)計算節(jié)點的個數(shù)來劃分評分矩陣block少漆,并分配計算節(jié)點臼膏。系統(tǒng)介紹可以見這篇 論文(ACM Recsys 2013的 Best paper Award)。
3.LibFM
主頁:http://www.libfm.org/ 語言:C++作者是德國Konstanz大學的Steffen Rendle示损,他用LibFM同時玩轉KDD Cup 2012 Track1和Track2兩個子競賽單元渗磅,都取得了很好的成績,說明LibFM是非常管用的利器检访。LibFM 是專門用于矩陣分解的利器始鱼,尤其是其中實現(xiàn)了MCMC(Markov Chain Monte Carlo)優(yōu)化算法,比常見的SGD優(yōu)化方法精度要高脆贵,但運算速度要慢一些医清。當然LibFM中還 實現(xiàn)了SGD、SGDA(Adaptive SGD)卖氨、ALS(Alternating Least Squares)等算法会烙。
4.Lenskit
主頁:http://lenskit.grouplens.org/ 語言Java
這個Java開發(fā)的開源推薦系統(tǒng),來自美國的明尼蘇達大學的GroupLens團隊筒捺,也是推薦領域知名的測試數(shù)據(jù)集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等模塊五嫂,主要實現(xiàn)了k-NN,SVD肯尺,Slope-One等 典型的推薦系統(tǒng)算法贫导。
5.GraphLab
主頁:GraphLab - Collaborative Filtering 語言:C++Graphlab 是基于C++開發(fā)的一個高性能分布式graph處理挖掘系統(tǒng),特點是對迭代的并行計算處理能力強(這方面是hadoop的弱項)蟆盹,由于功能獨 到,GraphLab在業(yè)界名聲很響闺金。 用GraphLab來進行大數(shù)據(jù)量的random walk或graph-based的推薦算法非常有效逾滥。Graphlab雖然名氣比較響亮(CMU開發(fā)),但是對一般數(shù)據(jù)量的應用來說可能還用不上败匹。GraphLab 主要實現(xiàn)了ALS寨昙,CCD++,SGD掀亩,Bias-SGD舔哪,SVD++,Weighted-ALS槽棍,Sparse-ALS捉蚤,Non-negative Matrix Factorization抬驴,Restarted Lanczos Algorithm等算法。
6.Mahout
主頁:http://mahout.apache.org/ 語言:JavaMahout 是 Apache Software Foundation (ASF) 開發(fā)的一個全新的開源項目缆巧,其主要目標是創(chuàng)建一些可伸縮的機器學習算法布持,供開發(fā)人員在 Apache 在許可下免費 使用。Mahout項目是由 Apache Lucene社區(qū)中對機器學習感興趣的一些成員發(fā)起的陕悬,他們希望建立一個可靠题暖、文檔翔實、可伸縮的項目捉超,在其中實現(xiàn)一些常見的用于 聚類和分類的機器學習算法胧卤。該社區(qū)最初基于 Ngetal. 的文章 “Map-Reduce for Machine Learning on Multicore”,但此后在發(fā)展中又并入了更多廣泛的機器學習 方法拼岳,包括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
主頁:http://myrrix.com/ 語言:JavaMyrrix 最初是Mahout的作者之一Sean Owen基于Mahout開發(fā)的一個試驗性質的推薦系統(tǒng)舌狗。目前Myrrix已經是一個完整的叽奥、實時的、可擴展的集群和推薦系統(tǒng)痛侍,主要 架構分為兩部分:服務層:在線服務朝氓,響應請求、數(shù)據(jù)讀入主届、提供實時推薦圃验;計算層:用于分布式離線計算评架,在后臺使用分布式機器學習算法為服務層更新機器學習 模型狭归。Myrrix使用這兩個層構建了一個完整的推薦系統(tǒng)活合,服務層是一個HTTP服務器,能夠接收更新绘闷,并在毫秒級別內計算出更新結果橡庞。服務層可以單獨使 用较坛,無需 計算層,它會在本地運行機器學習算法毙死。計算層也可以單獨使用燎潮,其本質是一系列的Hadoop jobs。目前Myrrix以被 Cloudera 并入Oryx項目扼倘。
8.EasyRec
主頁:http://easyrec.org/ 語言:JavaEasyRec 是一個易集成确封、易擴展、功能強大且具有可視化管理的推薦系統(tǒng)再菊,更像一個完整的推薦產品爪喘,包括了數(shù)據(jù)錄入模塊、管理模塊纠拔、推薦挖掘秉剑、離線分析等。 EasyRec可以同時給多個不同的網站提供推薦服務稠诲,通過tenant來區(qū)分不同的網站侦鹏。架設EasyRec服務器,為網站申請tenant臀叙,通過 tenant就可以很方便的集成到 網站中略水。通過各種不同的數(shù)據(jù)收集(view,buy.rating)API收集到網站的用戶行為,EasyRec通過離線分析劝萤,就可以產生推薦信息渊涝,您的 網站就可以通過 Recommendations和Community Rankings來進行推薦業(yè)務的實現(xiàn)。
9.Waffles
主頁:http://waffles.sourceforge.net/ 語言:C++Waffles 英文原意是蜂蜜甜餅床嫌,在這里卻指代一個非常強大的機器學習的開源工具包跨释。Waffles里包含的算法特別多,涉及機器學習的方方面面厌处,推薦系統(tǒng)位于 其中的Waffles_recommend tool鳖谈,大概只占整個Waffles的1/10的內容,其它還有分類阔涉、聚類缆娃、采樣、降維洒敏、數(shù)據(jù)可視化、音頻處理等許許多多工具包疙驾,估計 能與之媲美的也就數(shù)Weka了凶伙。
10.RapidMiner
主頁:http://rapidminer.com/ 語言:JavaRapidMiner(前 身是Yale)是一個比較成熟的數(shù)據(jù)挖掘解決方案,包括常見的機器學習它碎、NLP函荣、推薦显押、預測等方法(推薦只占其中很小一部分),而且?guī)в蠫UI的 數(shù)據(jù)分析環(huán)境傻挂,數(shù)據(jù)ETL乘碑、預處理、可視化金拒、評估兽肤、部署等整套系統(tǒng)都有。另外RapidMiner提供commercial license绪抛,提供R語言接口资铡,感覺在向著一個商用的 數(shù)據(jù)挖掘公司的方向在前進。======================================分割線======================================
開 源的推薦系統(tǒng)大大小小的還有很多幢码,以上只是介紹了一些在學術界和工業(yè)界比較流行的TOP 10笤休,而且基本上都是用C++/Java實現(xiàn)的,在參考資料[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上還有更多。圣贸。挚歧。即有適合單機運行的,也有適 合集群的吁峻。雖然使用的編程語言不同滑负,但實現(xiàn) 的算法都大同小異,主要是SVD用含、SGD矮慕、ALS、MF啄骇、CF及其改進算法等痴鳄。
參考資料
[1]推薦系統(tǒng)開源軟件列表匯總和點評[2]開源中國社區(qū) - 搜索:推薦系統(tǒng)
Original Link: http://ibillxia.github.io/blog/2014/03/10/top-10-open-source-recommendation-systems/Attribution - NON-Commercial - ShareAlike - Copyright ? Bill Xia
原文出處:@Cheedoong
相關鏈接
想通過手機客戶端(支持 Android、iPhone 和 Windows Phone)訪問開源中國:請點這里
本站文章除注明轉載外缸夹,均為本站原創(chuàng)或編譯歡迎任何形式的轉載痪寻,但請務必注明出處螺句,尊重他人勞動共創(chuàng)開源社區(qū)轉載請注明:文章轉載自:開源中國社區(qū) [http://www.oschina.net]本文標題:TOP 10 開源的推薦系統(tǒng)簡介本文地址:http://www.oschina.net/news/51297/top-10-open-source-recommendation-systems
后續(xù)
1、著名的數(shù)據(jù)挖掘工具
http://www.cs.waikato.ac.nz/~ml/weka/downloading.html