不交學費也能成為數(shù)據(jù)科學家,這里有一條免費學習路徑
作者:Rebecca Vickery
機器之心編譯
參與:魔王
如何通過免費方式學習數(shù)據(jù)科學?數(shù)據(jù)科學家 Rebecca Vickery 從技術(shù)能力、理論和實踐經(jīng)驗三個方面入手介紹了自己的經(jīng)驗。 在傳統(tǒng)教育機構(gòu)中讀碩士學位的平均成本差不多在 3 萬到 12 萬美元之間。在線數(shù)據(jù)科學學位課程也不便宜,最低成本為 9000 美元。如果你想學數(shù)據(jù)科學,但支付不起這筆費用,應(yīng)該怎么辦呢? 我在成為數(shù)據(jù)科學家之前沒有經(jīng)歷過任何正式的專業(yè)教育。本文將分享我的個人課程表,無需支付數(shù)千美元也能學習數(shù)據(jù)科學。 該課程包含 3 個主要部分:技術(shù)能力、理論和實踐經(jīng)驗。文中包含該學習路徑中每個元素的免費資源鏈接,以及一些「低成本」資源的鏈接。如果你想花一點錢加速學習過程,你可以把這些資源添加到課程中。本文會說明每項資源的預計成本。 本課程的第一部分為技術(shù)能力。推薦大家先學習這部分內(nèi)容,這樣你就可以采取實踐優(yōu)先的學習方式,而不是以數(shù)學理論為先。目前,Python 是數(shù)據(jù)科學領(lǐng)域使用最廣泛的編程語言。根據(jù) Kaggle 2018 機器學習及數(shù)據(jù)科學調(diào)查報告,83% 的受訪者在日常工作中使用 Python。因此,我推薦大家學習 Python 語言,同時也推薦大家花一點時間學習其他語言,比如 R 語言。 使用 Python 執(zhí)行數(shù)據(jù)科學任務(wù)之前,你需要先掌握 Python 背后的基礎(chǔ)知識。你需要一門 Python 入門課程。網(wǎng)上有很多免費教程,我最喜歡的是 Codeacademy 的教程,因為它們允許在瀏覽器內(nèi)進行動手編程實踐。 我推薦大家學習這個 Python 入門課程,該課程涵蓋 Python 基礎(chǔ)語法、函數(shù)、控制流、循環(huán)、模塊和類。 課程地址:https://www.codecademy.com/learn/learn-python 接下來,你需要充分了解如何使用 Python 做數(shù)據(jù)分析,這方面有很多不錯的資源。 首先,我推薦大家至少學完 dataquest.io 上數(shù)據(jù)分析師學習路徑的免費部分。Dataquest 提供完整的數(shù)據(jù)分析師、數(shù)據(jù)科學家和數(shù)據(jù)工程師學習路徑。其中大量內(nèi)容,尤其是數(shù)據(jù)分析師學習路徑的內(nèi)容可以免費獲取。如果你資金充足,我強烈建議你付費訂閱并學習這些內(nèi)容。我學了這個課程,從中了解到數(shù)據(jù)科學的基礎(chǔ)知識。數(shù)據(jù)科學家路徑課程花費了我 6 個月時間。每個月的價格從 24.5 美元到 49 美元不等,這取決于你是否購買年費會員。資金充足的話,購買年費會員更劃算(https://www.dataquest.io/subscribe/)。
Dataquest 平臺(https://app.dataquest.io/dashboard) 如果你已經(jīng)學完了 Dataquest 上的數(shù)據(jù)科學課程,那么你應(yīng)該對使用 Python 執(zhí)行機器學習的基礎(chǔ)知識有了充分了解。如果還沒有,這方面也有很多免費資源。我推薦首先從 scikit-learn 開始學起,因為 scikit-learn 是目前最常用的機器學習 Python 庫。 我很幸運,在學習過程中參加了 scikit-learn 核心開發(fā)者之一 Andreas Mueller 舉辦的為期兩天的 workshop。他發(fā)布了該課程的所有材料,包含幻燈片、課程筆記和 notebook。推薦大家先學習這份資料。 課程資料地址:https://github.com/amueller 接下來,我推薦大家學習 scikit-learn 官方文檔中的一些教程。之后,大家就可以構(gòu)建一些實際機器學習應(yīng)用,學習模型運行背后的理論了。 scikit-learn 文檔地址:https://scikit-learn.org/stable/tutorial/basic/tutorial.html 想成為數(shù)據(jù)科學家,SQL 是必不可少的一項技能,因為抽取數(shù)據(jù)是數(shù)據(jù)建模的基礎(chǔ)流程之一。這通常需要對數(shù)據(jù)庫運行 SQL query。如果你沒有學完上述 Dataquest 數(shù)據(jù)科學課程,那么這里有一些免費資源可供選擇。 Codeacamdemy 有一門 SQL 入門課程,這門課實踐性很強,學習過程中你可以在瀏覽器內(nèi)進行編程。 課程地址:https://www.codecademy.com/learn/learn-sql 如果你還想了解基于云的數(shù)據(jù)庫查詢,那么 Google Cloud BigQuery 是不錯的選擇。它有免費試用方案,你可以免費嘗試 query、大量公共數(shù)據(jù)集,以及閱讀官方文檔(https://cloud.google.com/bigquery/docs/tutorials)。
要想成為全面的數(shù)據(jù)科學家,只學 Python 還不夠。我推薦大家學習一門 R 語言入門課程。Codeacademy 就有一門免費入門課程。 課程地址:https://www.codecademy.com/learn/learn-r。 值得注意的是,Codeacademy 的 pro 版本也提供完整的數(shù)據(jù)科學學習計劃(升級 pro 賬戶需要每月支付 31.99 到 15.99 美元不等,具體費用取決于預先支付多少個月)。我個人覺得 Dataquest 的課程更加全面,但 Codeacademy 的這門課程要便宜一些。 掌握軟件工程技能和最佳實踐是明智的做法,這會使代碼更具可讀性和可擴展性。此外,當你開始將模型投入生產(chǎn)過程時,你需要寫出高質(zhì)量、測試良好的代碼,并熟練使用版本控制等工具。 這里有兩個不錯的免費資源?!窹ython Like You Mean It」涵蓋 PEP8 風格指南、文檔,以及面向?qū)ο蟮木幊獭?/section>地址:https://www.pythonlikeyoumeanit.com/intro.html(有中文版) scikit-learn 貢獻指南旨在促進開發(fā)者對 scikit-learn 庫的貢獻,但它實際上也涉及最佳實踐。它包括 GitHub、單元測試、debug 等話題,而且其寫作背景是數(shù)據(jù)科學應(yīng)用。 scikit-learn 貢獻指南地址:https://scikit-learn.org/stable/developers/contributing.html 要想對深度學習有一個全面的了解,我覺得 fast.ai 是最好的選擇,它完全免費且沒有廣告。該課程包含機器學習導論、深度學習實踐、計算線性代數(shù)和自然語言處理導論(代碼優(yōu)先)。所有課程都以實踐為先,強烈推薦大家學習這些課。 課程地址:https://www.fast.ai/
你在學習技術(shù)能力部分時,一定會遇到一些代碼背后的理論知識。我推薦大家在學習實踐能力的同時學習理論知識。我自己采取的方式是:學習能夠?qū)崿F(xiàn)某項技術(shù)的代碼(比如 KMeans),在代碼運行后深入了解其概念,如慣性(inertia)。scikit-learn 文檔包含 KMeans 算法背后的所有數(shù)學概念,地址:https://scikit-learn.org/stable/modules/clustering.html#k-means。 可汗學院幾乎涵蓋以下列舉的所有概念,且可免費學習。你可以在注冊可汗學院時選擇想要學習的主題,這樣就可以得到量身定做的理論學習路徑了。查看下圖中的所有復選框,提前了解下文將要列舉的大部分理論元素。
微積分的維基百科定義是「一門研究變化的學問」。換句話說,微積分能夠找出函數(shù)之間的模式,比如導數(shù)可以幫助你理解函數(shù)隨著時間的變化。 很多機器學習算法利用微積分優(yōu)化模型性能。如果你稍微了解機器學習,就一定聽說過梯度下降。梯度下降就是:迭代地調(diào)整模型參數(shù)值,以找出能夠最小化成本函數(shù)的局部極小值。梯度下降是微積分在機器學習中的應(yīng)用的絕佳案例。 幾何定義
計算函數(shù)的導數(shù)
非線性函數(shù)
復合函數(shù)
復合函數(shù)的導數(shù)
多個函數(shù)
偏導數(shù)
方向?qū)?shù)
積分(Integrals)
很多流行的機器學習方法(包括 XGBoost)使用矩陣來存儲輸入和處理數(shù)據(jù)。矩陣和向量空間、線性方程構(gòu)成了線性代數(shù)。要想了解機器學習方法的工作原理,你需要首先掌握線性代數(shù)知識。 向量
線性組合
線性相關(guān)和線性無關(guān)
向量點積和叉積
函數(shù)和線性變換
矩陣相乘
反函數(shù)
轉(zhuǎn)置矩陣
第三部分是實踐。要想真正掌握上述概念,你需要在類似現(xiàn)實應(yīng)用的項目中使用這些技能。實踐過程中,你會遇到一些問題,如數(shù)據(jù)丟失、數(shù)據(jù)出錯,并逐漸發(fā)展出該領(lǐng)域的深層專業(yè)能力。這部分將列舉一些可供免費獲取實踐經(jīng)驗的地方。 「實踐的目的不僅是實現(xiàn)潛能,還在于開發(fā)潛能,使之前不可能的事變?yōu)榭赡?。這要求你勇于挑戰(zhàn):走出舒適區(qū),強制大腦或身體不停適應(yīng)?!笰nders Ericsson,《Peak: Secrets from the New Science of Expertise》 機器學習競賽是獲取構(gòu)建機器學習模型實踐經(jīng)驗的好去處。它們提供大量數(shù)據(jù)集、待解決問題和排行榜。排行榜是衡量現(xiàn)有知識能否開發(fā)出優(yōu)秀模型的重要方式,還能幫助你發(fā)現(xiàn)哪些地方需要改進。 除了 Kaggle,還有很多機器學習競賽平臺,如 Analytics Vidhya 和 DrivenData。
UCI 機器學習庫包含大量公共數(shù)據(jù)集。你可以使用這些數(shù)據(jù)集創(chuàng)建自己的數(shù)據(jù)項目,包括數(shù)據(jù)分析和機器學習模型。你甚至可以嘗試使用 web 前端構(gòu)建一個部署模型。將自己的項目存儲在公共平臺是個好辦法,比如 GitHub,這可以幫你創(chuàng)建作品集,展示個人技能,為未來的求職打下基礎(chǔ)。
另一個選擇是為開源項目做貢獻。很多 Python 庫依賴社區(qū)進行維護,黑客馬拉松活動常常會在社區(qū)聚會和會議時舉辦,新手也可以參加這類聚會。參加這些活動可以幫你積攢實踐經(jīng)驗,并提供一個向他人學習同時反饋他人的環(huán)境。Numfocus 就是一個例子。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報 。