機器學習的八個步驟
上個月,Kaggle 聯(lián)合創(chuàng)始人兼 CTO Ben Hamner 在 Quora 上回答了有關 Kaggle、機器學習和人工智能的一系列問題。對于 Hamner 給出的《機器學習的八個步驟》的建議,Kaggle Team 重新整理并做了核心摘要。
現(xiàn)在學習機器學習和人工智能比以往任何時候都更好。近年來,這一領域飛速發(fā)展并碩果累累。專家們開源了各種高質(zhì)量的軟件工具和庫,新的線上資源和博文也層出不窮。機器學習帶動了產(chǎn)業(yè)內(nèi)數(shù)十億美元的收入,催生出了空前的資源和海量的就業(yè)機會。但這也意味著如何入門機器學習讓人有點無所適從。下面是我的入門方法。如果你在本文中的某處卡住了,請搜索 Kaggle(也許某人以前也遇到了同樣問題),并在 Kaggle 論壇上提出問題(如果以前沒人提問過該問題),這是找到方向并解決問題的好方法。
1. 挑一個你感興趣的問題
從一個你想要解決的問題而不是令人生畏的、不系統(tǒng)的主題列表(你可以從谷歌上搜索到很多的機器需誒心資源列表,這里我就不在提供)出發(fā),你會很容易地專注、主動學習。解決問題會促使你更深入更投入,而不是僅僅被動地閱讀一些有關機器學習的文章。
選擇好的入門問題有幾個標準:
- 問題涵蓋了你個人很感興趣的某一領域
- 數(shù)據(jù)隨時可用且非常適宜解決問題(否則你的大部分時間將被耗掉)
- 你可在單臺機器上舒服地使用數(shù)據(jù)(或者數(shù)據(jù)的一些相關子集)
- 沒有發(fā)現(xiàn)問題?被擔心!我們通過入門競賽系列在 Kaggle 上提供了一些很好的機器學習問題。點擊 Titanic 競賽(https://www.kaggle.com/c/titanic)開始。
2. 為你的問題做一個快速、劣質(zhì)和笨拙的端到端解決方案。
確實很容易在實現(xiàn)細節(jié)中或者錯誤機器學習算法的調(diào)試中陷入僵局,而你想要避免它。
在這里你的目標是盡快獲得一些超級基本的內(nèi)容,涵蓋端到端的問題:讀取數(shù)據(jù),并將其處理為適合機器學習的形式,訓練基本模型,創(chuàng)造結果并評估其性能。
3. 進行并改進你的初步方案
現(xiàn)在你有了一個功能基準,是時候創(chuàng)新了。試著改進初步方案的每一個組件,并衡量影響,看看在哪里花費時間有意義。很多時候獲取更多數(shù)據(jù)或者改進數(shù)據(jù)清理和預處理步驟比優(yōu)化機器學習模型本身有更高的回報率(ROI)。
這個步驟的一部分應該包括動手使用數(shù)據(jù)——檢查各行和可視化分布,以更好地理解其結構和奇特性。
4. 寫出并分享解決方案
獲得解決方案反饋的最佳方式是寫下來并分享。寫的過程是梳理解決方案的新方式,并帶來更好的理解。這同樣會使其他人理解你在做的事情并提供反饋,幫助你學習。這也啟動了你的機器學習代表項目集(portfolio),有助于你展示能力并取得工作。
Kaggle 數(shù)據(jù)集 和 Kaggle 內(nèi)核 是你分享數(shù)據(jù)和解決方案、從其他人獲得反饋并觀察他人如何擴展你的問題的有效方式,并開始充實你的 Kaggle 文件。
5. 在一系列不同的問題上重復步驟 1-4
現(xiàn)在你已經(jīng)解決了感興趣的單一問題,然后在一系列不同的領域中多次執(zhí)行這一操作。
你是從表格數(shù)據(jù)開始的嗎?那就再解決一個涉及更少結構化文本的問題,以及另外一個處理圖像的問題。
機器學習問題最初對你而言是結構化的嗎?很多創(chuàng)新性和有價值的工作解決的正是如何從一開始把一個松散定義的業(yè)務或者研究目標轉(zhuǎn)化為明確定義的機器學習問題。通過這種方式解決一個問題類型。
Kaggle 競賽 和 Kaggle 數(shù)據(jù)集為明確定義的機器學習問題和適用于機器學習的原始數(shù)據(jù)資源提供了一個很好的起點。
6. 認真地參與一場 Kaggle 競賽(如果你還沒這樣做)
對于一個數(shù)千人正致力解決的同一問題給出最佳答案是一個巨大的學習機會:它促使你對同一問題不斷迭代,并使你發(fā)現(xiàn)什么可以有效解決問題。
個體競賽的論壇有著關于其他人如何使用你的方法處理和調(diào)試問題的豐富資源,內(nèi)核提供了關于用簡單方法開始解決問題的數(shù)據(jù)的探索性見解,并且獲獎博文(http://blog.kaggle.com/category/winners-interviews/)在最后展示最佳成果。
Kaggle 競賽也提供了與其他人組隊的獨特機會。社區(qū)人群有著不同的背景和技術,每個人皆可有教和學兩種角色。你永遠不會不知道,也許你未來的同事也在 Kaggle 社區(qū)中。
7. 申請機器學習專業(yè)工作
這使你把大部分時間花在機器學習上,并真正提升你的水平。決定你要追求的職位類型并打造與此相關個人代表項目集是一個強有力的起點。如果你還沒有準備好面試機器學習職位,那就在目前的職位上接受新項目,尋求咨詢機會;并且參與公民黑客馬拉松,把握與數(shù)據(jù)相關的社區(qū)服務機會也是獲得立足的額外途徑。專業(yè)工作需要強大的編程能力,并借其極大地提升工作表現(xiàn)——通過重點項目帶來的提升將產(chǎn)生很多下游收益。
專業(yè)機器學習工作的寶貴機會包括:
- 機器學習在生產(chǎn)系統(tǒng)中的應用
- 聚焦機器學習研究,推動最新進展
- 利用機器學習提升產(chǎn)品和業(yè)務決策的探索性分析
8. 教其他人機器學習
教學可以幫你鞏固對機器學習核心概念的理解。教他人的方式有很多種,選擇最適合自己的一種: