讀古今文學網 > 機器學習實戰 > 第15章 大數據與MapReduce >

第15章 大數據與MapReduce

本章內容

  • MapReduce
  • Python中Hadoop流的使用
  • 使用mrjob庫將MapReduce自動化
  • 利用Pegasos算法並行訓練支持向量機

常聽人說:「兄弟,你舉的例子是不錯,但我的數據太大了!」毫無疑問,工作中所使用的數據集將會比本書的例子大很多。隨著大量設備連上互聯網加上用戶也對基於數據的決策很感興趣,所收集到的數據已經遠遠超出了我們的處理能力。幸運的是,一些開源的軟件項目提供了海量數據處理的解決方案,其中一個項目就是Hadoop,它採用Java語言編寫,支持在大量機器上分佈式處理數據。

假想你為一家網絡購物商店工作,有很多用戶來訪問網站,其中有一些人會購買商品,有一些人則在隨意瀏覽後離開了網站。對於你來說,可能很想識別那些有購物意願的用戶。如何實現這一點?可以瀏覽Web服務器日誌找出每個人所訪問的網頁。日誌中或許還會記錄其他行為,如果這樣,就可以基於這些行為來訓練分類器。唯一的問題在於數據集可能會非常大,在單機上訓練算法可能要運行好幾天。本章就將介紹一些實用的工具來解決這樣的問題,包括Hadoop以及一些基於Hadoop的Python工具包。

Hadoop是MapReduce框架的一個免費開源實現,本章首先簡單介紹MapReduce和Hadoop項目,然後學習如何使用Python編寫MapReduce作業1。這些作業先在單機上進行測試,之後將使用亞馬遜的Web服務在大量機器上並行執行。一旦能夠熟練運行MapReduce作業,本章我們就可以討論基於MapReduce處理機器學習算法任務的一般解決方案。在本章中還將看到一個可以在Python中自動執行MapReduce作業的mrjob框架。最後,介紹如何用mrjob構建分佈式SVM,在大量的機器上並行訓練分類器。    1. 一個作業即指把一個MapReduce程序應用到一個數據集上。——譯者注