认识Mahout下的云计算机器学习
Apache Mahout 是 ApacheSoftware Foundation (ASF) 旗下的一個(gè)開(kāi)源項(xiàng)目,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開(kāi)發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序,并且,在 Mahout 的最近版本中還加入了對(duì)Apache Hadoop 的支持,使這些算法可以更高效的運(yùn)行在云計(jì)算環(huán)境中。
在Mahout實(shí)現(xiàn)的機(jī)器學(xué)習(xí)算法見(jiàn)下表:
| 算法類 | 算法名 | 中文名 |
| 分類算法 | 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 | 狄里克雷過(guò)程聚類 | |
| Latent Dirichlet Allocation | LDA聚類 | |
| Spectral Clustering | 譜聚類 | |
| 關(guān)聯(lián)規(guī)則挖掘 | Parallel FP Growth Algorithm | 并行FP Growth算法 |
| 回歸 | Locally Weighted Linear Regression | 局部加權(quán)線性回歸 |
| 降維/維約簡(jiǎn) | Singular Value Decomposition | 奇異值分解 |
| Principal Components Analysis | 主成分分析 | |
| Independent Component Analysis | 獨(dú)立成分分析 | |
| Gaussian Discriminative Analysis | 高斯判別分析 | |
| 進(jìn)化算法 | 并行化了Watchmaker框架 | ? |
| 推薦/協(xié)同過(guò)濾 | Non-distributed recommenders | Taste(UserCF, ItemCF, SlopeOne) |
| Distributed Recommenders | ItemCF | |
| 向量相似度計(jì)算 | RowSimilarityJob | 計(jì)算列間相似度 |
| VectorDistanceJob | 計(jì)算向量間距離 | |
| 非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下個(gè)性化推薦引擎Taste介紹
Taste是?Apache Mahout?提供的一個(gè)個(gè)性化推薦引擎的高效實(shí)現(xiàn),該引擎基于java實(shí)現(xiàn),可擴(kuò)展性強(qiáng),同時(shí)在mahout中對(duì)一些推薦算法進(jìn)行了MapReduce編程模式轉(zhuǎn)化,從而可以利用hadoop的分布式架構(gòu),提高推薦算法的性能。
?
在Mahout0.5版本中的Taste,?實(shí)現(xiàn)了多種推薦算法,其中有最基本的基于用戶的和基于內(nèi)容的推薦算法,也有比較高效的SlopeOne算法,以及處于研究階段的基于SVD和線性插值的算法,同時(shí)Taste還提供了擴(kuò)展接口,用于定制化開(kāi)發(fā)基于內(nèi)容或基于模型的個(gè)性化推薦算法。
?
Taste?不僅僅適用于?Java?應(yīng)用程序,還可以作為內(nèi)部服務(wù)器的一個(gè)組件以?HTTP?和?Web Service?的形式向外界提供推薦的邏輯。Taste?的設(shè)計(jì)使它能滿足企業(yè)對(duì)推薦引擎在性能、靈活性和可擴(kuò)展性等方面的要求。
?
下圖展示了構(gòu)成Taste的核心組件:
?
?
?
從上圖可見(jiàn),Taste由以下幾個(gè)主要組件組成:
?
DataModel:DataModel是用戶喜好信息的抽象接口,它的具體實(shí)現(xiàn)支持從指定類型的數(shù)據(jù)源抽取用戶喜好信息。在Mahout0.5中,Taste?提供JDBCDataModel?和?FileDataModel兩種類的實(shí)現(xiàn),分別支持從數(shù)據(jù)庫(kù)和文件文件系統(tǒng)中讀取用戶的喜好信息。對(duì)于數(shù)據(jù)庫(kù)的讀取支持,在Mahout 0.5中只提供了對(duì)MySQL和PostgreSQL的支持,如果數(shù)據(jù)存儲(chǔ)在其他數(shù)據(jù)庫(kù),或者是把數(shù)據(jù)導(dǎo)入到這兩個(gè)數(shù)據(jù)庫(kù)中,或者是自行編程實(shí)現(xiàn)相應(yīng)的類。
?
??? UserSimilarit和ItemSimilarity:前者用于定義兩個(gè)用戶間的相似度,后者用于定義兩個(gè)項(xiàng)目之間的相似度。Mahout支持大部分駐留的相似度或相關(guān)度計(jì)算方法,針對(duì)不同的數(shù)據(jù)源,需要合理選擇相似度計(jì)算方法。
?
??? UserNeighborhood:在基于用戶的推薦方法中,推薦的內(nèi)容是基于找到與當(dāng)前用戶喜好相似的“鄰居用戶”的方式產(chǎn)生的,該組件就是用來(lái)定義與目標(biāo)用戶相鄰的“鄰居用戶”。所以,該組件只有在基于用戶的推薦算法中才會(huì)被使用。
?????Recommender:Recommender是推薦引擎的抽象接口,Taste?中的核心組件。利用該組件就可以為指定用戶生成項(xiàng)目推薦列表。
?
Mahout源碼目錄說(shuō)明
mahout項(xiàng)目是由多個(gè)子項(xiàng)目組成的,各子項(xiàng)目分別位于源碼的不同目錄下,下面對(duì)mahout的組成進(jìn)行介紹: 1、mahout-core:核心程序模塊,位于/core目錄下; 2、mahout-math:在核心程序中使用的一些數(shù)據(jù)通用計(jì)算模塊,位于/math目錄下; 3、mahout-utils:在核心程序中使用的一些通用的工具性模塊,位于/utils目錄下; 上述三個(gè)部分是程序的主題,存儲(chǔ)所有mahout項(xiàng)目的源碼。 另外,mahout提供了樣例程序,分別在taste-web和examples目錄下: 4、taste-web:利用mahout推薦算法而建立的基于WEB的個(gè)性化推薦系統(tǒng)demo; 5、examples:對(duì)mahout中各種機(jī)器學(xué)習(xí)算法的應(yīng)用程序; 6、bin:bin目錄下只有一個(gè)名為mahout的文件,是一個(gè)shell腳本文件,用于在hadoop平臺(tái)的命令行下調(diào)用mahout中的程序; 在buildtools、eclipse和distribution目錄下,有mahout相關(guān)的配置文件 7、buildtools目錄下是用于核心程序構(gòu)建的配置文件,以mahout-buildtools的模塊名稱在mahout的pom.xml文件中進(jìn)行說(shuō)明; 8、eclipse下的xml文件是對(duì)利用eclipse開(kāi)發(fā)mahout的配置說(shuō)明; 9、distribution目錄下有兩個(gè)配置文件:bin.xml和src.xml,進(jìn)行mahou安裝時(shí)的一些配置信息。 (在開(kāi)發(fā)的時(shí)候一般很少對(duì)這個(gè)目錄下的文件進(jìn)行修改,所以不用太關(guān)注,知道大體什么意思就ok)另 外,在mahout的下載地址下可以看到有個(gè)文件夾與mahout處于同一級(jí)別,它是mahout項(xiàng)目的分支項(xiàng)目—mahout- collections,用于實(shí)現(xiàn)了核心程序中使用的集合類操作,該模塊獨(dú)立于mahout進(jìn)行開(kāi)發(fā),是對(duì)標(biāo)準(zhǔn)jdk中關(guān)于集合類的修改,使其可以適應(yīng)數(shù) 據(jù)密集型項(xiàng)目的開(kāi)發(fā)。
在windows xp下利用Eclipse構(gòu)建Mahout
1. Mahout構(gòu)建的先決條件
1) JDK,使用1.6版本。需要說(shuō)明一下,因?yàn)橐贓clipse構(gòu)建,所以在設(shè)置path的值之前要先定義JAVA_HOME變量。
2) Maven,使用2.0.11版本或以上。在eclipse上安裝maven插件—m2eclipse。
2. mahout源碼獲取
與其他Apache下開(kāi)源項(xiàng)目類似,可以有兩種獲取源碼的方法:
一是通過(guò)Subversion檢出,檢出命令和地址如下
svn co http://svn.apache.org/repos/asf/mahout/trunk
二是直接下載發(fā)行版本,下載地址:http://apache.etoak.com//mahout/,打開(kāi)該地址,可以看到如下目錄組織:
到發(fā)文為止mahout的發(fā)行版本到0.5,點(diǎn)擊進(jìn)入0.5/,進(jìn)入源碼頁(yè),如下圖:
紅色框中的就是mahout的源碼壓縮文件,可以根據(jù)安裝的解壓工具選擇任意一個(gè)進(jìn)行下載。
另外,下載發(fā)行版也可以到maven的在線資源庫(kù)中下載,地址如下:
http://repo2.maven.org/maven2/org/apache/mahout/
3. mahout構(gòu)建
1)解壓mahout源碼壓縮文件,了解目錄結(jié)構(gòu)
利用解壓工具把下載的壓縮包解壓到當(dāng)前目錄,點(diǎn)擊進(jìn)入,可以看到如下目錄結(jié)構(gòu)(使用subversion檢出的可以在檢出的當(dāng)前目下看到如下目錄結(jié)構(gòu)):
2)把源碼導(dǎo)入eclipse中
打開(kāi)eclipse,點(diǎn)擊file->import 在開(kāi)打的對(duì)話框中,選擇導(dǎo)入maven項(xiàng)目如下圖,然后點(diǎn)擊next
通過(guò)瀏覽方式,確定mahout源碼的根目錄,如下圖,然后點(diǎn)擊finish:
至此,通過(guò)eclipse的package explore 可以查看導(dǎo)入的mahout項(xiàng)目的組成,如下圖:
3)運(yùn)行編譯
運(yùn)行時(shí),點(diǎn)開(kāi)mahout-distribution-0.5,選中其下的pom.xml文件,然后右鍵選擇run as項(xiàng),就可以對(duì)mahout進(jìn)行構(gòu)建、編譯、測(cè)試以及安裝等操作。
如果只是要對(duì)某個(gè)子項(xiàng)目進(jìn)行操作,可以點(diǎn)擊子項(xiàng)目的pom.xml進(jìn)行運(yùn)行。
posted on 2011-12-22 11:16 wentingtu 閱讀(...) 評(píng)論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/wentingtu/archive/2011/12/22/2297496.html
總結(jié)
以上是生活随笔為你收集整理的认识Mahout下的云计算机器学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大叔手记(12):我的一次面试经历(谈大
- 下一篇: centos找不到IFCONFIG命令