機器學習入門階段程序員易犯的5個錯誤

機器學習入門階段程序員易犯的5個錯誤
http://f.dataguru.cn/forum.php?mod=viewthread&tid=298490&fromuid=93742

1.將機器學習看得遙不可及

機器學習不過是另外一堆技術的集合,你能夠用它來解決複雜問題。這是一個飛速發展的領域,所以,機器學習的學術交流通常出如今學術期刊及研究生的課本里,讓它看起來遙不可及又難於理解。php

 
 

要想高效掌握機器學習,咱們須要轉變觀念,從技術轉到方法,由精確變爲「足夠好」,這也一樣適用於程序員感興趣的其它複雜技術。程序員

2.編寫機器學習程序代碼

由 編碼開始入門機器學習會很困難,由於你須要解決的問題從一個變成兩個:瞭解一項技術以便你實現它以及對於給定問題如何應用該項技術。一次解決一個 問題,並利用機器學習、統計分析環境以及算法庫來學習如何將一項技術應用於某一問題,這樣就會容易不少。這能讓你對於若干算法進行相對快速的抽查和調整, 而無需花上大量時間閱讀研究論文中含糊的算法描述再將其編碼。算法

 
 

實現一個算法能夠做爲一個單獨的項目晚些再完成,好比做爲一個練習或是等到原型系統須要投入運行時。一時只學一事,我建議從有GUI的機器學習框架開始入門,不論你是否是程序員。編程

3.手動搞定工做

實用機器學習包括問題定義、數據準備、結果表達等步驟,它們與算法的測試和調整都可以並應該實現自動化。網絡

 
 

在現代軟件開發的編譯、測試和部署中,自動化操做佔有重要地位。對數據準備、算法測試調試、結果的表達編寫自動腳本能夠在準確性和改進速度方面得到巨大的優點。在專業軟件開發課程中學習的知識要牢記於心並不斷應用。數據結構

 
 

可能不少學習機器學習的程序員看的書、上的課對於這一領域的應用本質關注很少,致使不少人入門階段沒有使用自動化手段。實際上,將自動化技術應用到實用機器學習的方方面面會是程序員的巨大機遇。框架

4.對常見問題重複求解

你正要實現的算法,或是與你正在求解的問題類似的問題,可能早有千百人解決了,就利用他們的經驗吧。機器學習

 
 

解決機器學習問題的知識很是多,固然它們可能都在書本或學術出版物中,但你能夠訪問它們。作好你的功課,在谷歌谷歌圖書谷歌學術上搜索,還能夠去機器學習的網絡社區。函數

 
 

若是你正要實現一個算法:工具

 
 
  • 必須實現它嗎?可不能夠在某個庫或工具中找到開源的實現複用呢?

  • 你的實現必須從頭作起嗎?可不能夠對現有的開源實現進行代碼審查,從中學習或是移植呢?

  • 你必須對標準算法描述編碼嗎?在其它書論文或是帖子中沒有別的算法描述可供代碼審查及借鑑呢?



 
 

若是你正要求解某個問題:

 
 
  • 你必須測試針對這個問題的全部算法嗎?這一問題或是同一大類類似問題有沒有研究成果顯示一些算法或算法類表現良好可供利用?

  • 你必須本身蒐集數據嗎?有沒有公開的數據集或是API你能夠直接使用或是做爲你問題的替代,以快速弄清哪一種方法能夠有良好表現?

  • 你必須優化算法的參數嗎?在對算法的研究和論文中有沒有可用的啓發式方法來配置算法呢?



 
 

若是你在編程函數庫或是特定某一數據結構方面遇到問題,你會選擇什麼策略,在機器學習領域就用相同的策略吧。參與網絡社區並尋求可供利用的資源,能夠加速你的學習和項目開發進程。入門階段能夠考慮論壇和問答網站,以後能夠與學者和專家聯繫。


5.忽視數學

起步階段你並不須要數學理論,可是數學在機器學習中地位重要。由於它能提供最有效、最清晰的方法描述問題及系統的行爲。

 
 

忽略算法中的數學方法會致使諸多問題,如對某一方法理解有限或是對算法編碼時受到限制。舉個例子,不少機器學習算法的核心優化是增量式的演進。若是你能明白優化的本質(凸函數),你就能利用這些知識來使用高效的優化算法。

 
 

將算法的數學方法內化於心過程緩慢,但你的功力卻也隨之提高。特別是若是你要從零開始實現高級算法,包括算法的內部優化,多多花時間從數學角度來理解算法吧。


總結

你從本帖學到了程序員在機器學習的入門階段容易犯的5個錯誤。5個教訓是:

 
 
    • 別把機器學習看得遙不可及

    • 別寫機器學習的代碼

    • 別手動搞定一切

    • 別對常見問題重複求解

    • 別忽視數學

相關文章
相關標籤/搜索