摘要:學(xué) Excel 還是 R、Python?機(jī)器學(xué)習(xí)怎么入門?數(shù)據(jù)工程師和數(shù)據(jù)科學(xué)家有什么區(qū)別?聽聽美國 IT 大牛的建議。
去年我決定從傳統(tǒng)水利行業(yè)跨行到 Python 領(lǐng)域的時候,滿腦子都是困惑與擔(dān)心,猶豫放棄所學(xué)多年的專業(yè)知識值不值得,擔(dān)心萬一轉(zhuǎn)行失敗怎么辦,糾結(jié)實(shí)際工作比想象中的難怎么辦。
沒遇到指點(diǎn)迷津的大佬,只好網(wǎng)上各種搜,眾說紛紜,最后在「要不要轉(zhuǎn)行」這個問題上浪費(fèi)了很長時間。在跨過這個坎之后,回頭來看以前那些問題,思路清晰很多。
其實(shí),在開始階段,相比具體的專業(yè)知識,更重要的是大方向把握。好比,你告訴我旅途上的風(fēng)景有多么多么美,但我想先知道是哪條路,好判斷能不能去到。
最近看到一篇叫「2019 年學(xué)習(xí)數(shù)據(jù)科學(xué)是什么感受」的文章,深有感觸。作者是 Thomas Nield,美國西南航空公司的商務(wù)顧問,著有《Getting Started with SQL (O'Reilly) 》等書,經(jīng)驗豐富的 IT 大牛。
文章中他以一問一答的形式,給那些想要踏上數(shù)據(jù)科學(xué)之路的人,提了一些中肯的建議。里面有些觀點(diǎn)很有價值,特節(jié)選翻譯成文,這里分享給你。
背景:假設(shè)你是一名「表哥」,平常工作主要使用 Excel,數(shù)據(jù)透視表、制圖表這些。最近了解到未來很多工作崗位會被人工智能會取代,甚至包括你現(xiàn)在的工作。你決定開始學(xué)習(xí)數(shù)據(jù)科學(xué)、人工智能和機(jī)器學(xué)習(xí),Google 搜索「如何成為數(shù)據(jù)科學(xué)家」找到了下面這樣一份學(xué)習(xí)路線圖,然后你就開始向作者大牛請教。
Q:我是否真的必須掌握這個圖表中的所有內(nèi)容,才能成為數(shù)據(jù)科學(xué)家?
成為一名數(shù)據(jù)科學(xué)家的必須技能(截至2013年)
A:簡單說,不需要全部。這是 2013 年的路線圖,有點(diǎn)過時了,里面連 TensorFlow 都沒有,基本沒有人再參考。完全可以劃掉這個圖中的一些路徑,前幾年「數(shù)據(jù)科學(xué)」劃分地過于分散,采用其他方法會更好。
Q:聽你這樣說就不那么緊張了,那么我應(yīng)該回到學(xué)校繼續(xù)深造,然后獲得一個數(shù)據(jù)科學(xué)碩士學(xué)位嗎? 我看很多數(shù)據(jù)科學(xué)家至少都是碩士。
A:天哪,你為什么這樣做?不要被「數(shù)據(jù)科學(xué)」這些高大上的術(shù)語給唬住了,這些術(shù)語主要是用來重新定義一些業(yè)務(wù)分類。事實(shí)上,學(xué)校教授的東西基本都是過時的技術(shù),不如選擇 Coursera 或 Khan Academy 這些在線自學(xué)網(wǎng)站。
Q:那么我該如何開始自學(xué)呢?LinkedIn上的人說應(yīng)該先學(xué)習(xí) Linux ,Twitter 的人建議先學(xué)習(xí) Scala,而不是 Python 或 R
A:不要信那些人的話。
Q:好的,R怎么樣?不少人喜歡它。
A:R 擅長數(shù)學(xué)建模,但 Python 能做的更多,比如數(shù)據(jù)處理和搭建 Web 服務(wù),總之Python 比 R 的學(xué)習(xí)投資回報率高。
Q:R 在 Tiobe上的排名仍然很高,而且擁有大量的社區(qū)和資源,學(xué)它有什么不好?
如果你只是對數(shù)學(xué)感興趣,使用 R 完全沒問題,配合 Tidyverse 包更是如虎添翼。但數(shù)據(jù)科學(xué)的應(yīng)用范圍遠(yuǎn)超數(shù)學(xué)和統(tǒng)計學(xué)。所以相信我,Python 在 2019 年更值得學(xué),學(xué)它不會讓你后悔。
Q:Python 難學(xué)么?
A:Python 是一種簡單的語言,可以幫你可以自動完成許多任務(wù),做一些很酷的事情。不過數(shù)據(jù)科學(xué)不僅僅是腳本和機(jī)器學(xué)習(xí),甚至不需要依賴 Python 。
Q:什么意思?
A:Python 這些只是工具,使用這些工具可以從數(shù)據(jù)中獲取洞察力,這個過程有時會涉及到機(jī)器學(xué)習(xí),但大部分時間沒有。簡單地來說,創(chuàng)建圖表也可以算是數(shù)據(jù)科學(xué),所以你甚至不必學(xué)習(xí) Python,使用 Tableau 都行,他們宣稱使用他們的產(chǎn)品就可以「成為數(shù)據(jù)科學(xué)家」。
Q:好吧,但數(shù)據(jù)科學(xué)應(yīng)該不僅僅是制作出漂亮的可視化圖表,Excel 中都可以做到,另外學(xué)習(xí)編程應(yīng)該很有用,告訴我一些 Python 方面的知識吧
A:學(xué)習(xí) Python,你需要學(xué)習(xí)一些庫,比如用于操作 DataFrame 的 Pandas 、制作圖表的 Matplotlib,實(shí)際上更好的選擇是 Plotly,它用了 d3.js。
Q:我能懂一些,但什么是 DataFrame?
A:它是一種有行和列的數(shù)據(jù)結(jié)構(gòu),類似 Excel 表,使用它可以實(shí)現(xiàn)很酷的轉(zhuǎn)換、透視和聚合等功能。
Q:那 Python 與 Excel 有什么不同?
A:大不相同,你可以在 Jupyter Notebook 中完成所有操作,逐步完成每個數(shù)據(jù)分析階段并可視化,就像你正在創(chuàng)建一個可以與他人分享的故事。畢竟,溝通和講故事是數(shù)據(jù)科學(xué)的重要組成部分。
Q:這聽起來和 PowerPoint 沒什么區(qū)別???
A:當(dāng)然有區(qū)別,Jupyter Notebook 更自動簡潔,可以輕松追溯每個分析步驟。有些人不太喜歡它,因為代碼不是很實(shí)用。如果你想做一款軟件產(chǎn)品,更好的方法是使用其他工具模塊化封裝代碼。
Q:那么數(shù)據(jù)科學(xué)跟軟件工程也有關(guān)系么?
A:也可以這么說,但不要走偏,學(xué)習(xí)數(shù)據(jù)科學(xué)最需要的是數(shù)據(jù)。初學(xué)的最佳方式是網(wǎng)絡(luò)爬蟲,抓取一些網(wǎng)頁,使用 Beautiful Soup 解析它生成大量非結(jié)構(gòu)化文本數(shù)據(jù)下載到電腦上。
Q:我以為學(xué)習(xí)數(shù)據(jù)科學(xué)是做表格查詢而不是網(wǎng)頁抓取的工作,所以我剛學(xué)完一本 SQL 的書,SQL 不是訪問數(shù)據(jù)的典型方式嗎?
A:好吧,我們可以使用非結(jié)構(gòu)化文本數(shù)據(jù)做很多很酷的事情。比如對社交媒體帖子上的情緒進(jìn)行分類或進(jìn)行自然語言處理。NoSQL 非常擅長存儲這種類型的數(shù)據(jù)。
Q:我聽說過 NoSQL 這個詞,跟 SQL 、大數(shù)據(jù)有什么關(guān)系?
A:大數(shù)據(jù)是 2016 年的概念,已經(jīng)有點(diǎn)過時了,現(xiàn)在大多數(shù)人不再使用這個術(shù)語。NoSQL 是大數(shù)據(jù)的產(chǎn)物,今天發(fā)展成為了像 MongoDB 一樣的平臺。
Q:好的,但為什么稱它為 NoSQL?
A:NoSQL 代表不僅是 SQL,它支持關(guān)系表之外的數(shù)據(jù)結(jié)構(gòu),不過 NoSQL 數(shù)據(jù)庫通常不使用 SQL,有專門的查詢語言,簡單對比一下 MongoDB 和 SQL 查詢語言:
Q:這太可怕了,你意思是每個 NoSQL 平臺都有自己的查詢語言?SQL 有什么問題?
A:SQL 沒有任何問題,它很有價值。不過這幾年非結(jié)構(gòu)化數(shù)據(jù)是熱潮,用它來做分析更容易。需強(qiáng)調(diào)的是,盡管SQL 難學(xué),但它是一種非常通用的語言。
Q:好的,我可以這樣理解么: NoSQL 對數(shù)據(jù)科學(xué)家來說不像 SQL 那么重要,除非工作中需要它?
A:差不多,除非你想成為一名數(shù)據(jù)工程師。
Q:數(shù)據(jù)工程師?
A:數(shù)據(jù)科學(xué)家分為兩個職業(yè)。數(shù)據(jù)工程師為模型提供可用的數(shù)據(jù),機(jī)器學(xué)習(xí)和數(shù)學(xué)建模涉及比較少,這些工作主要由數(shù)據(jù)科學(xué)家來做。如果你想成為一名數(shù)據(jù)工程師,建議優(yōu)先考慮學(xué)習(xí) Apache Kafka 而不是 NoSQL,Apache Kafka 現(xiàn)在非常熱門。
如果想成為「數(shù)據(jù)科學(xué)家」,可以看看這張數(shù)據(jù)科學(xué)維恩圖。簡單來說,數(shù)據(jù)工程師是一個多領(lǐng)域交叉的崗位,你需要懂?dāng)?shù)學(xué)/統(tǒng)計學(xué)、編程以及你專業(yè)方面的知識。
Q:好吧,我不知道我現(xiàn)在是想成為數(shù)據(jù)科學(xué)家還是數(shù)據(jù)工程師?;剡^頭來,為什么要抓維基百科頁面呢?
A:抓取下來的頁面數(shù)據(jù),可以作為自然語言處理的輸入數(shù)據(jù),之后就可以做一些事情,如創(chuàng)建聊天機(jī)器人。
Q:我暫時應(yīng)該不用接觸自然語言處理、聊天機(jī)器人、非結(jié)構(gòu)化文本數(shù)據(jù)這些吧?
A:不用但值得關(guān)注,像 Google 和 Facebook 這些大公司,目前在處理大量非結(jié)構(gòu)化數(shù)據(jù)(如社交媒體帖子和新聞文章)。除了這些科技巨頭,大部分人仍然在使用關(guān)系數(shù)據(jù)庫形式的業(yè)務(wù)運(yùn)營數(shù)據(jù),使用著不是那么前沿的技術(shù),比如 SQL。
Q:是的,我猜他們還在做挖掘用戶帖子、電子郵件以及廣告之類的事情。
A:是的,你會發(fā)現(xiàn) Naive Bayes 有趣也很有用。獲取文本正文并預(yù)測它所屬的類別。先跳過這塊,你目前的工作是處理大量表格數(shù)據(jù),是想做一些預(yù)測或統(tǒng)計分析么?
Q:對的,我們終于回到正題上了,就是解決實(shí)際問題,這是神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的用武之地嗎?
A:不要著急,如果想學(xué)這些,建議從基礎(chǔ)開始,比如正態(tài)分布、線性回歸等。
Q:明白,但這些我仍然可以在 Excel 中完成,有什么區(qū)別?
A:你可以在 Excel中 做很多事情,但編程可以獲得更大的靈活性。
Q:你說的編程是像 VBA 這樣的么?
A:看來我需要從頭說了。Excel 確實(shí)有很好的統(tǒng)計運(yùn)算符和不錯的線性回歸模型。但如果你需要對每個類別的項目進(jìn)行單獨(dú)的正態(tài)分布或回歸,那么使用 Python 要容易得多,而不是創(chuàng)建一長串的公式,比如下面這樣,這會讓看公式的人無比痛苦。除此之外,Python 還有功能強(qiáng)大的 scikit-learn 庫,可以處理更多的回歸和機(jī)器學(xué)習(xí)模型。
Q:這需要涉及到數(shù)學(xué)建模領(lǐng)域是吧,我需要學(xué)習(xí)哪些數(shù)學(xué)知識?
A:從線性代數(shù)開始吧,它是許多數(shù)據(jù)科學(xué)的基礎(chǔ)。你會處理各種矩陣運(yùn)算、行列式、特征向量這些概念。不得不說,線性代數(shù)很抽象,如果你想要得到線性代數(shù)的直觀解釋,3Blue1Brown 是最棒的。
(這和我之前寫的一篇文章觀點(diǎn)不謀而合:最棒的高數(shù)和線代入門教程)
Q:就是作大量的線性代數(shù)運(yùn)算?這聽起來毫無意義和無聊,能舉個例子么?
A:好吧,機(jī)器學(xué)習(xí)中會用到大量的線性代數(shù)知識,比如:線性回歸或構(gòu)建自己的神經(jīng)網(wǎng)絡(luò)時,會使用隨機(jī)權(quán)重值進(jìn)行大量矩陣乘法和縮放。
Q:好吧,矩陣與 DataFrame 有什么關(guān)系?感覺很相似。
A:實(shí)際上,我需要收回剛才說的話,你可以不用線性代數(shù)。
Q:真的嗎?那我還要不要學(xué)習(xí)線性代數(shù)?
A:就目前而言,你可能不需要學(xué)習(xí)線性代數(shù),直接使用機(jī)器學(xué)習(xí)庫就行,比如 TensorFlow 和 scikit-learn 這些庫,它們會幫助你自動完成線性代數(shù)部分的工作。不過你需要對這些庫的工作原理有所了解。
Q:說到機(jī)器學(xué)習(xí),線性回歸真的算是機(jī)器學(xué)習(xí)嗎?
A:是的,線性回歸是機(jī)器學(xué)習(xí)的敲門磚。
Q:真棒,我一直在 Excel 中這樣做,那我是不是也可以自稱「機(jī)器學(xué)習(xí)從業(yè)者」?
A:技術(shù)上來說是的,不過你需要擴(kuò)大知識面。機(jī)器學(xué)習(xí)通常有兩個任務(wù):回歸或分類。從技術(shù)上講,分類是回歸。決策樹、神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)、邏輯回歸以及線性回歸,這些算法都在做某種形式的曲線擬合,每種算法各有優(yōu)缺點(diǎn)。
Q:所以機(jī)器學(xué)習(xí)只是回歸?它們都有效地擬合了曲線?
A:差不多,像線性回歸這樣的一些模型清晰可解釋,而像神經(jīng)網(wǎng)絡(luò)這樣更先進(jìn)的模型定義是復(fù)雜的,并且難以解釋。神經(jīng)網(wǎng)絡(luò)實(shí)際上只是具有一些非線性函數(shù)的多層回歸。當(dāng)你只有 2-3 個變量時,它可能看起來不那么令人印象深刻,但是當(dāng)你有數(shù)百或數(shù)千個變量時它就開始變得有趣了。
Q:那圖像識別也只是回歸?
A:是的,每個圖像像素基本上變成具有數(shù)值的輸入變量。你必須警惕維度的詛咒,變量(維度)越多,需要的數(shù)據(jù)越多,以防變得稀疏。這是機(jī)器學(xué)習(xí)如此不可靠和混亂的眾多原因之一,并且需要大量你沒有的標(biāo)記數(shù)據(jù)。
Q:機(jī)器學(xué)習(xí)能解決安排員工、交通工具、數(shù)獨(dú)所有這些問題嗎?
A:當(dāng)你遇到這些類型的問題時,有些人會說這不是數(shù)據(jù)科學(xué)或機(jī)器學(xué)習(xí)而是運(yùn)籌學(xué)。
Q:這對我來說似乎是實(shí)際問題。運(yùn)營研究與數(shù)據(jù)科學(xué)無關(guān)?
A:實(shí)際上,存在相當(dāng)多的重疊。運(yùn)籌學(xué)已經(jīng)提供了許多機(jī)器學(xué)習(xí)使用的優(yōu)化算法。它還為常見的 AI 問題提供了許多解決方案。
Q:那么我們用什么算法來解決這些問題呢?
A:絕對不是機(jī)器學(xué)習(xí)算法,很少有人知道這一點(diǎn)。幾十年前就有更好的算法,樹搜索、元啟發(fā)式、線性規(guī)劃和其他運(yùn)算研究方法已經(jīng)使用了很長時間,并且比機(jī)器學(xué)習(xí)算法對這些類別的問題做得更好。
Q:那為什么每個人都在談?wù)摍C(jī)器學(xué)習(xí)而不是這些算法呢?
A:因為很長一段時間里,這些優(yōu)化算法問題已經(jīng)有了令人滿意的解決方案,但自那時起就一直沒有成為頭條新聞。幾十年前就出現(xiàn)了這些算法的 AI 炒作周期。如今,AI 炒作重新點(diǎn)燃了機(jī)器學(xué)習(xí)及其解決的問題類型:圖像識別、自然語言處理、圖像生成等。
Q:所以使用機(jī)器學(xué)習(xí)來解決調(diào)度問題,或者像數(shù)獨(dú)一樣簡單的事情時,這樣做是錯誤的嗎?
A:差不多,機(jī)器學(xué)習(xí),深度學(xué)習(xí)這些今天被炒作的任何東西通常都不能解決離散優(yōu)化問題,至少不是很好,效果非常不理想。
Q:如果機(jī)器學(xué)習(xí)只是回歸,為什么每個人都對機(jī)器人和人工智能,這么憂心忡忡,認(rèn)為會危害我們的工作和社會?我的意思是擬合曲線真的那么危險嗎?AI 在進(jìn)行回歸時有多少自我意識?
A:人們已經(jīng)找到了一些巧妙的回歸應(yīng)用,例如在給定的轉(zhuǎn)彎上找到最佳的國際象棋移動(離散優(yōu)化也可以做)或者計算自動駕駛汽車的轉(zhuǎn)向方向。但是大多都是炒作,回歸只能干這些事。
Q:好吧,我要散個步慢慢消化下。我目前的 Excel 工作感覺也算「數(shù)據(jù)科學(xué)」,但數(shù)據(jù)科學(xué)家這個名頭有點(diǎn)虛幻。
A:也許你應(yīng)該關(guān)注一下 IBM。
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8349瀏覽量
132312 -
python
+關(guān)注
關(guān)注
55文章
4767瀏覽量
84375 -
數(shù)據(jù)科學(xué)
+關(guān)注
關(guān)注
0文章
164瀏覽量
10039
原文標(biāo)題:2019 年,Python 數(shù)據(jù)科學(xué)該怎么學(xué)
文章出處:【微信號:TheBigData1024,微信公眾號:人工智能與大數(shù)據(jù)技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論