讀古今文學網 > 機器學習實戰 > 15.8 本章小結 >

15.8 本章小結

當運算需求超出了當前資源的運算能力,可以考慮購買更好的機器。另一個情況是,運算需求超出了合理價位下所能購買到的機器的運算能力。其中一個解決辦法是將計算轉成並行的作業,MapReduce就提供了這種方案的一個具體實施框架。在MapReduce中,作業被分成map階段和reduce階段。

一個典型的作業流程是先使用map階段並行處理數據,之後將這些數據在reduce階段合併。這種多對一的模式很典型,但不是唯一的流程方式。mapper和reducer之間傳輸數據的形式是key/value對。一般地,map階段後數據還會按照key值進行排序。Hadoop是一個流行的可運行MapReduce作業的Java項目,它同時也提供非Java作業的運行支持,叫做Hadoop流。

Amazon網絡服務(AWS)允許用戶按時長租借計算資源。彈性MapReduce(EMR)是Amazon網絡服務上的一個常用工具,可以幫助用戶在AWS上運行Hadoop流作業。簡單的單步MapReduce任務可以在EMR管理控制台上實現並運行。更複雜的任務則需要額外的工具。其中一個相對新的開源工具是mrjob,使用該工具可以順序地執行大量的MapReduce作業。經過很少的配置,mrjob就可以自動完成AWS上的各種繁雜步驟。

很多機器學習算法都可以很容易地寫成MapReduce作業。而另一些機器學習算法需要經過創新性的修改,才能在MapReduce上運行。SVM是一個強大的文本分類工具,在大量文檔上訓練一個分類器需要耗費巨大的計算資源,而Pegasos算法可以分佈式地訓練SVM分類器。像Pegasos算法一樣,需要多次MapReduce作業的機器學習算法可以很方便地使用mrjob來實現。

到這裡為止,本書的正文部分就結束了,感謝你的閱讀。希望這本書能為你開啟新的大門。另外,在機器學習的數學和具體實現方面還有很多東西值得探索。我很期待你能使用在本書裡學到的工具和技術開發出一些有趣的應用。