Apache Mahout算法集及源碼目錄說明

Apache Mahout 是 ApacheSoftware Foundation (ASF) 旗下的一個開源項目,提供一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序,並且,在 Mahout 的最近版本中還加入了對Apache Hadoop 的支持,使這些算法可以更高效的運行在雲計算環境中。

https://cwiki.apache.org/confluence/display/MAHOUT/Algorithms

網頁右面顯示的有機器學習的各種算法,包括三大塊聚類、協同過濾、分類等算法

在Mahout實現的機器學習算法見下表:

算法類

算法名

中文名

分類算法

Logistic Regression 

邏輯迴歸

Bayesian 

貝葉斯

Support Vector Machines 

支持向量機

Perceptron and Winnow 

感知器算法

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 

Minhash Clustering 

Top Down Clustering 

譜聚類



關聯規則挖掘

Parallel FP Growth Algorithm

並行FP Growth算法

迴歸

Locally Weighted Linear Regression 

局部加權線性迴歸

降維/維約簡

Stochastic Singular ValueDecomposition 

奇異值分解

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 

隱馬爾科夫模型

集合方法擴展

Collocations 

擴展了java的Collections類


RecommenderDocumentation  

Dimensional Reduction 

Parallel Frequent PatternMining 
Boosting 
Collaborative Filtering with ALS-WR 
Itembased Collaborative Filtering 
Machine Learning Resources 

Online Passive Aggressive 
Online Viterbi 

 Parallel Viterbi 

Recommender First-Timer FAQ 

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中關於集合類的修改,使其可以適應數 據密集型項目的開發。

發佈了24 篇原創文章 · 獲贊 19 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章