偽數據科學家 VS 真數據科學家
如今數據科學書籍、認證和文憑,如雨后春筍般層出不窮。但許多僅僅是鏡花水月:許多人鉆了這一新名詞的空子,將舊酒(比如統計學和R編程)放在了“數據科學”這個新瓶里。本文選自《數據天才:數據科學家修煉之道》。
R語言編程跟偽數據科學為何扯上了關系?
R是一種有20多年歷史的開源統計編程語言及編譯環境,是商業化產品S+的后繼者。R一直以來都局限于內存數據處理,在統計圈子里非常流行,并因其出色的可視化效果為人稱道。一些新型的開發環境通過創建R程序包或者將其擴展到分布式架構里(比如將R與Hadoop結合的RHadoop),將R(限于在內存里處理數據)的能力擴大。其他程序語言當然也存在跟偽數據科學沾邊的情況,比如說SAS,但不及R這么流行。說到SAS,它價格高昂,在政府機構或者實體企業的應用更為廣泛。但在過去10年數據快速增長的領域(如搜索引擎、社交媒體、移動數據、協同過濾推薦等)運用不多。R跟C、Perl或者Python的語法不一樣(后三者語法根源一樣),其簡易性使得寫R的程序員比較廣泛。R還有很多程序包和不錯的用戶界面,SAS卻難學很多。
管理決策層在搭建其數據科學家團隊時,有時也不是很清楚他們想要的到底是什么。
他們往往最終招募的是很純粹的技術極客、計算機科學家,或者缺乏恰當大數據經驗的人。人力資源部門對于數據科學的了解也不會好到哪里,因此導致更為嚴重的問題,他們給出的招聘廣告就是不斷重復類似的關鍵詞:Java、Python、MapReduce、R、Hadoop和NoSQL。
數據科學真的就是這些技能的混合嗎?
MapReduce只是一個將數據分解為子集,在不同機器上分開處理,并把所有結果集合起來,從而處理大數據的泛化框架。因此它涉及的是處理大數據的分布式框架,用到的這些服務器和設備則組成云(Cloud)。
Hadoop是MapReduce的一種實現,就像C++是面向對象編程的實現一樣。
NoSQL意味著“Not Only SQL(意為不單只是SQL)”,是指能更新穎、更高效地訪問(比如MapReduce)數據的數據庫或數據庫管理系統,有時它是作為SQL(標準數據庫查詢語言)之下的隱藏層而存在的。
除了MapReduce以外,還有其他框架——例如,圖形數據庫和環境,它們依賴于節點和邊這類概念,來管理和訪問數據(通常是空間數據)。這些概念并不一定是新的。在谷歌存在之前,分布式體系結構已被應用到搜索技術環境中了。15年前,我寫Perl腳本進行哈希連接(一種NoSQL連接,用來連接或合并數據庫中的兩個表)。然而,現在一些數據庫廠商提供的哈希連接,是SQL連接的一個快速替代品。哈希連接在本書后面還會討論到。它們使用哈希表,并依賴于名稱-值對的形式。我想說的結論是,有時MapReduce、NoSQL、Hadoop、Python(一種優秀的腳本語言,往往用于處理文本和非結構化數據)會被認為是Perl的后繼者,但它們根源于幾十年前就開發出的系統和技術,只是在過去的10年里變得更成熟而已,但數據科學并不只是這些。
事實上,你可以成為一名真正的數據科學家,且不需要掌握這些技能。NoSQL和MapReduce不是新概念——在這些關鍵詞被創建之前,就有很多人接觸到它們。
成為一名數據科學家,你需要以下能力。
- 敏銳的商業頭腦。
- 真正的大數據專業知識(例如,可以在幾個小時內快速地處理一個5 000萬行的數據集)。
- 認知數據的能力。
- 對模型具有猜疑精神。
- 了解大數據“詛咒”。
- 有能力溝通并理解管理人員正在試圖解決哪些問題。
- 能正確評估付你工資所能帶來的回報(ROI)或效益提升(lift)。
- 能夠快速地識別一個簡單的、健壯的、可擴展的解決方案。
- 能夠說服并推動管理人員,即使不情愿,也要為了公司、用戶和股東的利益,轉到正確的方向上。
- 真正熱愛數據分析。
- 成功案例的實際應用經驗。
- 數據架構知識。
- 數據收集和清理技能。
- 計算復雜度的基礎知識——如何開發健壯的、高效的、可擴展的、可移植的架構。
- 良好的算法知識。
數據科學家在商業分析、統計學和計算機科學等領域也是通才,比如會掌握這些專業知識:健壯性、實驗設計、算法復雜度、儀表盤和數據可視化。一些數據科學家也是數據策略師——他們可以開發數據收集策略,并使用數據來發現可操作的、能對商業產生影響的見解。這就要求數據科學家具有創造性,能根據業務要求,制定分析、提出解決方案。
要理解數據科學,所需的基本數學知識包括:
代數,如果可能的話,包括基本矩陣理論。
微積分入門課程。要掌握的理論不多,只需要理解計算的復雜度和O標記法即可。了解特殊函數,包括對數、指數、冪函數。微分方程、積分和復數不是必要的。
統計與概率的入門課程,要了解隨機變量、概率、均值、方差、百分位數、實驗設計、交叉驗證、擬合度和穩健統計的概念(不需要了解技術細節,而是達到本書介紹的程度即可)。
從技術的角度,要掌握的重要技能和知識有R、Python(或Perl)、Excel、SQL、圖形(可視化)、FTP、基本的UNIX命令(sort、grep、head、tail、管道和重定向操作符、cat、cron定時等),以及對如何設計和訪問數據庫有基本了解。了解分布式系統如何工作和在哪里能發現瓶頸(是在硬盤和內存之間的數據傳輸,還是在互聯網上),這也很重要。***,要了解網絡爬蟲基本知識,這有助于獲取互聯網上能找到的非結構化數據。
偽數據科學的例子
這里有個偽數據科學的例子,說明數據科學家要開展工作,為什么需要遵循標準和***實踐。這里討論的例子,并不是說它們是不好的產品——實際上,它們有很多的內在價值——但跟真的數據科學無關。原因有以下兩點:
首先,部分統計學家沒有參與到大數據革***。雖然有些人還寫了關于應用數據科學的書,但只是重新包裝原來的統計課程。
第二,適合大數據集的方法需要變化——按2005年的大數據定義,當有2 000萬行數據時,才有資格成為大數據——但2010年后不能再這樣劃分,因為大數據至少是TB級的。
不少人認為數據科學是統計學的一個新名字,他們把數據科學和偽數據科學,以及2005年的大數據定義與2013年的大數據定義弄混淆了?,F代數據也有很大的不同,已經被描述為3個V:速度(velocity)(實時、快速流動)、多樣化(variety)(結構化、非結構化,如微博內容)和大數據量(volume)。我會增加真實性(veracity)和價值(value)。
例子:
某一本數據科學電子書
查看一所著名大學2012年的數據科學訓練手冊,書的大部分內容是關于舊的統計理論。這本書用R來說明各種概念。當用邏輯回歸處理僅僅1萬行數據時,并不是大數據科學,它是偽數據科學。這本電子書全部關于小數據,***幾章例外,在那里你會學到一點SQL(嵌入在R代碼中)的知識和如何使用R包從Twitter提取微博內容,且創造出作者所說的詞云(它和云計算沒關系)。
即使提取Twitter內容的項目也還是小數據,也沒有分布式體系結構(例如,MapReduce)。事實上,該書從來沒有談到數據架構。該書的水平是初級的。每章以簡單的方式(適合高中學生閱讀)簡短介紹大數據和數據科學,跟該書實際涉獵的小數據科學不搭,跟項目和技術展示脫節。
也許作者增加了這些簡短的段落,是為了可以將他的“R統計”的電子書,重新改名為“數據科學的介紹”。它是免費的、很好的、寫得很棒的書,且會使高中學生對統計和編程感興趣。但它與數據科學無關。