當研究院和企業能擷取足夠的專項研究預算之後,能從資料和使用者輸入中學習的智能應用 程式將變得更加常見。人們對機器學習技巧(比如說叢集、協作篩選和分類)的需求前所未 有地增長,無論是尋找一大群人的共性還是自動標籤海量 Web 內容。Apache Mahout 項目旨 在協助開發人員更加方便快捷地建立智能應用程式。Mahout 的創始者 Grant Ingersoll 介 紹了機器學習的基本概念,並示範了如何使用 Mahout 來實現文檔叢集、提出建議和組織內 容。
在資訊時代,公司和個人的成功越來越依賴於迅速有效地將大量資料轉化為可操 作的資訊。無論是每天處理數以千計的個人電子郵件訊息,還是從海量部落格文章中推測使用者 的意圖,都需要使用一些工具來組織和增強資料。機器學習是人工智慧的一個分支,它涉及 通過一些技術來允許電腦根據之前的經驗改善其輸出。此領域與資料採礦密切相關,並且 經常需要使用各種技巧,包括統計學、機率論和模式識別等。雖然機器學習並不是一個新興 領域,但它的發展速度是毋庸置疑的。許多大型公司,包括 IBM®、Google、Amazon、 Yahoo! 和 Facebook,都在自己的應用程式中實現了機器學習演算法。此外,還有許多公司在 自己的應用程式中應用了機器學習,以便學慣用戶以及過去的經驗,從而獲得收益。
在簡要概述機器學習的概念之後,我將介紹 Apache Mahout 項目的特性、曆史和目標。然後 ,我將示範如何使用 Mahout 完成一些有趣的機器學習任務,這需要使用免費的 Wikipedia 資料集。
機器學習 101
機器學習可以應用於各種目的,從遊戲、欺詐檢測到 股票市場分析。它用於構建類似於 Netflix 和 Amazon 所提供的系統,可根據使用者的購買曆 史向他們推薦產品,或者用於構建可尋找特定時間內的所有相似文章的系統。它還可以用於 根據類別(體育、經濟和戰爭等)對網頁自動進行分類,或者用於標記垃圾電子郵件。本文 無法完全列出機器學習的所有應用。
可以採用一些機器學習方法來解決問題。我將重點討論其中最常用的兩個 — 監管 和無 監管 學習 — 因為它們是 Mahout 支援的主要功能。
監管學習的任務是學習帶標籤的訓練資料的功能,以便預測任何有效輸入的值。監管學習 的常見例子包括將電子郵件訊息分類為垃圾郵件,根據類別標記網頁,以及識別手寫輸入。 建立監管學習程式需要使用許多演算法,最常見的包括神經網路、Support Vector Machines (SVMs) 和 Naive Bayes 分類程式。
無監管學習的任務是發揮資料的意義,而不管資料的正確與否。它最常應用於將類似的輸 入整合到邏輯分組中。它還可以用於減少資料集中的維度資料,以便只專註於最有用的屬性 ,或者用於探明趨勢。無監管學習的常見方法包括 k-Means、分層叢集和自組織地圖。
在本文中,我將重點討論 Mahout 當前已實現的三個具體的機器學習任務。它們正好也是 實際應用程式中相當常見的三個領域:
協作篩選
叢集
分類
在研究它們在 Mahout 中的實現之前,我將從概念的層面上更加深入地討論這些任務。