Mahout算法集Taste
Apache Mahout 是 ApacheSoftware Foundation (ASF) 旗下的一個開源項(xiàng)目,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序,并且,在 Mahout 的最近版本中還加入了對Apache Hadoop 的支持,使這些算法可以更高效的運(yùn)行在云計算環(huán)境中。
在Mahout實(shí)現(xiàn)的機(jī)器學(xué)習(xí)算法見下表:
| 算法類 | 算法名 | 中文名 |
| 分類算法 | Logistic Regression | 邏輯回歸 |
| Bayesian | 貝葉斯 | |
| SVM | 支持向量機(jī) | |
| Perceptron | 感知器算法 | |
| Neural Network | 神經(jīng)網(wǎng)絡(luò) | |
| Random Forests | 隨機(jī)森林 | |
| Restricted Boltzmann Machines | 有限波爾茲曼機(jī) | |
| 聚類算法 | Canopy Clustering | Canopy聚類 |
| K-means Clustering | K均值算法 | |
| Fuzzy K-means | 模糊K均值 | |
| Expectation Maximization | EM聚類(期望最大化聚類) | |
| Mean Shift Clustering | 均值漂移聚類 | |
| Hierarchical Clustering | 層次聚類 | |
| Dirichlet Process Clustering | 狄里克雷過程聚類 | |
| Latent Dirichlet Allocation | LDA聚類 | |
| Spectral Clustering | 譜聚類 | |
| 關(guān)聯(lián)規(guī)則挖掘 | Parallel FP Growth Algorithm | 并行FP Growth算法 |
| 回歸 | Locally Weighted Linear Regression | 局部加權(quán)線性回歸 |
| 降維/維約簡 | Singular Value Decomposition | 奇異值分解 |
| Principal Components Analysis | 主成分分析 | |
| Independent Component Analysis | 獨(dú)立成分分析 | |
| Gaussian Discriminative Analysis | 高斯判別分析 | |
| 進(jìn)化算法 | 并行化了Watchmaker框架 | ? |
| 推薦/協(xié)同過濾 | Non-distributed recommenders | Taste(UserCF, ItemCF, SlopeOne) |
| Distributed Recommenders | ItemCF | |
| 向量相似度計算 | RowSimilarityJob | 計算列間相似度 |
| VectorDistanceJob | 計算向量間距離 | |
| 非Map-Reduce算法 | Hidden Markov Models | 隱馬爾科夫模型 |
| 集合方法擴(kuò)展 | Collections | 擴(kuò)展了java的Collections類 |
Mahout最大的優(yōu)點(diǎn)就是基于hadoop實(shí)現(xiàn),把很多以前運(yùn)行于單機(jī)上的算法,轉(zhuǎn)化為了MapReduce模式,這樣大大提升了算法可處理的數(shù)據(jù)量和處理性能。
?
Mahout下個性化推薦引擎Taste介紹
Taste是?Apache Mahout?提供的一個個性化推薦引擎的高效實(shí)現(xiàn),該引擎基于java實(shí)現(xiàn),可擴(kuò)展性強(qiáng),同時在mahout中對一些推薦算法進(jìn)行了MapReduce編程模式轉(zhuǎn)化,從而可以利用hadoop的分布式架構(gòu),提高推薦算法的性能。
?
在Mahout0.5版本中的Taste,?實(shí)現(xiàn)了多種推薦算法,其中有最基本的基于用戶的和基于內(nèi)容的推薦算法,也有比較高效的SlopeOne算法,以及處于研究階段的基于SVD和線性插值的算法,同時Taste還提供了擴(kuò)展接口,用于定制化開發(fā)基于內(nèi)容或基于模型的個性化推薦算法。
?
Taste?不僅僅適用于?Java?應(yīng)用程序,還可以作為內(nèi)部服務(wù)器的一個組件以?HTTP?和?Web Service?的形式向外界提供推薦的邏輯。Taste?的設(shè)計使它能滿足企業(yè)對推薦引擎在性能、靈活性和可擴(kuò)展性等方面的要求。
?
下圖展示了構(gòu)成Taste的核心組件:
?
?
?
從上圖可見,Taste由以下幾個主要組件組成:
?
DataModel:DataModel是用戶喜好信息的抽象接口,它的具體實(shí)現(xiàn)支持從指定類型的數(shù)據(jù)源抽取用戶喜好信息。在Mahout0.5中,Taste?提供JDBCDataModel?和?FileDataModel兩種類的實(shí)現(xiàn),分別支持從數(shù)據(jù)庫和文件文件系統(tǒng)中讀取用戶的喜好信息。對于數(shù)據(jù)庫的讀取支持,在Mahout 0.5中只提供了對MySQL和PostgreSQL的支持,如果數(shù)據(jù)存儲在其他數(shù)據(jù)庫,或者是把數(shù)據(jù)導(dǎo)入到這兩個數(shù)據(jù)庫中,或者是自行編程實(shí)現(xiàn)相應(yīng)的類。
?
??? UserSimilarit和ItemSimilarity:前者用于定義兩個用戶間的相似度,后者用于定義兩個項(xiàng)目之間的相似度。Mahout支持大部分駐留的相似度或相關(guān)度計算方法,針對不同的數(shù)據(jù)源,需要合理選擇相似度計算方法。
?
??? UserNeighborhood:在基于用戶的推薦方法中,推薦的內(nèi)容是基于找到與當(dāng)前用戶喜好相似的“鄰居用戶”的方式產(chǎn)生的,該組件就是用來定義與目標(biāo)用戶相鄰的“鄰居用戶”。所以,該組件只有在基于用戶的推薦算法中才會被使用。
?????Recommender:Recommender是推薦引擎的抽象接口,Taste?中的核心組件。利用該組件就可以為指定用戶生成項(xiàng)目推薦列表。
?
Mahout源碼目錄說明
mahout項(xiàng)目是由多個子項(xiàng)目組成的,各子項(xiàng)目分別位于源碼的不同目錄下,下面對mahout的組成進(jìn)行介紹: 1、mahout-core:核心程序模塊,位于/core目錄下; 2、mahout-math:在核心程序中使用的一些數(shù)據(jù)通用計算模塊,位于/math目錄下; 3、mahout-utils:在核心程序中使用的一些通用的工具性模塊,位于/utils目錄下; 上述三個部分是程序的主題,存儲所有mahout項(xiàng)目的源碼。 另外,mahout提供了樣例程序,分別在taste-web和examples目錄下: 4、taste-web:利用mahout推薦算法而建立的基于WEB的個性化推薦系統(tǒng)demo; 5、examples:對mahout中各種機(jī)器學(xué)習(xí)算法的應(yīng)用程序; 6、bin:bin目錄下只有一個名為mahout的文件,是一個shell腳本文件,用于在hadoop平臺的命令行下調(diào)用mahout中的程序; 在buildtools、eclipse和distribution目錄下,有mahout相關(guān)的配置文件 7、buildtools目錄下是用于核心程序構(gòu)建的配置文件,以mahout-buildtools的模塊名稱在mahout的pom.xml文件中進(jìn)行說明; 8、eclipse下的xml文件是對利用eclipse開發(fā)mahout的配置說明; 9、distribution目錄下有兩個配置文件:bin.xml和src.xml,進(jìn)行mahou安裝時的一些配置信息。 (在開發(fā)的時候一般很少對這個目錄下的文件進(jìn)行修改,所以不用太關(guān)注,知道大體什么意思就ok) 另 外,在mahout的下載地址下可以看到有個文件夾與mahout處于同一級別,它是mahout項(xiàng)目的分支項(xiàng)目—mahout- collections,用于實(shí)現(xiàn)了核心程序中使用的集合類操作,該模塊獨(dú)立于mahout進(jìn)行開發(fā),是對標(biāo)準(zhǔn)jdk中關(guān)于集合類的修改,使其可以適應(yīng)數(shù) 據(jù)密集型項(xiàng)目的開發(fā)。 原文地址:http://www.cnblogs.com/jerome-rong/archive/2012/05/22/2512931.html總結(jié)
以上是生活随笔為你收集整理的Mahout算法集Taste的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言单向链表的逆序输出
- 下一篇: DNF体验服辅助/稳定/脚本/搬砖/