Mahout 是 Apache基金會旗下的一個開源項目,其提供一些可擴充的機器學習領域經典算法的實作,旨在幫助開發人員更加友善快捷地建立智能應用程式。Mahout包含許多實作,包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用 Apache Hadoop 庫,Mahout 可以有效地擴充到雲中。
Mahout 項目是由 Apache Lucene(開源搜尋)社群中對機器學習感興趣的一些成員發起的,他們希望建立一個可靠、文檔翔實、可伸縮的項目,在其中實作一些常見的用于叢集和分類的機器學習算法,但此後在發展中又并入了更多廣泛的機器學習方法。
Mahout 支援一些叢集算法實作(都是使用 Map-Reduce 編寫的),它們都有一組各自的目标和标準:
- Canopy:一種快速叢集算法,通常用于為其他叢集算法建立初始種子。
- k-Means(以及 模糊 k-Means):根據項目與之前疊代的質心(或中心)之間的距離将項目添加到 k 叢集中。
- Mean-Shift:無需任何關于叢集數量的 推理知識的算法,它可以生成任意形狀的叢集。
- Dirichlet:借助基于多種機率模型的叢集,它不需要提前執行特定的叢集視圖。
Mahout 目前提供了一些工具,可用于通過 Taste 庫建立一個推薦引擎 —針對 CF 的快速且靈活的引擎。Taste 支援基于使用者和基于項目的推薦,并且提供了許多推薦選項,以及用于自定義的界面。Taste 包含 5 個主要元件,用于操作 使用者、項目和 首選項:
- DataModel:用于存儲 使用者、項目和 首選項。
- UserSimilarity:用于定義兩個使用者之間的相似度的界面。
- ItemSimilarity:用于定義兩個項目之間的相似度的界面。
- Recommender:用于提供推薦的界面。
- UserNeighborhood:用于計算相似使用者鄰近度的界面,其結果随時可由 Recommender使用。
借助這些元件以及它們的實作,開發人員可以建構複雜的推薦系統,提供基于實時或者離線的推薦。基于實時的推薦經常隻能處理數千使用者,而離線推薦具有更好的适用性。Taste 甚至提供了一些可利用 Hadoop 離線計算推薦的工具。在許多情況中,這種合适的方法可以幫助您滿足包含大量使用者、項目和首選項的大型系統的需求。
Mahout目前支援兩種根據貝氏統計來實作内容分類的方法。第一種方法是使用簡單的支援 Map-Reduce 的 Naive Bayes 分類器。Naive Bayes 分類器為速度快和準确性高而著稱,但其關于資料的簡單(通常也是不正确的)假設是完全獨立的。當各類的訓練示例的大小不平衡,或者資料的獨立性不符合要求時,Naive Bayes 分類器會出現故障。第二種方法是 Complementary Naive Bayes,它會嘗試糾正 Naive Bayes 方法中的一些問題,同時仍然能夠維持簡單性和速度。
資料來源:
Apache Mahout 簡介
https://www.ibm.com/developerworks/cn/java/j-mahout/Mahout官網
http://mahout.apache.org/