全文共3753字,預計學習時長7分鐘
圖源山姆·伯克(Sam Bourke)
在自學機器學習時,經常有人問:我該從哪學起?我需要達到怎樣的數學水平呢?我學過Python了,那接下來我該做什麼呢?
本文將對這些問題進行解答,你可以把這篇文章當作是能幫助你從編碼小白逆襲為機器學習專業人才的大致框架。
編碼第一。先讓編碼執行起來,再去學習需要用到的理論、數學、統計學或是概率問題的知識,而無需在編碼執行前就弄懂這些。
要記住,開始學習機器學習後,你可能會感到很洩氣,因為機器學習涉及的知識十分廣泛,要慢慢來。
學習其他軟體也可以,但以下步驟是針對Python的。
學習Python用法、資料科學工具用法以及機器學習概念
你需要花幾個月的時間同時學習Python程式碼和各種機器學習概念,這二者都會用到的。
學習Python程式碼時,也要練習使用資料科學工具,如Jupyter和Anaconda。花幾個小時研究研究,弄懂它們是做什麼的、以及為什麼要用這些工具。
學習資源
1.《AI元素》 — 概述了人工智慧與機器學習的主要概念。
2.Coursera的《大家的Python》課程— 從頭開始學習Python。
3.freeCodeCamp的《學習Python》 — 該網站會將Python所有主要的概念彙總到一個視訊當中。
4.科裡·謝佛(Corey Schafer)的《Anaconda教程》 — 這是一個可以學習Anaconda的視訊,要想學習資料科學和機器學習,你需要利用Anaconda設定好你的電腦。
5.Dataquest的《Jupyter Notebook初學者教程》 —閱讀文章,上手使用Jupyter Notebook。
6.科裡·謝佛(Corey Schafer)的《Jupyter Notebook教程 》— 一個教你如何使用Jupyter Notebook的視訊教程。
利用Pandas、NumPy和Matplotlib學習資料分析、操作與視覺化技術
一旦掌握了一些Python的使用技能,就會想去學習處理資料與操作資料的方法。
在此之前,應該先熟悉一下Pandas、NumPy和Matplotlib的使用方法。
Pandas可以處理資料幀,資料幀類似於Excel檔案當中的資訊表,有橫行和縱列。這種資料就是所謂的結構化資料。
Numpy可以基於資料進行數值運算,機器學習可以把能想象到的一切事物轉化為數字,再建立出這些數字中的模型。
Matplotlib可以製圖,實現資料視覺化。對人們來說理解表格中的一堆資料可能很難,大家會更喜歡看那種有線條貫穿始終的圖表。實現資料視覺化是交流成果的重要環節。
學習資源
1.Coursera的《Python應用資料科學》— 針對資料科學開始調整你的Python技能。
2.《10分鐘速學Pandas》— 快速瀏覽Pandas資料庫和一些Pandas最實用的功能。
3.Codebasics的《Python Pandas教程》 — Youtube系列視訊,內容涵蓋所有主要的Pandas功能。
4.freeCodeCamp 的《NumPy 教程》 — Youtube上一個可以學習Numpy的視訊。
5.Sentdex的《Matplotlib教程》—Youtube系列視訊,教授Matplotlib所有最實用的功能。
利用scikit-learn 進行機器學習
學會資料操作與資料視覺化方面的技能後,是時候學習建模了。
Scikit-learn是Python資料庫,自帶了很多有用的機器學習演算法,以便使用。
它還有許多其他實用功能,用以辨別機器學習演算法被學習得有多好。
要重點關注各種機器學習問題,例如分類問題與迴歸問題,還要學習這些問題對應的最佳演算法是什麼。每個演算法無需從頭學起,要首先學會如何應用它們。
學習資源
1.Data School 的《利用scikit-learn在Python中完成機器學習》 —Youtube視訊專輯,教授scikit-learn的所有主要功能。
2.丹尼爾·伯克(Daniel Bourke)撰寫的《探索性資料分析簡介》— 該專案彙總了完成上述前兩步所需的知識,同時配以程式碼和視訊,這些材料可以幫助準備首場Kaggle競賽。
3.丹尼爾·福尼莫索(Daniel Formosso)的“藉助scikit-learn進行探索性資料分析”的筆記— 該材料從更深入的視角講述上述學習資源所涵蓋的技能與知識,在此基礎上,設定了完整的機器學習專案。
了解深度學習的神經網路
在處理結構化不強的資料時,深度學習與神經網路是最佳的選擇。
資料幀是有結構的,影象、視訊、音訊檔案以及自然語言文字也有結構,但不如資料幀那麼結構化。
貼士:大多數情況下,在處理結構化資料時,你會採用各種決策樹的組合體(隨機森林或是像XGBoost這樣的演算法),而面對非結構化資料,你可能會採用深度學習或遷移學習的方法(這種方法就是設定一個預先訓練好的神經網路,並用它來解決你的問題)。
你可以從這種小貼士開始給自己整理筆記,同時在實際操作過程中不斷地積累歸納。
學習資源
1.Coursera上由吳恩達(Andrew Ng)建立的deeplearning.ai— 由業界最優秀的人士來為你講解深度學習。
2.由傑瑞米·霍華德(Jeremy Howard)設計的fast.ai 深度學習課程 — 由行業最優秀的從業者用實操法為你講解深度學習。
課外班與課外書籍
在學習的過程中,如果能用自己設計的小專案來練習所學的知識,就非常理想了。這些專案無需過於複雜,也不需要有多大的變革性,你只要能說出“這個專案是我用某某技能或知識做出來的”就可以了,然後再在Github或部落格上分享作品。Github用來展示編寫的程式碼,部落格文章用來展示如何與他人交流你的作品。你的目標應該是,每完成一個專案,就要在Github或部落格二者之一上釋出作品。
在應聘工作時最好是有要求的相關經驗,而分享作品就是向你潛在的未來僱主展示自身能力的一個絕佳途徑。
熟悉了一些機器學習和深度學習不同框架的操作方法後,你就可以嘗試著從頭開始編寫這些框架,用這種方式來鞏固所學知識。雖說不一定要在編寫程式碼或是進行機器學習的時候做這些,但了解框架內部的運作方式可以幫助你更好地設計自己的作品。
學習資源
1.丹尼爾·伯克(Daniel Bourke)的《如何開展自己的機器學習專案》 — 開展之初也許會很難,這篇文章可以為你提供一些建議。
2.傑瑞米·霍華德(Jeremy Howard)設計的fast.ai深度學習基礎知識課程— 如果你已經自上而下地了解過深度學習了,那麼這個課程可以幫助你從下至上地填補你的知識漏洞。
3.安德魯·特拉斯克(Andrew Trask)的《理解深度學習》— 這本書可以教會你如何從頭開始建立神經網路,並且會講解為什麼你需要了解這個知識。
4.丹尼爾·伯克(Daniel Bourke)的《這些書可以幫你學習機器學習》 — Youtube視訊,介紹了一些機器學習方面最好的書籍。
每個步驟需要花費多久的時間?
你可以在每個步驟上花費六個月甚至更多的時間,不要急功近利。學習新事物是需要時間的。作為一個數據科學家或是機器學習工程師,要培養的主要技能是如何針對資料提出好問題,然後嘗試藉助工具找出答案。
有時候你可能會感覺自己什麼都沒學到,甚至還退步了。忽視這種想法吧,不要每天都比較你的進展,要以年為單位看是否進步。
可以從哪裡學到這些技能?
在上文中我列出了一些資源,這些都可以從網上找到,而且大多數都是免費的,但除了提到的這些還有非常多其他的資源。
DataCamp 就是個不錯的平臺,可以從中找到大部分資源。除此之外,我編寫的機器學習與人工智慧資源資料庫也有許多免費或付費的學習資料。
要記住,解決問題是資料科學家或機器學習工程師的一部分職責。把第一項任務當作探索更多步驟資訊的開端,建立屬於自己的課程規劃,以便更好地學習。
如果想了解機器學習的自我主導型課程是什麼樣子的,可以了解一下我的自創AI碩士生課程,這是我歷經九個月的時間從一個編碼小白逆襲為一名機器學習工程師期間學習的課程。雖然這個課程並不完美,但它是我自創的,這也是為什麼我會得益於此。
對統計學、數學和概率學都有什麼要求呢?
在學習過程中會學到這幾方面的知識,但還是要從編碼學起,因為要想在編碼前學透統計學、數學或是概率學是完全不可能的事,這會讓你退縮不前。
要考什麼資格證書嗎?
有證書是好事,但是你的目的不是要拿證書,而是掌握一些技能。不要認為證書越多掌握的技能就越多。
通過類似上述的課程或學習資源學好基礎知識,然後再利用你自己的專案去學習某些特定的知識(這裡指那些別人教不了的知識)。
我們一起分享AI學習與發展的乾貨