美國 IT 大牛建議:2019 年這樣學習數據科學

作者 | 蘇克1900
公衆號 | 高級農民工

去年我決定從傳統水利行業跨行到 Python 領域的時候,滿腦子都是困惑與擔心,猶豫放棄所學多年的專業知識值不值得,擔心萬一轉行失敗怎麼辦,糾結實際工作比想象中的難怎麼辦。

沒遇到指點迷津的大佬,只好網上各種搜,衆說紛紜,最後在「要不要轉行」這個問題上浪費了很長時間。在跨過這個坎之後,回頭來看以前那些問題,思路清晰很多。

其實,在開始階段,相比具體的專業知識,更重要的是大方向把握。好比,你告訴我旅途上的風景有多麼多麼美,但我想先知道是哪條路。

最近看到一篇叫「2019 年學習數據科學是什麼感受」的文章,深有感觸。作者是Thomas Nield,美國西南航空公司的商務顧問,著有《Getting Started with SQL (O’Reilly) 》等書,經驗豐富的 IT 大牛。

文章中他以一問一答的形式,給那些想要踏上數據科學之路的人,提了一些中肯的建議。裏面有些觀點很有價值,特翻譯成文,這裏分享給你。

背景:假設你是一名「表哥」,平常工作主要使用 Excel,數據透視表、製圖表這些。最近瞭解到未來很多工作崗位會被人工智能會取代,甚至包括你現在的工作。你決定開始學習數據科學、人工智能和機器學習,在 Google 搜索了「如何成爲數據科學家」找到了下面這樣一份學習路線圖,然後你就開始向作者大牛請教了。

Q:我是否真的必須掌握這個圖表中的所有內容,才能成爲數據科學家?

<center>成爲一名自信數據科學家的必須技能(截至2013年)</center>

A:簡單說,不需要全部。這是 2013 年的路線圖,有點過時了,裏面連 TensorFlow 都沒有,基本沒有人再參考。完全可以劃掉這個圖中的一些路徑,前幾年「數據科學」劃分地過於分散,採用其他方法會更好。

Q:聽你這樣說就不那麼緊張了,那麼我應該回到學校繼續深造,然後獲得一個數據科學碩士學位嗎? 我看很多數據科學家至少都是碩士。

A:天哪,你爲什麼這樣做?不要被「數據科學」這些高大上的術語給唬住了,這些術語主要是用來重新定義一些業務分類。事實上,學校教授的東西基本都是過時的技術,不如選擇 Coursera 或 Khan Academy 這些在線自學網站。

Q:那麼我該如何開始自學呢?LinkedIn上的人說應該先學習 Linux ,Twitter 的人建議先學習 Scala,而不是 Python 或 R

A:不要信那些人的話。

Q:好的,R怎麼樣?不少人喜歡它。

A:R 擅長數學建模,但 Python 能做的更多,比如數據處理和搭建 Web 服務,總之比 R 的學習投資回報率高。

Q:R 在 Tiobe上的排名仍然很高,而且擁有大量的社區和資源,學它有什麼不好?

如果你只是對數學感興趣,使用 R 完全沒問題,配合 Tidyverse 包更是如虎添翼。但數據科學的應用範圍遠超數學和統計學。所以相信我,Python 在 2019 年更值得學,學它不會讓你後悔。

Q:Python 難學麼?

A:Python 是一種簡單的語言,可以幫你可以自動完成許多任務,做一些很酷的事情。不過數據科學不僅僅是腳本和機器學習,甚至不需要依賴 Python 。

Q:什麼意思?

A:Python 這些只是工具,使用這些工具可以從數據中獲取洞察力,這個過程有時會涉及到機器學習,但大部分時間沒有。簡單地來說,創建圖表也可以算是數據科學,所以你甚至不必學習 Python,使用 Tableau 都行,他們宣稱使用他們的產品就可以「成爲數據科學家」。

Q:好吧,但數據科學應該不僅僅是製作出漂亮的可視化圖表,Excel 中都可以做到,另外學習編程應該很有用,告訴我一些 Python 方面的知識吧

A:學習 Python,你需要學習一些庫,比如用於操作 DataFrame 的 Pandas 、製作圖表的 Matplotlib,實際上更好的選擇是 Plotly,它用了 d3.js。

Q:我能懂一些,但什麼是 DataFrame?

A:它是一種有行和列的數據結構,類似 Excel 表,使用它可以實現很酷的轉換、透視和聚合等功能。

Q:那 Python 與 Excel 有什麼不同?

A:大不相同,你可以在 Jupyter Notebook 中完成所有操作,逐步完成每個數據分析階段並可視化,就像你正在創建一個可以與他人分享的故事。畢竟,溝通和講故事是數據科學的重要組成部分。

Q:這聽起來和 PowerPoint 沒什麼區別啊?

A:當然有區別,Jupyter Notebook 更自動簡潔,可以輕鬆追溯每個分析步驟。有些人不太喜歡它,因爲代碼不是很實用。如果你想做一款軟件產品,更好的方法是使用其他工具模塊化封裝代碼。

Q:那麼數據科學跟軟件工程也有關係麼?

A:也可以這麼說,但不要走偏,學習數據科學最需要的是數據。初學的最佳方式是網絡爬蟲,抓取一些網頁,使用 Beautiful Soup 解析它生成大量非結構化文本數據下載到電腦上。

Q:我以爲學習數據科學是做表格查詢而不是網頁抓取的工作,所以我剛學完一本 SQL 的書,SQL 不是訪問數據的典型方式嗎?

A:好吧,我們可以使用非結構化文本數據做很多很酷的事情。比如對社交媒體帖子上的情緒進行分類或進行自然語言處理。NoSQL 非常擅長存儲這種類型的數據。

Q:我聽說過 NoSQL 這個詞,跟 SQL 、大數據有什麼關係?

A:大數據是 2016 年的概念,已經有點過時了,現在大多數人不再使用這個術語。NoSQL 是大數據的產物,今天發展成爲了像 MongoDB 一樣的平臺。

Q:好的,但爲什麼稱它爲 NoSQL?

A:NoSQL 代表不僅是 SQL,它支持關係表之外的數據結構,不過 NoSQL 數據庫通常不使用 SQL,有專門的查詢語言,簡單對比一下 MongoDB 和 SQL 查詢語言:

Q:這太可怕了,你意思是每個 NoSQL 平臺都有自己的查詢語言?SQL 有什麼問題?

A:SQL 沒有任何問題,它很有價值。不過這幾年非結構化數據是熱潮,用它來做分析更容易。需強調的是,儘管 SQL 難學,但它是一種非常通用的語言。

Q:好的,我可以這樣理解麼: NoSQL 對數據科學家來說不像 SQL 那麼重要,除非工作中需要它?

A:差不多,除非你想成爲一名數據工程師。

Q:數據工程師?

A:數據科學家分爲兩個職業。數據工程師爲模型提供可用的數據,機器學習和數學建模涉及比較少,這些工作主要由數據科學家來做。如果你想成爲一名數據工程師,建議優先考慮學習 Apache Kafka 而不是 NoSQL,Apache Kafka 現在非常熱門。

如果想成爲「數據科學家」,可以看看這張數據科學維恩圖。簡單來說,數據工程師是一個多領域交叉的崗位,你需要懂數學/統計學、編程以及你專業方面的知識。

Q:好吧,我不知道我現在是想成爲數據科學家還是數據工程師。回過頭來,爲什麼要抓維基百科頁面呢?

A:抓取下來的頁面數據,可以作爲自然語言處理的輸入數據,之後就可以做一些事情,如創建聊天機器人。

Q:我暫時應該不用接觸自然語言處理、聊天機器人、非結構化文本數據這些吧?

A:不用但值得關注,像 Google 和 Facebook 這些大公司,目前在處理大量非結構化數據(如社交媒體帖子和新聞文章)。除了這些科技巨頭,大部分人仍然在使用關係數據庫形式的業務運營數據,使用着不是那麼前沿的技術,比如 SQL。

Q:是的,我猜他們還在做挖掘用戶帖子、電子郵件以及廣告之類的事情。

A:是的,你會發現 Naive Bayes 有趣也很有用。獲取文本正文並預測它所屬的類別。先跳過這塊,你目前的工作是處理大量表格數據,是想做一些預測或統計分析麼?

Q:對的,我們終於回到正題上了,就是解決實際問題,這是神經網絡和深度學習的用武之地嗎?

A:不要着急,如果想學這些,建議從基礎開始,比如正態分佈、線性迴歸等。

Q:明白,但這些我仍然可以在 Excel 中完成,有什麼區別?

A:你可以在 Excel中 做很多事情,但使用程序你可以獲得更大的靈活性。

Q:你說的編程是像 VBA 這樣的麼?

A:看來我需要從頭說了。Excel 確實有很好的統計運算符和不錯的線性迴歸模型。但如果你需要對每個類別的項目進行單獨的正態分佈或迴歸,那麼使用 Python 要容易得多,而不是創建一長串的公式,比如下面這樣,這會讓看公式的人無比痛苦。除此之外,Python 還有功能強大的 scikit-learn 庫,可以處理更多的迴歸和機器學習模型。

Q:這需要涉及到數學建模領域是吧,我需要學習哪些數學知識?

A:從線性代數開始吧,它是許多數據科學的基礎。你會處理各種矩陣運算、行列式、特徵向量這些概念。不得不說,線性代數很抽象,如果你想要得到線性代數的直觀解釋,3Blue1Brown 是最棒的。

(這和我之前寫的一篇文章觀點不謀而合:最棒的高數和線代入門教程

Q:就是作大量的線性代數運算?這聽起來毫無意義和無聊,能舉個例子麼?

A:好吧,機器學習中會用到大量的線性代數知識,比如:線性迴歸或構建自己的神經網絡時,會使用隨機權重值進行大量矩陣乘法和縮放。

Q:好吧,矩陣與 DataFrame 有什麼關係?感覺很相似。

A:實際上,我需要收回剛纔說的話,你可以不用線性代數。

Q:真的嗎?那我還要不要學習線性代數?

A:就目前而言,你可能不需要學習線性代數,直接使用機器學習庫就行,比如 TensorFlow 和 scikit-learn 這些庫,它們會幫助你自動完成線性代數部分的工作。不過你需要對這些庫的工作原理有所瞭解。

Q:說到機器學習,線性迴歸真的算是機器學習嗎?

A:是的,線性迴歸是機器學習的敲門磚。

Q:真棒,我一直在 Excel 中這樣做,那我是不是也可以自稱「機器學習從業者」?

A:技術上來說是的,不過你需要擴大知識面。機器學習通常有兩個任務:迴歸或分類。從技術上講,分類是迴歸。決策樹、神經網絡、支持向量機、邏輯迴歸以及線性迴歸,這些算法都在做某種形式的曲線擬合,每種算法各有優缺點。

Q:所以機器學習只是迴歸?它們都有效地擬合了曲線?

A:差不多,像線性迴歸這樣的一些模型清晰可解釋,而像神經網絡這樣更先進的模型定義是複雜的,並且難以解釋。神經網絡實際上只是具有一些非線性函數的多層迴歸。當你只有 2-3 個變量時,它可能看起來不那麼令人印象深刻,但是當你有數百或數千個變量時它就開始變得有趣了。

Q:那圖像識別也只是迴歸?

A:是的,每個圖像像素基本上變成具有數值的輸入變量。你必須警惕維度的詛咒,變量(維度)越多,需要的數據越多,以防變得稀疏。這是機器學習如此不可靠和混亂的衆多原因之一,並且需要大量你沒有的標記數據。

Q:機器學習能解決安排員工、交通工具、數獨所有這些問題嗎?

A:當你遇到這些類型的問題時,有些人會說這不是數據科學或機器學習而是運籌學。

Q:這對我來說似乎是實際問題。運營研究與數據科學無關?

A:實際上,存在相當多的重疊。運籌學已經提供了許多機器學習使用的優化算法。它還爲常見的 AI 問題提供了許多解決方案。

Q:那麼我們用什麼算法來解決這些問題呢?

A:絕對不是機器學習算法,很少有人知道這一點。幾十年前就有更好的算法,樹搜索、元啓發式、線性規劃和其他運算研究方法已經使用了很長時間,並且比機器學習算法對這些類別的問題做得更好。

Q:那爲什麼每個人都在談論機器學習而不是這些算法呢?

A:因爲很長一段時間裏,這些優化算法問題已經有了令人滿意的解決方案,但自那時起就一直沒有成爲頭條新聞。幾十年前就出現了這些算法的 AI 炒作週期。如今,AI 炒作重新點燃了機器學習及其解決的問題類型:圖像識別、自然語言處理、圖像生成等。

Q:所以使用機器學習來解決調度問題,或者像數獨一樣簡單的事情時,這樣做是錯誤的嗎?

A:差不多,機器學習,深度學習這些今天被炒作的任何東西通常都不能解決離散優化問題,至少不是很好,效果非常不理想。

Q:如果機器學習只是迴歸,爲什麼每個人都對機器人和人工智能,這麼憂心忡忡,認爲會危害我們的工作和社會?我的意思是擬合曲線真的那麼危險嗎?AI 在進行迴歸時有多少自我意識?

A:人們已經找到了一些巧妙的迴歸應用,例如在給定的轉彎上找到最佳的國際象棋移動(離散優化也可以做)或者計算自動駕駛汽車的轉向方向。但是大多都是炒作,迴歸只能幹這些事。

Q:好吧,我要散個步慢慢消化下。我目前的 Excel 工作感覺也算「數據科學」,但數據科學家這個名頭有點虛幻。

A:也許你應該關注一下 IBM。

本文完。
歡迎關注我的公衆號:高級農民工

參考:

∞ How it feels to learn data science in 2019

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章