open source project for recommendation system
生活随笔
收集整理的這篇文章主要介紹了
open source project for recommendation system
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原文鏈接:http://blog.csdn.net/cserchen/article/details/14231153
目前互聯(lián)網(wǎng)上所能找到的知名開源推薦系統(tǒng)(open source project for recommendation system),并附上了個(gè)人的一些簡(jiǎn)單點(diǎn)評(píng)(未必全面準(zhǔn)確), 這方面的中文資料很少見,希望對(duì)國(guó)內(nèi)的朋友了解掌握推薦系統(tǒng)有幫助------陳運(yùn)文 SVDFeature 由上海交大的同學(xué)開發(fā)的,C++語(yǔ)言,代碼質(zhì)量很高 。去年我們參加KDD競(jìng)賽時(shí)用過,非常好用,而且出自咱們國(guó)人之手,所以置頂推薦! 項(xiàng)目地址: http://svdfeature.apexlab.org/wiki/Main_Page
SVDFeature包含一個(gè)很靈活的Matrix Factorization推薦框架,能方便的實(shí)現(xiàn)SVD、SVD++等方法, 是單模型推薦算法中精度最高的一種。SVDFeature代碼精煉,可以用相對(duì)較少的內(nèi)存實(shí)現(xiàn)較大規(guī)模的單機(jī)版矩陣分解運(yùn)算。
另外含有Logistic regression的model,可以很方便的用來進(jìn)行ensemble運(yùn)算
Crab 項(xiàng)目地址: http://geektell.com/story/crab-recommender-systems-in-python/
系統(tǒng)的Tutorial可以看這里: http://muricoca.github.io/crab/ Crab是基于Python開發(fā)的開源推薦軟件,其中實(shí)現(xiàn)有item和user的協(xié)同過濾。據(jù)說更多算法還在開發(fā)中, Crab的python代碼看上去很清晰明了,適合一讀
CofiRank C++開發(fā)的 Collaborative Filtering算法的開源推薦系統(tǒng),但似乎2009年后作者就沒有更新了, CofiRank依賴boost庫(kù),聯(lián)編會(huì)比較麻煩。不是特別推薦 項(xiàng)目地址: http://www.cofirank.org/
EasyRec Java開發(fā)的推薦系統(tǒng),感覺更像一個(gè)完整的推薦產(chǎn)品,包括了數(shù)據(jù)錄入模塊、管理模塊、推薦挖掘、離線分析等,整個(gè)系統(tǒng)比較完備。 項(xiàng)目地址: http://easyrec.org/
GraphLab 項(xiàng)目地址: http://graphlab.org/
Graphlab是基于C++開發(fā)的一個(gè)高性能分布式graph處理挖掘系統(tǒng),特點(diǎn)是對(duì)迭代的并行計(jì)算處理能力強(qiáng)(這方面是hadoop的弱項(xiàng)), 由于功能獨(dú)到,GraphLab在業(yè)界名聲很響 用GraphLab來進(jìn)行大數(shù)據(jù)量的random walk或graph-based的推薦算法非常有效。 Graphlab雖然名氣比較響亮(CMU開發(fā)),但是對(duì)一般數(shù)據(jù)量的應(yīng)用來說可能還用不上 Lenskit http://lenskit.grouplens.org/ 這個(gè)Java開發(fā)的開源推薦系統(tǒng),來自美國(guó)的明尼蘇達(dá)大學(xué),也是推薦領(lǐng)域知名的測(cè)試數(shù)據(jù)集Movielens的作者, 他們的推薦系統(tǒng)團(tuán)隊(duì),在學(xué)術(shù)圈內(nèi)的影響力很大,很多新的學(xué)術(shù)思想會(huì)放到這里
Mahout 網(wǎng)址 http://mahout.apache.org/ Mahout知名度很高,是Apache基金資助的重要項(xiàng)目,在國(guó)內(nèi)流傳很廣,并已經(jīng)有一些中文相關(guān)書籍了。注意Mahout是一個(gè)分布式機(jī)器學(xué)習(xí)算法的集合,協(xié)同過濾只是其中的一部分。除了被稱為Taste的分布式協(xié)同過濾的實(shí)現(xiàn)(Hadoop-based,另有pure Java版本),Mahout里還有其他常見的機(jī)器學(xué)習(xí)算法的分布式實(shí)現(xiàn)方案。 另外Mahout的作者之一Sean Owen基于Mahout開發(fā)了一個(gè)試驗(yàn)性質(zhì)的推薦系統(tǒng),稱為Myrrix, 可以看這里: http://myrrix.com/quick-start/ ? MyMediaLite http://mymedialite.net/index.html 基于.NET框架的C#開發(fā)(也有Java版本),作者基本來自德國(guó)、英國(guó)等歐洲的一些高校。 除了提供了常見場(chǎng)景的推薦算法,MyMediaLite也有Social Matrix Factorization這樣獨(dú)特的功能 盡管是.Net框架,但也提供了Python、Ruby等腳本語(yǔ)言的調(diào)用API MyMediaLite的作者之一Lars Schmidt在2012年KDD會(huì)議上專門介紹過他們系統(tǒng)的一些情況,可惜由于.Net開發(fā)框架日漸式微,MyMediaLite對(duì)Windows NT Server的系統(tǒng)吸引力大些,LAMP網(wǎng)站用得很少
LibFM 項(xiàng)目網(wǎng)址: http://www.libfm.org/ 作者是德國(guó)Konstanz University的Steffen Rendle,去年KDD Cup競(jìng)賽上我們的老對(duì)手,他用LibFM同時(shí)玩轉(zhuǎn)Track1和Track2兩個(gè)子競(jìng)賽單元,都取得了很好的成績(jī),說明LibFM是非常管用的利器(雖然在Track1上被我們打敗了,hiahia) 顧名思義,LibFM是專門用于矩陣分解的利器,尤其是其中實(shí)現(xiàn)了MCMC(Markov Chain Monte Carlo)優(yōu)化算法,比常見的SGD(隨即梯度下降)優(yōu)化方法精度要高(當(dāng)然也會(huì)慢一些)
順便八卦下,去年KDD會(huì)議上和Steffen當(dāng)面聊過,他很靦腆而且喜歡偷笑,呵呵挺可愛。
LibMF 項(xiàng)目地址: http://www.csie.ntu.edu.tw/~cjlin/libmf/
注意LibMF和上面的LibFM是兩個(gè)不同的開源項(xiàng)目。這個(gè)LibMF的作者是大名鼎鼎的臺(tái)灣國(guó)立大學(xué),他們?cè)跈C(jī)器學(xué)習(xí)領(lǐng)域享有盛名,近年連續(xù)多屆KDD Cup競(jìng)賽上均獲得優(yōu)異成績(jī),并曾連續(xù)多年獲得冠軍。臺(tái)灣大學(xué)的風(fēng)格非常務(wù)實(shí),業(yè)界常用的LibSVM, Liblinear等都是他們開發(fā)的,開源代碼的效率和質(zhì)量都非常高
LibMF在矩陣分解的并行化方面作出了很好的貢獻(xiàn),針對(duì)SDG優(yōu)化方法在并行計(jì)算中存在的locking problem和memory discontinuity問題,提出了一種矩陣分解的高效算法,根據(jù)計(jì)算節(jié)點(diǎn)的個(gè)數(shù)來劃分評(píng)分矩陣block,并分配計(jì)算節(jié)點(diǎn)。系統(tǒng)介紹可以見這篇論文(Recsys 2013的 Best paper Award) Y. Zhuang, W.-S. Chin, Y.-C. Juan, and C.-J. Lin. A Fast Parallel SGD for Matrix Factorization in Shared Memory Systems. Proceedings of ACM Recommender Systems 2013.
PREA 全名是 Personalized Recommendation Algorithms Toolkit, 開發(fā)語(yǔ)言為Java。也是一個(gè)輕量級(jí)的開源項(xiàng)目 項(xiàng)目網(wǎng)址: http://mloss.org/software/view/420/ 放在Mloss這個(gè)大project下。我個(gè)人感覺PREA還是比較簡(jiǎn)陋的,參加開發(fā)的三位工程師Joonseok Lee, Mingxuan Sun, Guy Lebanon更新頻率很低,提供的資料也少。
不過Mloss下倒是能找到其他一些推薦開源項(xiàng)目 http://mloss.org/software/tags/collaborative-filtering/ Python-recsys 一個(gè)非常輕量級(jí)的開源推薦系統(tǒng),python開發(fā),作者似乎只有一位, Python-recsys主要實(shí)現(xiàn)了SVD、Neighborhood SVD推薦算法, 這個(gè)項(xiàng)目麻雀雖小五臟俱全,評(píng)估數(shù)據(jù)(Movielens,Last.fm)、評(píng)估框架也都有 API也很簡(jiǎn)單清晰,代碼簡(jiǎn)潔,屬于推薦入門的良好教材。
不過真正要用到實(shí)際系統(tǒng)中,還是得補(bǔ)充很多內(nèi)容 github的地址位于 https://github.com/ocelma/python-recsys 項(xiàng)目的介紹見: http://ocelma.net/software/python-recsys/build/html/ RapidMiner 項(xiàng)目網(wǎng)址為: http://rapidminer.com/ Java語(yǔ)言開發(fā),RapidMiner(前身是Yale)已經(jīng)是一個(gè)比較成熟的數(shù)據(jù)挖掘解決方案了,包括常見的機(jī)器學(xué)習(xí)、NLP、推薦、預(yù)測(cè)等方法(推薦只占其中很小一部分),而且?guī)в蠫UI的數(shù)據(jù)分析環(huán)境,數(shù)據(jù)ETL、預(yù)處理、可視化、評(píng)估、部署等整套系統(tǒng)都有。 另外RapidMiner提供commercial license,提供R語(yǔ)言接口,感覺在向著一個(gè)商用的數(shù)據(jù)挖掘公司的方向在前進(jìn)。 Recommendable 基于Ruby語(yǔ)言開發(fā),實(shí)現(xiàn)了一些評(píng)分預(yù)測(cè)的推薦算法,但是整體感覺比較單薄, github上地址如下: https://github.com/davidcelis/recommendable/ Recommenderlab 基于R語(yǔ)言開發(fā)的開源推薦程序,對(duì)經(jīng)常使用R語(yǔ)言的工程師或者BI數(shù)據(jù)分析師來說,recommenderlab的出現(xiàn)絕對(duì)算得上是福音了 項(xiàng)目地址: http://cran.r-project.org/web/packages/recommenderlab/index.html
基于Recommenderlab來開發(fā)推薦系統(tǒng),代碼會(huì)非常精簡(jiǎn),因?yàn)橥扑]系統(tǒng)所依賴的user-item rating matrix對(duì)擅長(zhǎng)處理向量運(yùn)算的R語(yǔ)言來說再方便不過了, 但是在實(shí)際推薦系統(tǒng)中,需要考慮的問題和邏輯都比較復(fù)雜,用Recommenderlab不是很靈活。另外受限于R語(yǔ)言對(duì)內(nèi)存的限制,Recommenderlab不太適用于過大規(guī)模的推薦應(yīng)用 Waffles SF地址: http://waffles.sourceforge.net/ Waffles英文原意是蜂蜜甜餅(見logo),在這里卻指代一個(gè)非常強(qiáng)大的機(jī)器學(xué)習(xí)的開源工具包,基于C++語(yǔ)言開發(fā)。 Waffles里包含的算法特別多,涉及機(jī)器學(xué)習(xí)的方方面面,推薦系統(tǒng)位于其中的Waffles_recommend tool,大概只占整個(gè)Waffles的1/10的內(nèi)容(其它還有分類、聚類、采樣、降維、數(shù)據(jù)可視化、音頻處理等許許多多工具包,估計(jì)能與之媲美的也就數(shù)Weka了)
目前互聯(lián)網(wǎng)上所能找到的知名開源推薦系統(tǒng)(open source project for recommendation system),并附上了個(gè)人的一些簡(jiǎn)單點(diǎn)評(píng)(未必全面準(zhǔn)確), 這方面的中文資料很少見,希望對(duì)國(guó)內(nèi)的朋友了解掌握推薦系統(tǒng)有幫助------陳運(yùn)文 SVDFeature 由上海交大的同學(xué)開發(fā)的,C++語(yǔ)言,代碼質(zhì)量很高 。去年我們參加KDD競(jìng)賽時(shí)用過,非常好用,而且出自咱們國(guó)人之手,所以置頂推薦! 項(xiàng)目地址: http://svdfeature.apexlab.org/wiki/Main_Page
SVDFeature包含一個(gè)很靈活的Matrix Factorization推薦框架,能方便的實(shí)現(xiàn)SVD、SVD++等方法, 是單模型推薦算法中精度最高的一種。SVDFeature代碼精煉,可以用相對(duì)較少的內(nèi)存實(shí)現(xiàn)較大規(guī)模的單機(jī)版矩陣分解運(yùn)算。
另外含有Logistic regression的model,可以很方便的用來進(jìn)行ensemble運(yùn)算
Crab 項(xiàng)目地址: http://geektell.com/story/crab-recommender-systems-in-python/
系統(tǒng)的Tutorial可以看這里: http://muricoca.github.io/crab/ Crab是基于Python開發(fā)的開源推薦軟件,其中實(shí)現(xiàn)有item和user的協(xié)同過濾。據(jù)說更多算法還在開發(fā)中, Crab的python代碼看上去很清晰明了,適合一讀
CofiRank C++開發(fā)的 Collaborative Filtering算法的開源推薦系統(tǒng),但似乎2009年后作者就沒有更新了, CofiRank依賴boost庫(kù),聯(lián)編會(huì)比較麻煩。不是特別推薦 項(xiàng)目地址: http://www.cofirank.org/
EasyRec Java開發(fā)的推薦系統(tǒng),感覺更像一個(gè)完整的推薦產(chǎn)品,包括了數(shù)據(jù)錄入模塊、管理模塊、推薦挖掘、離線分析等,整個(gè)系統(tǒng)比較完備。 項(xiàng)目地址: http://easyrec.org/
GraphLab 項(xiàng)目地址: http://graphlab.org/
Graphlab是基于C++開發(fā)的一個(gè)高性能分布式graph處理挖掘系統(tǒng),特點(diǎn)是對(duì)迭代的并行計(jì)算處理能力強(qiáng)(這方面是hadoop的弱項(xiàng)), 由于功能獨(dú)到,GraphLab在業(yè)界名聲很響 用GraphLab來進(jìn)行大數(shù)據(jù)量的random walk或graph-based的推薦算法非常有效。 Graphlab雖然名氣比較響亮(CMU開發(fā)),但是對(duì)一般數(shù)據(jù)量的應(yīng)用來說可能還用不上 Lenskit http://lenskit.grouplens.org/ 這個(gè)Java開發(fā)的開源推薦系統(tǒng),來自美國(guó)的明尼蘇達(dá)大學(xué),也是推薦領(lǐng)域知名的測(cè)試數(shù)據(jù)集Movielens的作者, 他們的推薦系統(tǒng)團(tuán)隊(duì),在學(xué)術(shù)圈內(nèi)的影響力很大,很多新的學(xué)術(shù)思想會(huì)放到這里
Mahout 網(wǎng)址 http://mahout.apache.org/ Mahout知名度很高,是Apache基金資助的重要項(xiàng)目,在國(guó)內(nèi)流傳很廣,并已經(jīng)有一些中文相關(guān)書籍了。注意Mahout是一個(gè)分布式機(jī)器學(xué)習(xí)算法的集合,協(xié)同過濾只是其中的一部分。除了被稱為Taste的分布式協(xié)同過濾的實(shí)現(xiàn)(Hadoop-based,另有pure Java版本),Mahout里還有其他常見的機(jī)器學(xué)習(xí)算法的分布式實(shí)現(xiàn)方案。 另外Mahout的作者之一Sean Owen基于Mahout開發(fā)了一個(gè)試驗(yàn)性質(zhì)的推薦系統(tǒng),稱為Myrrix, 可以看這里: http://myrrix.com/quick-start/ ? MyMediaLite http://mymedialite.net/index.html 基于.NET框架的C#開發(fā)(也有Java版本),作者基本來自德國(guó)、英國(guó)等歐洲的一些高校。 除了提供了常見場(chǎng)景的推薦算法,MyMediaLite也有Social Matrix Factorization這樣獨(dú)特的功能 盡管是.Net框架,但也提供了Python、Ruby等腳本語(yǔ)言的調(diào)用API MyMediaLite的作者之一Lars Schmidt在2012年KDD會(huì)議上專門介紹過他們系統(tǒng)的一些情況,可惜由于.Net開發(fā)框架日漸式微,MyMediaLite對(duì)Windows NT Server的系統(tǒng)吸引力大些,LAMP網(wǎng)站用得很少
LibFM 項(xiàng)目網(wǎng)址: http://www.libfm.org/ 作者是德國(guó)Konstanz University的Steffen Rendle,去年KDD Cup競(jìng)賽上我們的老對(duì)手,他用LibFM同時(shí)玩轉(zhuǎn)Track1和Track2兩個(gè)子競(jìng)賽單元,都取得了很好的成績(jī),說明LibFM是非常管用的利器(雖然在Track1上被我們打敗了,hiahia) 顧名思義,LibFM是專門用于矩陣分解的利器,尤其是其中實(shí)現(xiàn)了MCMC(Markov Chain Monte Carlo)優(yōu)化算法,比常見的SGD(隨即梯度下降)優(yōu)化方法精度要高(當(dāng)然也會(huì)慢一些)
順便八卦下,去年KDD會(huì)議上和Steffen當(dāng)面聊過,他很靦腆而且喜歡偷笑,呵呵挺可愛。
LibMF 項(xiàng)目地址: http://www.csie.ntu.edu.tw/~cjlin/libmf/
注意LibMF和上面的LibFM是兩個(gè)不同的開源項(xiàng)目。這個(gè)LibMF的作者是大名鼎鼎的臺(tái)灣國(guó)立大學(xué),他們?cè)跈C(jī)器學(xué)習(xí)領(lǐng)域享有盛名,近年連續(xù)多屆KDD Cup競(jìng)賽上均獲得優(yōu)異成績(jī),并曾連續(xù)多年獲得冠軍。臺(tái)灣大學(xué)的風(fēng)格非常務(wù)實(shí),業(yè)界常用的LibSVM, Liblinear等都是他們開發(fā)的,開源代碼的效率和質(zhì)量都非常高
LibMF在矩陣分解的并行化方面作出了很好的貢獻(xiàn),針對(duì)SDG優(yōu)化方法在并行計(jì)算中存在的locking problem和memory discontinuity問題,提出了一種矩陣分解的高效算法,根據(jù)計(jì)算節(jié)點(diǎn)的個(gè)數(shù)來劃分評(píng)分矩陣block,并分配計(jì)算節(jié)點(diǎn)。系統(tǒng)介紹可以見這篇論文(Recsys 2013的 Best paper Award) Y. Zhuang, W.-S. Chin, Y.-C. Juan, and C.-J. Lin. A Fast Parallel SGD for Matrix Factorization in Shared Memory Systems. Proceedings of ACM Recommender Systems 2013.
PREA 全名是 Personalized Recommendation Algorithms Toolkit, 開發(fā)語(yǔ)言為Java。也是一個(gè)輕量級(jí)的開源項(xiàng)目 項(xiàng)目網(wǎng)址: http://mloss.org/software/view/420/ 放在Mloss這個(gè)大project下。我個(gè)人感覺PREA還是比較簡(jiǎn)陋的,參加開發(fā)的三位工程師Joonseok Lee, Mingxuan Sun, Guy Lebanon更新頻率很低,提供的資料也少。
不過Mloss下倒是能找到其他一些推薦開源項(xiàng)目 http://mloss.org/software/tags/collaborative-filtering/ Python-recsys 一個(gè)非常輕量級(jí)的開源推薦系統(tǒng),python開發(fā),作者似乎只有一位, Python-recsys主要實(shí)現(xiàn)了SVD、Neighborhood SVD推薦算法, 這個(gè)項(xiàng)目麻雀雖小五臟俱全,評(píng)估數(shù)據(jù)(Movielens,Last.fm)、評(píng)估框架也都有 API也很簡(jiǎn)單清晰,代碼簡(jiǎn)潔,屬于推薦入門的良好教材。
不過真正要用到實(shí)際系統(tǒng)中,還是得補(bǔ)充很多內(nèi)容 github的地址位于 https://github.com/ocelma/python-recsys 項(xiàng)目的介紹見: http://ocelma.net/software/python-recsys/build/html/ RapidMiner 項(xiàng)目網(wǎng)址為: http://rapidminer.com/ Java語(yǔ)言開發(fā),RapidMiner(前身是Yale)已經(jīng)是一個(gè)比較成熟的數(shù)據(jù)挖掘解決方案了,包括常見的機(jī)器學(xué)習(xí)、NLP、推薦、預(yù)測(cè)等方法(推薦只占其中很小一部分),而且?guī)в蠫UI的數(shù)據(jù)分析環(huán)境,數(shù)據(jù)ETL、預(yù)處理、可視化、評(píng)估、部署等整套系統(tǒng)都有。 另外RapidMiner提供commercial license,提供R語(yǔ)言接口,感覺在向著一個(gè)商用的數(shù)據(jù)挖掘公司的方向在前進(jìn)。 Recommendable 基于Ruby語(yǔ)言開發(fā),實(shí)現(xiàn)了一些評(píng)分預(yù)測(cè)的推薦算法,但是整體感覺比較單薄, github上地址如下: https://github.com/davidcelis/recommendable/ Recommenderlab 基于R語(yǔ)言開發(fā)的開源推薦程序,對(duì)經(jīng)常使用R語(yǔ)言的工程師或者BI數(shù)據(jù)分析師來說,recommenderlab的出現(xiàn)絕對(duì)算得上是福音了 項(xiàng)目地址: http://cran.r-project.org/web/packages/recommenderlab/index.html
基于Recommenderlab來開發(fā)推薦系統(tǒng),代碼會(huì)非常精簡(jiǎn),因?yàn)橥扑]系統(tǒng)所依賴的user-item rating matrix對(duì)擅長(zhǎng)處理向量運(yùn)算的R語(yǔ)言來說再方便不過了, 但是在實(shí)際推薦系統(tǒng)中,需要考慮的問題和邏輯都比較復(fù)雜,用Recommenderlab不是很靈活。另外受限于R語(yǔ)言對(duì)內(nèi)存的限制,Recommenderlab不太適用于過大規(guī)模的推薦應(yīng)用 Waffles SF地址: http://waffles.sourceforge.net/ Waffles英文原意是蜂蜜甜餅(見logo),在這里卻指代一個(gè)非常強(qiáng)大的機(jī)器學(xué)習(xí)的開源工具包,基于C++語(yǔ)言開發(fā)。 Waffles里包含的算法特別多,涉及機(jī)器學(xué)習(xí)的方方面面,推薦系統(tǒng)位于其中的Waffles_recommend tool,大概只占整個(gè)Waffles的1/10的內(nèi)容(其它還有分類、聚類、采樣、降維、數(shù)據(jù)可視化、音頻處理等許許多多工具包,估計(jì)能與之媲美的也就數(shù)Weka了)
總結(jié)
以上是生活随笔為你收集整理的open source project for recommendation system的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python编辑器对比和推荐
- 下一篇: 税控盘抄税怎么操作流程,有以下四点