Kaggle 上機器學習的八個步驟

選自Kaggle

作者:Ben Hamner

機器之心編譯

參與:黃小天

上個月,Kaggle 聯合創始人兼 CTO Ben Hamner 在 Quora 上回答了有關 Kaggle、機器學習和人工智能的一系列問題。對於 Hamner 給出的《機器學習的八個步驟》的建議,Kaggle Team 重新整理並做了核心摘要。

現在學習機器學習和人工智能比以往任何時候都更好。近年來,這一領域飛速發展並碩果累累。專家們開源了各種高質量的軟件工具和庫,新的線上資源和博文也層出不窮。機器學習帶動了產業內數十億美元的收入,催生出了空前的資源和海量的就業機會。但這也意味著如何入門機器學習讓人有點無所適從。下面是我的入門方法。如果你在本文中的某處卡住了,請搜索 Kaggle(也許某人以前也遇到了同樣問題),並在 Kaggle 論壇上提出問題(如果以前沒人提問過該問題),這是找到方向並解決問題的好方法。

1. 挑一個你感興趣的問題

從一個你想要解決的問題而不是令人生畏的、不繫統的主題列表(你可以從谷歌上搜索到很多的機器需誒心資源列表,這裡我就不在提供)出發,你會很容易地專注、主動學習。解決問題會促使你更深入更投入,而不是僅僅被動地閱讀一些有關機器學習的文章。

選擇好的入門問題有幾個標準:

  • 問題涵蓋了你個人很感興趣的某一領域

  • 數據隨時可用且非常適宜解決問題(否則你的大部分時間將被耗掉)

  • 你可在單臺機器上舒服地使用數據(或者數據的一些相關子集)

  • 沒有發現問題?被擔心!我們通過入門競賽系列在 Kaggle 上提供了一些很好的機器學習問題。點擊 Titanic 競賽(https://www.kaggle.com/c/titanic)開始。

2. 為你的問題做一個快速、劣質和笨拙的端到端解決方案。

確實很容易在實現細節中或者錯誤機器學習算法的調試中陷入僵局,而你想要避免它。

在這裡你的目標是儘快獲得一些超級基本的內容,涵蓋端到端的問題:讀取數據,並將其處理為適合機器學習的形式,訓練基本模型,創造結果並評估其性能。

3. 進行並改進你的初步方案

現在你有了一個功能基準,是時候創新了。試著改進初步方案的每一個組件,並衡量影響,看看在哪裡花費時間有意義。很多時候獲取更多數據或者改進數據清理和預處理步驟比優化機器學習模型本身有更高的回報率(ROI)。

這個步驟的一部分應該包括動手使用數據——檢查各行和可視化分佈,以更好地理解其結構和奇特性。

4. 寫出並分享解決方案

獲得解決方案反饋的最佳方式是寫下來並分享。寫的過程是梳理解決方案的新方式,並帶來更好的理解。這同樣會使其他人理解你在做的事情並提供反饋,幫助你學習。這也啟動了你的機器學習代表項目集(portfolio),有助於你展示能力並取得工作。

Kaggle 數據集(https://www.kaggle.com/datasets)和 Kaggle 內核(https://www.kaggle.com/kernels)是你分享數據和解決方案、從其他人獲得反饋並觀察他人如何擴展你的問題的有效方式,並開始充實你的 Kaggle 文件。

Kaggle 上機器學習的八個步驟

5. 在一系列不同的問題上重複步驟 1-4

現在你已經解決了感興趣的單一問題,然後在一系列不同的領域中多次執行這一操作。

你是從表格數據開始的嗎?那就再解決一個涉及更少結構化文本的問題,以及另外一個處理圖像的問題。

機器學習問題最初對你而言是結構化的嗎?很多創新性和有價值的工作解決的正是如何從一開始把一個鬆散定義的業務或者研究目標轉化為明確定義的機器學習問題。通過這種方式解決一個問題類型。

Kaggle 競賽(https://www.kaggle.com/competitions)和 Kaggle 數據集為明確定義的機器學習問題和適用於機器學習的原始數據資源提供了一個很好的起點。

6. 認真地參與一場 Kaggle 競賽(如果你還沒這樣做)

對於一個數千人正致力解決的同一問題給出最佳答案是一個巨大的學習機會:它促使你對同一問題不斷迭代,並使你發現什麼可以有效解決問題。

Kaggle 上機器學習的八個步驟

個體競賽的論壇有著關於其他人如何使用你的方法處理和調試問題的豐富資源,內核提供了關於用簡單方法開始解決問題的數據的探索性見解,並且獲獎博文(http://blog.kaggle.com/category/winners-interviews/)在最後展示最佳成果。

Kaggle 競賽也提供了與其他人組隊的獨特機會。社區人群有著不同的背景和技術,每個人皆可有教和學兩種角色。你永遠不會不知道,也許你未來的同事也在 Kaggle 社區中。

7. 申請機器學習專業工作

這使你把大部分時間花在機器學習上,並真正提升你的水平。決定你要追求的職位類型並打造與此相關個人代表項目集是一個強有力的起點。如果你還沒有準備好面試機器學習職位,那就在目前的職位上接受新項目,尋求諮詢機會;並且參與公民黑客馬拉松,把握與數據相關的社區服務機會也是獲得立足的額外途徑。專業工作需要強大的編程能力,並借其極大地提升工作表現——通過重點項目帶來的提升將產生很多下游收益。

專業機器學習工作的寶貴機會包括:

  • 機器學習在生產系統中的應用

  • 聚焦機器學習研究,推動最新進展

  • 利用機器學習提升產品和業務決策的探索性分析

8. 教其他人機器學習

教學可以幫你鞏固對機器學習核心概念的理解。教他人的方式有很多種,選擇最適合自己的一種:

  • 寫研究論文(https://papers.nips.cc/book/advances-in-neural-information-processing-systems-29-2016)

  • 發表演講

  • 寫博文(http://blog.kaggle.com/)和教程(http://blog.kaggle.com/category/tutorials/)

  • 在 Kaggle、Quora 和其他網站上回答問題

  • 個人指導和輔導

  • 分享代碼實例(在 Kaggle 內核和 GitHub 上)

  • 教課

  • 寫書(http://www.deeplearningbook.org)

相關推薦

推薦中...