#1.SVDFeature
語言:C++
一個(gè)feature-based協(xié)同過濾和排序工具,由上海交大Apex實(shí)驗(yàn)室開發(fā),代碼質(zhì)量較高。在KDD Cup 2012中獲得第一名,KDD Cup 2011中獲得第三名庶溶,相關(guān)論文 發(fā)表在2012的JMLR中,這足以說明它的高大上懂鸵。
SVDFeature包含一個(gè)很靈活的Matrix Factorization推薦框架偏螺,能方便的實(shí)現(xiàn)SVD、SVD++等方法, 是單模型推薦算法中精度最高的一種矾瑰。SVDFeature代碼精煉砖茸,可以用 相對較少的內(nèi)存實(shí)現(xiàn)較大規(guī)模的單機(jī)版矩陣分解運(yùn)算隘擎。另外含有Logistic regression的model殴穴,可以很方便的用來進(jìn)行ensemble。
#2.LibMF
語言:C++
作者Chih-Jen Lin來自大名鼎鼎的臺(tái)灣國立大學(xué),他們在機(jī)器學(xué)習(xí)領(lǐng)域享有盛名采幌,近年連續(xù)多屆KDD Cup競賽上均 獲得優(yōu)異成績劲够,并曾連續(xù)多年獲得冠軍。臺(tái)灣大學(xué)的風(fēng)格非常務(wù)實(shí)休傍,業(yè)界常用的LibSVM征绎, Liblinear等都是他們開發(fā)的,開源代碼的效率和質(zhì)量都非常高磨取。
LibMF在矩陣分解的并行化方面作出了很好的貢獻(xiàn)人柿,針對SGD(隨即梯度下降)優(yōu)化方法在并行計(jì)算中存在的locking problem和memory discontinuity問題,提出了一種 矩陣分解的高效算法FPSGD(Fast Parallel SGD)忙厌,根據(jù)計(jì)算節(jié)點(diǎn)的個(gè)數(shù)來劃分評分矩陣block凫岖,并分配計(jì)算節(jié)點(diǎn)。系統(tǒng)介紹可以見這篇 論文(ACM Recsys 2013的 Best paper Award)逢净。
#3.LibFM
語言:C++
作者是德國Konstanz大學(xué)的Steffen Rendle,他用LibFM同時(shí)玩轉(zhuǎn)KDD Cup 2012 Track1和Track2兩個(gè)子競賽單元,都取得了很好的成績糠悯,說明LibFM是非常管用的利器难述。
LibFM是專門用于矩陣分解的利器,尤其是其中實(shí)現(xiàn)了MCMC(Markov Chain Monte Carlo)優(yōu)化算法胀茵,比常見的SGD優(yōu)化方法精度要高社露,但運(yùn)算速度要慢一些。當(dāng)然LibFM中還 實(shí)現(xiàn)了SGD宰掉、SGDA(Adaptive SGD)呵哨、ALS(Alternating Least Squares)等算法。
#4.Lenskit
語言:Java
這個(gè)Java開發(fā)的開源推薦系統(tǒng)轨奄,來自美國的明尼蘇達(dá)大學(xué)的GroupLens團(tuán)隊(duì)孟害,也是推薦領(lǐng)域知名的測試數(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等模塊,主要實(shí)現(xiàn)了k-NN玉组,SVD谎柄,Slope-One等 典型的推薦系統(tǒng)算法。
#5.GraphLab
語言:C++
Graphlab是基于C++開發(fā)的一個(gè)高性能分布式graph處理挖掘系統(tǒng)惯雳,特點(diǎn)是對迭代的并行計(jì)算處理能力強(qiáng)(這方面是hadoop的弱項(xiàng))朝巫,由于功能獨(dú)到,GraphLab在業(yè)界名聲很響石景。 用GraphLab來進(jìn)行大數(shù)據(jù)量的random walk或graph-based的推薦算法非常有效劈猿。Graphlab雖然名氣比較響亮(CMU開發(fā))拙吉,但是對一般數(shù)據(jù)量的應(yīng)用來說可能還用不上。
GraphLab主要實(shí)現(xiàn)了ALS揪荣,CCD++筷黔,SGD,Bias-SGD仗颈,SVD++佛舱,Weighted-ALS,Sparse-ALS挨决,Non-negative Matrix Factorization请祖,Restarted Lanczos Algorithm等算法。
#6.Mahout
語言:Java
Mahout 是 Apache Software Foundation (ASF) 開發(fā)的一個(gè)全新的開源項(xiàng)目脖祈,其主要目標(biāo)是創(chuàng)建一些可伸縮的機(jī)器學(xué)習(xí)算法损拢,供開發(fā)人員在 Apache 在許可下免費(fèi) 使用。Mahout項(xiàng)目是由 Apache Lucene社區(qū)中對機(jī)器學(xué)習(xí)感興趣的一些成員發(fā)起的撒犀,他們希望建立一個(gè)可靠福压、文檔翔實(shí)、可伸縮的項(xiàng)目或舞,在其中實(shí)現(xiàn)一些常見的用于 聚類和分類的機(jī)器學(xué)習(xí)算法荆姆。該社區(qū)最初基于 Ngetal. 的文章 “Map-Reduce for Machine Learning on Multicore”,但此后在發(fā)展中又并入了更多廣泛的機(jī)器學(xué)習(xí) 方法映凳,包括Collaborative Filtering(CF)胆筒,Dimensionality Reduction,Topic Models等诈豌。此外仆救,通過使用 Apache Hadoop 庫,Mahout 可以有效地?cái)U(kuò)展到云中矫渔。
在Mahout的Recommendation類算法中彤蔽,主要有User-Based CF,Item-Based CF庙洼,ALS顿痪,ALS on Implicit Feedback,Weighted MF油够,SVD++蚁袭,Parallel SGD等。
#7.Myrrix
語言:Java
Myrrix最初是Mahout的作者之一Sean Owen基于Mahout開發(fā)的一個(gè)試驗(yàn)性質(zhì)的推薦系統(tǒng)石咬。目前Myrrix已經(jīng)是一個(gè)完整的揩悄、實(shí)時(shí)的、可擴(kuò)展的集群和推薦系統(tǒng)鬼悠,主要 架構(gòu)分為兩部分:服務(wù)層:在線服務(wù)删性,響應(yīng)請求棉饶、數(shù)據(jù)讀入、提供實(shí)時(shí)推薦镇匀;計(jì)算層:用于分布式離線計(jì)算,在后臺(tái)使用分布式機(jī)器學(xué)習(xí)算法為服務(wù)層更新機(jī)器學(xué)習(xí) 模型袜啃。Myrrix使用這兩個(gè)層構(gòu)建了一個(gè)完整的推薦系統(tǒng)汗侵,服務(wù)層是一個(gè)HTTP服務(wù)器,能夠接收更新群发,并在毫秒級(jí)別內(nèi)計(jì)算出更新結(jié)果晰韵。服務(wù)層可以單獨(dú)使用,無需 計(jì)算層熟妓,它會(huì)在本地運(yùn)行機(jī)器學(xué)習(xí)算法雪猪。計(jì)算層也可以單獨(dú)使用,其本質(zhì)是一系列的Hadoop jobs起愈。目前Myrrix以被 Cloudera 并入Oryx項(xiàng)目只恨。
#8.EasyRec
語言:Java
EasyRec是一個(gè)易集成、易擴(kuò)展抬虽、功能強(qiáng)大且具有可視化管理的推薦系統(tǒng)官觅,更像一個(gè)完整的推薦產(chǎn)品,包括了數(shù)據(jù)錄入模塊阐污、管理模塊休涤、推薦挖掘、離線分析等笛辟。 EasyRec可以同時(shí)給多個(gè)不同的網(wǎng)站提供推薦服務(wù)功氨,通過tenant來區(qū)分不同的網(wǎng)站。架設(shè)EasyRec服務(wù)器手幢,為網(wǎng)站申請tenant捷凄,通過tenant就可以很方便的集成到 網(wǎng)站中。通過各種不同的數(shù)據(jù)收集(view,buy.rating)API收集到網(wǎng)站的用戶行為围来,EasyRec通過離線分析纵势,就可以產(chǎn)生推薦信息,您的網(wǎng)站就可以通過 Recommendations和Community Rankings來進(jìn)行推薦業(yè)務(wù)的實(shí)現(xiàn)管钳。
#9.Waffles
語言:C++
Waffles英文原意是蜂蜜甜餅钦铁,在這里卻指代一個(gè)非常強(qiáng)大的機(jī)器學(xué)習(xí)的開源工具包。Waffles里包含的算法特別多才漆,涉及機(jī)器學(xué)習(xí)的方方面面牛曹,推薦系統(tǒng)位于 其中的Waffles_recommend tool,大概只占整個(gè)Waffles的1/10的內(nèi)容醇滥,其它還有分類黎比、聚類超营、采樣、降維阅虫、數(shù)據(jù)可視化演闭、音頻處理等許許多多工具包,估計(jì) 能與之媲美的也就數(shù)Weka了颓帝。
#10.RapidMiner
語言:Java
RapidMiner(前身是Yale)是一個(gè)比較成熟的數(shù)據(jù)挖掘解決方案米碰,包括常見的機(jī)器學(xué)習(xí)、NLP购城、推薦吕座、預(yù)測等方法(推薦只占其中很小一部分),而且?guī)в蠫UI的 數(shù)據(jù)分析環(huán)境瘪板,數(shù)據(jù)ETL吴趴、預(yù)處理、可視化侮攀、評估锣枝、部署等整套系統(tǒng)都有。另外RapidMiner提供commercial license兰英,提供R語言接口惊橱,感覺在向著一個(gè)商用的 數(shù)據(jù)挖掘公司的方向在前進(jìn)。
更多內(nèi)容請關(guān)注微信公眾號(hào):EasyUX