機器學習自學指南【轉】

來源:互聯網
上載者:User

標籤:blog   http   java   使用   strong   檔案   資料   2014   

事實上有許多的途徑可以瞭解機器學習,也有許多的資源例如書籍、公開課等可為所用,一些相關的比賽和工具也是你瞭解這個領域的好幫手。本文我將圍繞這個話題,給出一些總結性的認識,並為你由程式員到機器學習高手的蛻變旅程中提供一些學習指引。

機器學習的四個層次

根據能力可以將學習過程分成四個階段。這也是一個有助於我們將所有學習資源進行分類的好方法。

  1. 初學階段
  2. 新手階段
  3. 中級階段
  4. 進階階段

我之所以把初學階段和新手階段區分開來,是因為我想讓那些完全初學者(對這個領域感興趣的程式員)在初學階段對機器學習有一個大致的認識,以便決定是否繼續深入。

我們將分別探討這四個階段,並推薦一些能夠協助我們更好地理解機器學習和提高相關技能的資源。對學習階段進行這樣的分類只是我個人的建議,也許每個分類的前後階段中也有一些適合當前階段的資源。

我認為對機器學習有一個整體性的認識是非常有協助的,我也希望能聽聽你們的想法,通過在下面評論告訴我吧!

初學階段

初學者是指那些對機器學習感興趣的程式員。他們或許已經接觸過一些相關的書籍、wiki網頁,或者是已經上過幾節機器學習課程,但是他們並沒有真正地瞭解機器學習。他們在學習過程感到沮喪是因為他們得到的建議往往是針對中級或進階階段的。

初學者需要的是一個感性的認識而不是純粹的代碼、教科書、課程。他們首先需要對機器學習有一個是什麼、為什麼、怎麼做的認識以此為接下來的階段學習奠定基礎。

  • 入門書籍:閱讀一些為程式員而寫的資料採礦與機器學習的入門書籍,例如《機器學習:實用案例解析 》、《集體智慧編程》、《資料採礦:實用機器學習工具和技術》,這些都是很好的入門書籍,推薦一篇進一步討論這個話題的文章:《機器學習的最佳入門學習資源》
  • 相關概述視頻:也可以看一些科普性質的機器學習演講。例如: 《採訪Tom Mitchel》、《Peter Norvig 在Facebook的大資料演講》
  • 與人交談:與機器學習領域的老手交流,問問他們是如何入門的,有什麼資源值得推薦,是什麼讓他們對機器學習如此狂熱。
  • 機器學習課程101:我總結了一些關於入門的觀點,《為初學者準備的機器學習課程101》,如果你喜歡可以看一看。
新手階段

新手是指那些已經對機器學習有一定瞭解的人,他們已經閱讀過一些專業書籍或者是接受過完整地課程學習,並且對這個東西有很大的興趣想做更深入的瞭解,想通過進一步學習去解決他們所面臨的問題。

下面是給新手的一些資料或者建議:

  • 完成一門課程:完整地學習一門機器學習的課程,例如斯坦福大學的機器學習課程。多做課程筆記,儘可能地完成課程作業,多問問題。
  • 閱讀一些書籍:這裡指的不是教科書,而是為上面所列舉的為程式員初學者所準備的書籍。
  • 掌握一門工具:學會使用一門分析工具或者類庫,例如python的機器學習包Scikit-Learn、java的機器學習包WEKA、R語言或者其他類似的。具體地說,學習如何使用你在課程或書本上學來的演算法,看看它們處理問題的實際效果。
  • 寫一寫代碼:動手實現一些簡單的演算法,例如感知機、K近鄰、線性迴歸。試圖寫一些小程式去闡述你對這些演算法的理解。
  • 學習相關教程:完整地跟一門教程,為你所完成的小項目建立一個檔案夾,其中包含資料集、指令碼代碼等,以便你可以隨時回顧並有所收穫。
中級階段

在新手階段已經閱讀過一些專業書籍並完成了一些專業課程,這些人已經懂得如何使用機器學習相關的工具,並且也已經為實現機器學習演算法和完成一些教程寫過不少的代碼了。中級階段其實是一個自我突破的過程,可以通過建立自己的項目去探索新的技巧並在社區的交流互動中擷取更多的知識。

中級階段的目標是學習如何?並使用準確、合適、健壯機器學習演算法。同樣,他們也在資料預先處理、資料清洗、歸納總結上花了不少時間,並思考這些資料能解決什麼問題。

下面是給中級學習者的一些資料或者建議:

  • 建立自己的小項目:自己設計小型的編程項目或者是應用機器學習演算法解決問題的小實驗。這就像是為探索你自己所感興趣的技術而設計一些教程。你可以自己實現一個演算法或者是提供一些實現這些演算法類庫的連結。
  • 資料分析:習慣於從資料集中探索並總結。知道什麼時候該用什麼工具,擷取用於探索、學習相關技術的資料。
  • 閱讀教科書:閱讀並消化機器學習相關的教科書。這可能對理解用數學方式描述相關技術的能力有一定的要求,並且需要瞭解用公式的方式去對描述問題和演算法。
  • 編寫你自己的工具:為開源的Machine Learning Platform for AI或類庫編寫外掛程式和相關的程式包。這是學習如何?健壯的、能用於生產環境下的演算法的一個很好的鍛煉機會。將你的程式包運用到項目中,將代碼提交給社區進行代碼審核,如果可能的話,努力將你的程式發布到開源的平台上,從大家的反饋中進一步學習。
  • 競賽:參加與機器學習有關的比賽,比如與機器學習會議有關的,或者是提供像Kaggle這樣的平台的比賽。參與討論、提問題,學習其他參賽者是如何解決問題的。將這些項目、方法和代碼添加到你的項目庫中。
進階階段

機器學習的進階玩家是那些已經整理過大量機器學習演算法或者是自己獨立實現演算法的人。他們或許參加過機器學習的競賽又或許寫過機器學習的程式包。他們已經閱讀過許多書籍、學習過許多相關課程,對這一領域有較充分的認識,同時對自己研究的幾個關鍵技術有很深入的瞭解。

這些進階使用者平時負責生產環境下的機器學習系統的建立、部署和維護。他們能時刻緊跟這個行業的最新動向,通過自己或他人的一線開發經驗發現並瞭解每一種機器學習技術的細微差距。

下面是給進階階段學習者的一些資料:

  • 定製開發演算法:根據業務需求定製開發演算法,實現會議、期刊論文中關於某個相似問題的演算法。
  • 自己設計演算法:設計全新的演算法去解決工作中 遇到的問題,這樣做的目的更多的是為工作中所面臨的困難找到最佳的解決方案,而不是進行該領域的前沿研究。
  • 案例學習:閱讀甚至是重新設計機器學習競賽或者是其他參賽者所提供的實際案例。這些一直在談“我是如何做到”的論文或文章中總是塞滿了關於資料準備、工程實踐以及使用技術的微妙技巧。
  • 方法論:總結處理問題的過程並系統化,可以正式地分享出來也可以僅僅是作為個人總結。他們總有一套自己解決問題的思路並且不斷地提煉和改進處理過程,試圖用更好的技術來或得最佳實務。
  • 學術研究:參加學術會議,閱讀研究論文和學術專著,與機器學習領域的專家交流學習。他們會記錄工作中所積累的經驗發布到相關的期刊或者自己部落格上,然後回到工作崗位繼續研究。

知識在不斷地收穫,但學習永無止境。在機器學習的征途中遇到問題時你可以隨時停住腳步自己鑽研問題自行解決,或者繞道而行查閱資料借用群體智慧,事實上,我希望繞道而行成為一種常態。

這樣的學習階段劃分是以程式員的角度來規劃的,這可以作為技術人員實現從入門到精通的一條線性學習路線。我很樂意收到對於這篇文章的批評建議,這樣可以使文章變得更好。在特定的學習階段你可以得到更多的學習資源,因為針對每個階段所推薦的學習資源也僅僅是我個人的建議。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.