五個給機器學習和資料科學入門者的學習建議

機器之心發表於2019-09-17

都說做一件事情最好的時機就是「現在」,但是從何開始往往會難倒一大批人,更不用說是想要入門資料科學和機器學習的朋友了。本文是一篇科普掃盲文章,作者以初學者的視角,為同樣想「入坑」的讀者們提供了一些建議,還有一些可以獲得的學習資源。

選自towardsdatascience,作者:Daniel Bourke,機器之心編譯,參與:韓放、一鳴。

「我想學習機器學習和人工智慧,該從哪開始呢?」

從這裡開始。

五個給機器學習和資料科學入門者的學習建議

兩年前,我開始在網上自學機器學習,並且通過 YouTube 和部落格分享了我的學習過程。我並不知道我在做什麼,在決定開始學習機器學習之前我從沒寫過程式碼。

當人們發現我的作品,他們通常會私信並提問。我不一定知道所有的答案,但我會盡量回復。人們最常問的問題是:「該從哪開始?」,其次是:「我需要多少數學基礎?」
今天早上我就回答了一堆這樣的問題。

有人告訴我他已經開始學習 Python 並打算學習機器學習了,但不知道下一步該做什麼。

「我已經學習了 Python,下一步該做什麼?」

我回復了一系列學習的步驟,並且複製到了這裡。如果你想成為一個機器學習從業者,卻不知道怎麼寫程式碼的話,可以把本文當作一個大綱。我的學習風格是程式碼優先:先把程式碼執行起來,再根據需要學習理論、數學、統計以及概率等方面的東西,而不是一開始就學理論。

記住,開始學習機器學習你會面臨很多阻礙。別急,慢慢來。把這篇文章新增到收藏夾,以便隨時參考。

我傾向於使用 Python,因為我是從 Python 開始的,並且一直在持續使用它。你也可以用其他語言,但本文的所有步驟都是基於 Python 的。

學習 Python、資料科學工具和機器學習概念

問我問題的那些郵件作者們說他們已經學了一些 Python。但這一步也同樣適用於新手。花幾個月的時間學習 Python 程式設計和不同的機器學習概念。這兩部分知識你都會需要。

在學習 Python 程式設計的同時,練習使用 Jupyter 和 Anaconda 等資料科學工具。花幾個小時來研究一下,它們是用來做什麼的以及為什麼要使用它們。

學習資源

  1. 人工智慧要素 (https://www.elementsofai.com/)—人工智慧和機器學習主要概念概述。

  2. Coursera 上的 Python 教程—(https://bit.ly/pythoneverybodycoursera) 從頭學習 Python。

  3. 通過 freeCodeCamp 學習 Python (https://youtu.be/rfscVS0vtbw)—一個視訊涵蓋了 Python 所有主要概念。

  4. Corey Schafer 的 Anaconda 教程 (https://youtu.be/YJC6ldI3hWk)—一個視訊學會 Anaconda(資料科學和機器學習需要的配置環境)。

  5. Dataquest 的新手 Jupyter Notebook 教程 (https://www.dataquest.io/blog/jupyter-notebook-tutorial/)—一篇文章學會啟動和執行 Jupyter Notebook。

  6. Corey Schafer 的 Jupyter Note 教程 (https://www.youtube.com/watch?v=HW29067qVWk)—一個視訊學會使用 Jupyter Notebook。

學習通過 Pandas、Numpy 和 Matplotlib 進行資料分析、操作和視覺化

一旦你已經掌握了一些 Python 技巧,就會開始想要學習如何處理和運算元據,為了實現這一目的,你需要熟悉 Pandas、Numpy 和 Matplotlib。

  • Pandas 可以幫助你處理二維資料,類似 Excel 檔案裡的資訊表,包含行和列。這類資料被稱為結構化資料。

  • Numpy 可以幫助你進行數值計算。機器學習把你能想到的所有東西都轉化成數字,進而在這些數字中尋找模式。

  • Matplotlib 可以幫助你繪製圖形和視覺化資料。理解表格中的一堆數字對人類來說可能很困難。我們更喜歡看到有一條線穿過的圖。視覺化可以更好得傳達你的發現。

學習資源

  1. Cousera 上的 Python 應用資料科學 (http://bit.ly/courseraDS)—開始打磨資料科學方向的 Python 技能。

  2. 10 分鐘入門 pandas (https://pandas.pydata.org/pandas-docs/stable/gettingstarted/10min.html)—快速概覽 pandas 庫及其部分最有用的函式。

  3. Codebasics 的 Python pandas 教程 (https://youtu.be/CmorAWRsCAw)—該 YouTube 系列介紹了 pandas 的所有主要功能。

  4. freeCodeCamp 的 NumPy 教程 (https://youtu.be/QUT1VHiLmmI)—一個 YouTube 視訊學會 NumPy。

  5. Sentdex 的 Matplotlib 教程 (https://www.youtube.com/watch?v=q7Bo_J8x_dw&list=PLQVvvaa0QuDfefDfXb9Yf0la1fPDKluPF)—YouTube 系列助你學會 Matplotlib 所有最有用的功能。

藉助 scikit-learn 學習機器學習


現在你已經掌握了操作和視覺化資料的技能,是時候學習在資料中尋找模式了。scikit-learn 是一個 Python 庫,它內建了許多有用的機器學習演算法供你使用,它還提供了許多其他有用的函式來探究學習演算法的學習效果。

重點在於學習都有什麼樣的機器學習問題,比如分類和迴歸,什麼樣的演算法最適合解決這些問題。現在還不需要從頭開始理解每個演算法,先學習如何應用它們。

學習資源

  1. Data School 的基於 scikit-learn 的 Python 機器學習 (https://www.youtube.com/watch?v=elojMnjn4kk&list=PL5-da3qGB5ICeMbQuqbbCOQWcS6OYBr5A)—一個 YouTube 播放列表教你 scikit-learn 的所有主要函式。

  2. Daniel Bourke 對探索性資料分析的簡要介紹 (https://towardsdatascience.com/a-gentle-introduction-to-exploratory-data-analysis-f11d843b8184)—把你在上述兩個步驟中學到的知識融合在一個專案中。提供程式碼和視訊,助你開始第一個 Kaggle 競賽。

  3. Daniel Formosso 的基於 scikit-learn 的探索性資料分析筆記 (https://github.com/dformoso/sklearn-classification)—以上資源的更深入版本,附帶了一個實踐上述內容的端到端專案。

學習深度學習神經網路

深度學習和神經網路在沒有太多結構的資料上最有效。二維資料雖然有結構,影像、視訊、音訊檔案和自然語言文字也有,但不會太多。

小貼士:在大多數情況下,你會想對結構化資料使用一組決策樹(隨機森林或 XGBoost 之類的演算法),而對於非結構化資料,你會想使用深度學習或遷移學習(使用預先訓練的神經網路並將其用於你的問題)。

你可以開始把這樣的小貼士用一張便條記錄,然後邊學習邊收集這些資訊。

學習資源

  1. Cousera 上 Andrew Ng 的 deeplearning.ai (https://bit.ly/courseradl) (https://bit.ly/courseradl)—商業上最成功的從業者之一講授的深度學習課程。

  2. Jeremy Howard 的 fast.ai 深度學習課程 (https://course.fast.ai/) (https://bit.ly/courseradl)—工業界最好的實踐者之一講授的深度學習實際操作方法。

其他課程和書籍

在學習過程中,最理想的情況是你可以用自己的小專案來練習所學的東西。這不必是複雜的,需要改變世界的事情,但你可以說「我用 X 做了這個」。然後通過 github 或部落格分享你的工作。github 用於展示你的程式碼,部落格文章用於展示你如何表達自己所做的工作。你應該為每個專案都發布一下這些內容。申請一份工作的最好方法是你已經做完了工作要求做的事情。分享你的工作是向未來的潛在僱主展示你能力的好方法。

在你熟悉瞭如何使用不同的機器學習和深度學習框架之後,你可以嘗試通過從頭開始構建它們來鞏固你的知識。你不必總是在生產或從事機器學習時這樣做,但是從內部瞭解事情是如何工作的將有助於你建立自己的工作。

學習資源

  1. Daniel Bourke 的如何開始你自己的機器學習工程 (https://towardsdatascience.com/how-to-start-your-own-machine-learning-projects-4872a41e4e9c)—開始你自己的工程可能會很難,這篇文章可以給你一些指引。

  2. Jeremy Howard 的 fast.ai 深度學習基礎 (https://course.fast.ai/part2)—自上而下學習後,本課程將幫助你從下往上填補空白。

  3. Andrew Trask 的 Grokking Deep Learning (https://amzn.to/2H497My)—這本書將教你如何從頭開始構建神經網路,以及為什麼你應該知道如何構建。

  4. Daniel Bourke 推薦的機器學習書籍 (https://www.youtube.com/watch?v=7R08MPXxiFQ)—該 YouTube 視訊整理了一些機器學習最佳書籍。

答疑

每一步需要多長時間?

你可能會花 6 個月或更長的時間。彆著急,學習新事物需要時間。作為一名資料科學家或機器學習工程師,你正在培養的主要技能是如何針對資料提出好的問題,然後使用你的工具來嘗試尋找答案。

有時候你會覺得自己什麼都沒學到。甚至倒退。忽略它。不要以天為單位來衡量,看看你一年後有什麼樣的進步。

我在哪裡可以學到這些技能?

我在上面列出了一些資源,它們都是線上的,而且大部分都是免費的,類似的資源還有很多。

DataCamp (http://bit.ly/datacampmrdbourke) 是一個很好學習網站。另外,我的 Machine Learning and Artificial Intelligence resources database (https://bit.ly/AIMLresources) 整理了免費和付費的學習資料。

記住,作為資料科學家或機器學習工程師,很大一部分工作是要解決問題。通過你的第一個作業探索這裡的每一個步驟,並建立你自己的課程來幫助學習。

如果你想知道一個自我引導的機器學習課程的例子是什麼樣子的,看看我的 Self-Created AI Masters Degree (https://bit.ly/aimastersdegree)。這是我在過去 9 個月內從零編碼變成機器學習工程師的過程。它不是完美的,但是我的真實經歷,因此你可以試試。

統計怎麼辦?數學怎麼辦?概率呢?

實踐過程中你會學到這些東西的。先從程式碼開始。把程式碼執行起來。在執行程式碼之前,嘗試學習所有的統計、數學、概率知識,就像是在試圖煮沸大海。它會讓你退縮。

如果程式碼不執行,統計、數學和概率都不重要。先執行起來,然後用你的研究技巧來驗證它是否正確。

證照?

證照很好,但你不是為了證照而學習,而是為了提高技能。不要和我犯同樣的錯誤,不要認為證照越多代表技能越多,並不是這樣的。通過上述課程和資源建立知識基礎,然後通過自己的專案完善專業知識(這些是課程無法傳授的知識)。

參考連結:towardsdatascience.com/5-beginner-…


相關文章