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