hadoop mathout學習筆記
mahout 當前已實現的三個具體的機器學習任務。它們正好也是實際應用程序中相當常見的三個領域:
- 協作篩選
- 集群
- 分類
協作篩選(CF) 應用程序根據用戶和項目歷史向系統的當前用戶提供推薦。生成推薦的 4 種典型方法如下:
基于用戶 :通過查找相似的用戶來推薦項目。由于用戶的動態特性,這通常難以定量。
基于項目 :計算項目之間的相似度并做出推薦。項目通常不會過多更改,因此這通常可以離線完成。
Slope-One :非常快速簡單的基于項目的推薦方法,需要使用用戶的評分信息(而不僅僅是布爾型的首選項)。
基于模型 :通過開發一個用戶及評分模型來提供推薦。
對于大型數據集來說,無論它們是文本還是數值,一般都可以將類似的項目自動組織,或集群 ,到一起。舉例來說,對于全美國某天內的所有的報紙新聞,您可能希望將所有主題相同的文章自動歸類到一起;然后,可以選擇專注于特定的集群和主題,而不需要閱讀大量無關內容。另一個例子是:某臺機器上的傳感器會持續輸出內容,您可能希望對輸出進行分類,以便于分辨正常和有問題的操作,因為普通操作和異常操作 會歸類到不同的集群中。
-
與 CF 類似,集群計算集合中各項目之間的相似度,但它的任務只是對相似的項目進行分組。在許多集群實現中,集合中的項目都是作為矢量表示在 n 維度空間中的。通過矢量,開發人員可以使用各種指標(比如說曼哈頓距離、歐氏距離或余弦相似性)來計算兩個項目之間的距離。然后,通過將距離相近的項目歸類到一起,可以計算出實際集群。
可 以通過許多方法來計算集群,每種方法都有自己的利弊。一些方法從較小的集群逐漸構建成較大的集群,還有一些方法將單個大集群分解為越來越小的集群。在發展 成平凡集群表示之前(所有項目都在一個集群中,或者所有項目都在各自的集群中),這兩種方法都會通過特定的標準退出處理。流行的方法包括 k-Means 和分層集群。如下所示,Mahout 也隨帶了一些不同的集群方法。
分類 (通常也稱為歸類 )的目標是標記不可見的文檔,從而將它們歸類不同的分組中。機器學習中的許多分類方法都需要計算各種統計數據(通過指定標簽與文檔的特性相關),從而創建一個模型以便以后用于分類不可見的文檔。舉例來說,一種簡單的分類方法可以跟蹤與標簽相關的詞,以及這些詞在某個標簽中的出現次數。然后,在對新文檔進行分 類時,系統將在模型中查找文檔中的詞并計算概率,然后輸出最佳結果并通過一個分類來證明結果的正確性。
分類功能的特性可以包括詞匯、詞匯權重(比如說根據頻率)和語音部件等。當然,這些特性確實有助于將文檔關聯到某個標簽并將它整合到算法中。
機器學習這個領域相當廣泛和活躍。理論再多終究需要實踐。接下來,我將繼續討論 Mahout 及其用法。
Mahout 的入門相對比較簡單。首先,您需要安裝以下軟件:
- JDK 1.6 或更高版本
- Ant 1.7 或更高版本
- 如果要編譯 Mahout 源代碼,還需要安裝 Maven 2.0.9 或 2.0.10