天天看點

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

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

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

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

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

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

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

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

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

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

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

學習資源

人工智能要素 (

https://www.elementsofai.com/)

—人工智能和機器學習主要概念概述。

Coursera 上的 Python 教程—(

https://bit.ly/pythoneverybodycoursera)

從頭學習 Python。

通過 freeCodeCamp 學習 Python (

https://youtu.be/rfscVS0vtbw)

—一個視訊涵蓋了 Python 所有主要概念。

Corey Schafer 的 Anaconda 教程 (

https://youtu.be/YJC6ldI3hWk)

—一個視訊學會 Anaconda(資料科學和機器學習需要的配置環境)。

Dataquest 的新手 Jupyter Notebook 教程 (

https://www.dataquest.io/blog/jupyter-notebook-tutorial/)

—一篇文章學會啟動和運作 Jupyter Notebook。

Corey Schafer 的 Jupyter Note 教程 (

https://www.youtube.com/watch?v=HW29067qVWk)

—一個視訊學會使用 Jupyter Notebook。

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

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

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

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

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

Cousera 上的 Python 應用資料科學 (

http://bit.ly/courseraDS)

—開始打磨資料科學方向的 Python 技能。

10 分鐘入門 pandas (

https://pandas.pydata.org/pandas-docs/stable/gettingstarted/10min.html)

—快速概覽 pandas 庫及其部分最有用的函數。

Codebasics 的 Python pandas 教程 (

https://youtu.be/CmorAWRsCAw)

—該 YouTube 系列介紹了 pandas 的所有主要功能。

freeCodeCamp 的 NumPy 教程 (

https://youtu.be/QUT1VHiLmmI)

—一個 YouTube 視訊學會 NumPy。

Sentdex 的 Matplotlib 教程 (

https://www.youtube.com/watch?v=q7Bo_J8x_dw&list=PLQVvvaa0QuDfefDfXb9Yf0la1fPDKluPF)

—YouTube 系列助你學會 Matplotlib 所有最有用的功能。

借助 scikit-learn 學習機器學習

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

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

Data School 的基于 scikit-learn 的 Python 機器學習 (

https://www.youtube.com/watch?v=elojMnjn4kk&list=PL5-da3qGB5ICeMbQuqbbCOQWcS6OYBr5A)

—一個 YouTube 播放清單教你 scikit-learn 的所有主要函數。

Daniel Bourke 對探索性資料分析的簡要介紹 (

https://towardsdatascience.com/a-gentle-introduction-to-exploratory-data-analysis-f11d843b8184)

—把你在上述兩個步驟中學到的知識融合在一個項目中。提供代碼和視訊,助你開始第一個 Kaggle 競賽。

Daniel Formosso 的基于 scikit-learn 的探索性資料分析筆記 (

https://github.com/dformoso/sklearn-classification)

—以上資源的更深入版本,附帶了一個實踐上述内容的端到端項目。

學習深度學習神經網絡

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

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

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

Cousera 上 Andrew Ng 的 deeplearning.ai (

https://bit.ly/courseradl)

(

—商業上最成功的從業者之一講授的深度學習課程。

Jeremy Howard 的 fast.ai 深度學習課程 (

https://course.fast.ai/)

—工業界最好的實踐者之一講授的深度學習實際操作方法。

其他課程和書籍

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

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

Daniel Bourke 的如何開始你自己的機器學習工程 (

https://towardsdatascience.com/how-to-start-your-own-machine-learning-projects-4872a41e4e9c)

—開始你自己的工程可能會很難,這篇文章可以給你一些指引。

Jeremy Howard 的 fast.ai 深度學習基礎 (

https://course.fast.ai/part2)

—自上而下學習後,本課程将幫助你從下往上填補空白。

Andrew Trask 的 Grokking Deep Learning (

https://amzn.to/2H497My)

—這本書将教你如何從頭開始建構神經網絡,以及為什麼你應該知道如何建構。

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 個月内從零編碼變成機器學習工程師的過程。它不是完美的,但是我的真實經曆,是以你可以試試。

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

實踐過程中你會學到這些東西的。先從代碼開始。把代碼運作起來。在運作代碼之前,嘗試學習所有的統計、數學、機率知識,就像是在試圖煮沸大海。它會讓你退縮。如果代碼不運作,統計、數學和機率都不重要。先運作起來,然後用你的研究技巧來驗證它是否正确。

證書?

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

參考連結:

https://towardsdatascience.com/5-beginner-friendly-steps-to-learn-machine-learning-and-data-science-with-python-bf69e211ade5