摘要:學 Excel 還是 R、Python?機器學習怎麼入門?數據工程師和數據科學家有什麼區别?聽聽美國 IT 大牛的建議。
譯者:去年我決定從傳統水利行業跨行到 Python 領域的時候,滿腦子都是困惑與擔心,猶豫放棄所學多年的專業知識值不值得,擔心萬一轉行失敗怎麼辦,糾結實際工作比想象中的難怎麼辦。
沒遇到指點迷津的大佬,隻好網上各種搜,衆說紛纭,最後在「要不要轉行」這個問題上浪費了很長時間。在跨過這個坎之後,回頭來看以前那些問題,思路清晰很多。
其實,在開始階段,相比具體的專業知識,更重要的是大方向把握。好比,你告訴我旅途上的風景有多麼多麼美,但我想先知道是哪條路,好判斷能不能去到。
最近看到一篇叫「2019 年學習數據科學是什麼感受」的文章,深有感觸。作者是 Thomas Nield,美國西南航空公司的商務顧問,著有《Getting Started with SQL (O'Reilly) 》等書,經驗豐富的 IT 大牛。
在這裡給大家推薦一個python系統學習q群:250933691有免費開發工具以及初學資料,(數據分析,爬蟲,AI, 機器學習,神經網絡)每天有老師給大家免費授課,歡迎一起交流學習。
成為一名數據科學家的必須技能(截至2013年)
A:簡單說,不需要全部。這是 2013 年的路線圖,有點過時了,裡面連 TensorFlow 都沒有,基本沒有人再參考。完全可以劃掉這個圖中的一些路徑,前幾年「數據科學」劃分地過于分散,采用其他方法會更好。
Q:聽你這樣說就不那麼緊張了,那麼我應該回到學校繼續深造,然後獲得一個數據科學碩士學位嗎? 我看很多數據科學家至少都是碩士。
A:天哪,你為什麼這樣做?不要被「數據科學」這些高大上的術語給唬住了,這些術語主要是用來重新定義一些業務分類。事實上,學校教授的東西基本都是過時的技術,不如選擇 Coursera 或 Khan Academy 這些在線自學網站。
Q:那麼我該如何開始自學呢?LinkedIn上的人說應該先學習 Linux ,Twitter 的人建議先學習 Scala,而不是 Python 或 R
A:不要信那些人的話。
Q:好的,R怎麼樣?不少人喜歡它。
A:R 擅長數學建模,但 Python 能做的更多,比如數據處理和搭建 Web 服務,總之 Python 比 R 的學習投資回報率高。
Q:R 在 Tiobe上的排名仍然很高,而且擁有大量的社區和資源,學它有什麼不好?
A:如果你隻是對數學感興趣,使用 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。
在這裡給大家推薦一個python系統學習q群:250933691有免費開發工具以及初學資料,(數據分析,爬蟲,AI, 機器學習,神經網絡)每天有老師給大家免費授課,歡迎一起交流學習。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!