#1.SVDFeature
語(yǔ)言:C++
一個(gè)feature-based協(xié)同過(guò)濾和排序工具榄攀,由上海交大Apex實(shí)驗(yàn)室開(kāi)發(fā)汉柒,代碼質(zhì)量較高。在KDD Cup 2012中獲得第一名脆贵,KDD Cup 2011中獲得第三名噪矛,相關(guān)論文 發(fā)表在2012的JMLR中量蕊,這足以說(shuō)明它的高大上。
SVDFeature包含一個(gè)很靈活的Matrix Factorization推薦框架艇挨,能方便的實(shí)現(xiàn)SVD残炮、SVD++等方法, 是單模型推薦算法中精度最高的一種。SVDFeature代碼精煉缩滨,可以用 相對(duì)較少的內(nèi)存實(shí)現(xiàn)較大規(guī)模的單機(jī)版矩陣分解運(yùn)算势就。另外含有Logistic regression的model,可以很方便的用來(lái)進(jìn)行ensemble脉漏。
#2.LibMF
語(yǔ)言:C++
作者Chih-Jen Lin來(lái)自大名鼎鼎的臺(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等都是他們開(kāi)發(fā)的巧娱,開(kāi)源代碼的效率和質(zhì)量都非常高碉怔。
LibMF在矩陣分解的并行化方面作出了很好的貢獻(xiàn)烘贴,針對(duì)SGD(隨即梯度下降)優(yōu)化方法在并行計(jì)算中存在的locking problem和memory discontinuity問(wèn)題,提出了一種 矩陣分解的高效算法FPSGD(Fast Parallel SGD)撮胧,根據(jù)計(jì)算節(jié)點(diǎn)的個(gè)數(shù)來(lái)劃分評(píng)分矩陣block桨踪,并分配計(jì)算節(jié)點(diǎn)。系統(tǒng)介紹可以見(jiàn)這篇 論文(ACM Recsys 2013的 Best paper Award)芹啥。
#3.LibFM
語(yǔ)言:C++
作者是德國(guó)Konstanz大學(xué)的Steffen Rendle锻离,他用LibFM同時(shí)玩轉(zhuǎn)KDD Cup 2012 Track1和Track2兩個(gè)子競(jìng)賽單元铺峭,都取得了很好的成績(jī),說(shuō)明LibFM是非常管用的利器汽纠。
LibFM是專門(mén)用于矩陣分解的利器卫键,尤其是其中實(shí)現(xiàn)了MCMC(Markov Chain Monte Carlo)優(yōu)化算法,比常見(jiàn)的SGD優(yōu)化方法精度要高虱朵,但運(yùn)算速度要慢一些莉炉。當(dāng)然LibFM中還 實(shí)現(xiàn)了SGD、SGDA(Adaptive SGD)碴犬、ALS(Alternating Least Squares)等算法絮宁。
#4.Lenskit
語(yǔ)言:Java
這個(gè)Java開(kāi)發(fā)的開(kāi)源推薦系統(tǒng),來(lái)自美國(guó)的明尼蘇達(dá)大學(xué)的GroupLens團(tuán)隊(duì)服协,也是推薦領(lǐng)域知名的測(cè)試數(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
語(yǔ)言:C++
Graphlab是基于C++開(kāi)發(fā)的一個(gè)高性能分布式graph處理挖掘系統(tǒng),特點(diǎn)是對(duì)迭代的并行計(jì)算處理能力強(qiáng)(這方面是hadoop的弱項(xiàng))棒旗,由于功能獨(dú)到喘批,GraphLab在業(yè)界名聲很響。 用GraphLab來(lái)進(jìn)行大數(shù)據(jù)量的random walk或graph-based的推薦算法非常有效铣揉。Graphlab雖然名氣比較響亮(CMU開(kāi)發(fā))饶深,但是對(duì)一般數(shù)據(jù)量的應(yīng)用來(lái)說(shuō)可能還用不上。
GraphLab主要實(shí)現(xiàn)了ALS逛拱,CCD++敌厘,SGD,Bias-SGD朽合,SVD++俱两,Weighted-ALS,Sparse-ALS曹步,Non-negative Matrix Factorization宪彩,Restarted Lanczos Algorithm等算法。
#6.Mahout
語(yǔ)言:Java
Mahout 是 Apache Software Foundation (ASF) 開(kāi)發(fā)的一個(gè)全新的開(kāi)源項(xiàng)目讲婚,其主要目標(biāo)是創(chuàng)建一些可伸縮的機(jī)器學(xué)習(xí)算法尿孔,供開(kāi)發(fā)人員在 Apache 在許可下免費(fèi) 使用。Mahout項(xiàng)目是由 Apache Lucene社區(qū)中對(duì)機(jī)器學(xué)習(xí)感興趣的一些成員發(fā)起的,他們希望建立一個(gè)可靠活合、文檔翔實(shí)雏婶、可伸縮的項(xiàng)目,在其中實(shí)現(xiàn)一些常見(jiàn)的用于 聚類和分類的機(jī)器學(xué)習(xí)算法白指。該社區(qū)最初基于 Ngetal. 的文章 “Map-Reduce for Machine Learning on Multicore”留晚,但此后在發(fā)展中又并入了更多廣泛的機(jī)器學(xué)習(xí) 方法,包括Collaborative Filtering(CF)告嘲,Dimensionality Reduction倔丈,Topic Models等。此外状蜗,通過(guò)使用 Apache Hadoop 庫(kù)需五,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
語(yǔ)言:Java
Myrrix最初是Mahout的作者之一Sean Owen基于Mahout開(kāi)發(fā)的一個(gè)試驗(yàn)性質(zhì)的推薦系統(tǒng)。目前Myrrix已經(jīng)是一個(gè)完整的笆豁、實(shí)時(shí)的郎汪、可擴(kuò)展的集群和推薦系統(tǒng),主要 架構(gòu)分為兩部分:服務(wù)層:在線服務(wù)闯狱,響應(yīng)請(qǐ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ú)使用蛾默,無(wú)需 計(jì)算層迂苛,它會(huì)在本地運(yùn)行機(jī)器學(xué)習(xí)算法科乎。計(jì)算層也可以單獨(dú)使用,其本質(zhì)是一系列的Hadoop jobs凶伙。目前Myrrix以被 Cloudera 并入Oryx項(xiàng)目昏翰。
#8.EasyRec
語(yǔ)言:Java
EasyRec是一個(gè)易集成苍匆、易擴(kuò)展、功能強(qiáng)大且具有可視化管理的推薦系統(tǒng)棚菊,更像一個(gè)完整的推薦產(chǎn)品浸踩,包括了數(shù)據(jù)錄入模塊、管理模塊统求、推薦挖掘检碗、離線分析等。 EasyRec可以同時(shí)給多個(gè)不同的網(wǎng)站提供推薦服務(wù)码邻,通過(guò)tenant來(lái)區(qū)分不同的網(wǎng)站折剃。架設(shè)EasyRec服務(wù)器,為網(wǎng)站申請(qǐng)tenant像屋,通過(guò)tenant就可以很方便的集成到 網(wǎng)站中怕犁。通過(guò)各種不同的數(shù)據(jù)收集(view,buy.rating)API收集到網(wǎng)站的用戶行為,EasyRec通過(guò)離線分析己莺,就可以產(chǎn)生推薦信息奏甫,您的網(wǎng)站就可以通過(guò) Recommendations和Community Rankings來(lái)進(jìn)行推薦業(yè)務(wù)的實(shí)現(xiàn)。
#9.Waffles
語(yǔ)言:C++
Waffles英文原意是蜂蜜甜餅凌受,在這里卻指代一個(gè)非常強(qiáng)大的機(jī)器學(xué)習(xí)的開(kāi)源工具包阵子。Waffles里包含的算法特別多,涉及機(jī)器學(xué)習(xí)的方方面面胜蛉,推薦系統(tǒng)位于 其中的Waffles_recommend tool挠进,大概只占整個(gè)Waffles的1/10的內(nèi)容,其它還有分類誊册、聚類奈梳、采樣、降維解虱、數(shù)據(jù)可視化攘须、音頻處理等許許多多工具包,估計(jì) 能與之媲美的也就數(shù)Weka了殴泰。
#10.RapidMiner
語(yǔ)言:Java
RapidMiner(前身是Yale)是一個(gè)比較成熟的數(shù)據(jù)挖掘解決方案于宙,包括常見(jiàn)的機(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ǔ)言接口凑懂,感覺(jué)在向著一個(gè)商用的 數(shù)據(jù)挖掘公司的方向在前進(jìn)煤痕。
作者:龍國(guó)富鏈接:http://www.reibang.com/p/744656416d41來(lái)源:簡(jiǎn)書(shū)著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)接谨,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處摆碉。