機器學習入門階段程序員易犯的5個錯誤
怎樣進入機器學習領域沒有定式。我們的學習方式都有些許不同,學習的目標也因人而異。
但一個共同的目標就是要能盡快上手。如果這也是你的目標,那么這篇文章為你列舉了程序員們在通往機器學習高手道路上常見的五種錯誤。
1.將機器學習看得高不可攀
機器學習不過是另一堆技術的集合,你可以用它來解決復雜問題。這是一個飛速發(fā)展的領域,因此,機器學習的學術交流一般出現在學術期刊及研究生的課本里,讓它看起來高不可攀又難于理解。
要想高效掌握機器學習,我們需要轉變觀念,從技術轉到方法,由精確變?yōu)?ldquo;足夠好”,這也同樣適用于程序員感興趣的其它復雜技術。
2.編寫機器學習程序代碼
由編碼開始入門機器學習會很困難,因為你需要解決的問題從一個變成兩個:了解一項技術以便你實現它以及對于給定問題如何應用該項技術。一次解決一個問題,并利用機器學習、統(tǒng)計分析環(huán)境以及算法庫來學習如何將一項技術應用于某一問題,這樣就會容易很多。這能讓你對于若干算法進行相對快速的抽查和調整,而無需花上大量時間閱讀研究論文中含糊的算法描述再將其編碼。
實現一個算法可以作為一個單獨的項目晚些再完成,比如作為一個練習或是等到原型系統(tǒng)需要投入運行時。一時只學一事,我建議從有GUI的機器學習框架開始入門,不論你是不是程序員。
3.手動搞定工作
實用機器學習包括問題定義、數據準備、結果表達等步驟,它們與算法的測試和調整都能夠并應該實現自動化。
在現代軟件開發(fā)的編譯、測試和部署中,自動化操作占有重要地位。對數據準備、算法測試調試、結果的表達編寫自動腳本可以在準確性和改進速度方面獲得巨大的優(yōu)勢。在專業(yè)軟件開發(fā)課程中學習的知識要牢記于心并不斷應用。
可能很多學習機器學習的程序員看的書、上的課對于這一領域的應用本質關注不多,導致很多人入門階段沒有使用自動化手段。實際上,將自動化技術應用到實用機器學習的方方面面會是程序員的巨大機遇。
4.對常見問題重復求解
你正要實現的算法,或是與你正在求解的問題相似的問題,可能早有千百人解決了,就利用他們的經驗吧。
解決機器學習問題的知識非常多,當然它們可能都在書本或學術出版物中,但你可以訪問它們。做好你的功課,在谷歌谷歌圖書谷歌學術上搜索,還可以去機器學習的網絡社區(qū)。
如果你正要實現一個算法:
- 必須實現它嗎?可不可以在某個庫或工具中找到開源的實現復用呢?
- 你的實現必須從頭做起嗎?可不可以對現有的開源實現進行代碼審查,從中學習或是移植呢?
- 你必須對標準算法描述編碼嗎?在其它書論文或是帖子中沒有別的算法描述可供代碼審查及借鑒呢?
如果你正要求解某個問題:
- 你必須測試針對這個問題的所有算法嗎?這一問題或是同一大類相似問題有沒有研究成果顯示一些算法或算法類表現良好可供利用?
- 你必須自己搜集數據嗎?有沒有公開的數據集或是API你可以直接使用或是作為你問題的替代,以快速弄清哪種方法可以有良好表現?
- 你必須優(yōu)化算法的參數嗎?在對算法的研究和論文中有沒有可用的啟發(fā)式方法來配置算法呢?
如果你在編程函數庫或是特定某一數據結構方面遇到問題,你會選擇什么策略,在機器學習領域就用相同的策略吧。參與網絡社區(qū)并尋求可供利用的資源,可以加速你的學習和項目開發(fā)進程。入門階段可以考慮論壇和問答網站,之后可以與學者和專家聯系。
5.忽視數學
起步階段你并不需要數學理論,但是數學在機器學習中地位重要。因為它能提供最有效、最清晰的方法描述問題及系統(tǒng)的行為。
忽略算法中的數學方法會導致諸多問題,如對某一方法理解有限或是對算法編碼時受到限制。舉個例子,很多機器學習算法的核心優(yōu)化是增量式的演進。如果你能明白優(yōu)化的本質(凸函數),你就能利用這些知識來使用高效的優(yōu)化算法。
將算法的數學方法內化于心過程緩慢,但你的功力卻也隨之提升。特別是如果你要從零開始實現高級算法,包括算法的內部優(yōu)化,多多花時間從數學角度來理解算法吧。
總結
你從本帖學到了程序員在機器學習的入門階段容易犯的5個錯誤。5個教訓是:
- 別把機器學習看得高不可攀
- 別寫機器學習的代碼
- 別手動搞定一切
- 別對常見問題重復求解
- 別忽視數學
原文鏈接: machine learning mastery 翻譯: 伯樂在線 - toolate