先來說一下R語(yǔ)言編程跟偽數(shù)據(jù)科學(xué)為何扯上了關(guān)系:R是一種有20多年歷史的開源統(tǒng)計(jì)編程語(yǔ)言及編譯環(huán)境,是商業(yè)化產(chǎn)品S+的后繼者。R一直以來都局限于內(nèi)存數(shù)據(jù)處理,在統(tǒng)計(jì)圈子里非常流行,并因其出色的可視化效果為人稱道。一些新型的開發(fā)環(huán)境通過創(chuàng)建R程序包或者將其擴(kuò)展到分布式架構(gòu)里(比如將R與Hadoop結(jié)合的RHadoop),將R(限于在內(nèi)存里處理數(shù)據(jù))的能力擴(kuò)大。其他程序語(yǔ)言當(dāng)然也存在跟偽數(shù)據(jù)科學(xué)沾邊的情況,比如說SAS,但不及R這么流行。說到SAS,它價(jià)格高昂,在政府機(jī)構(gòu)或者實(shí)體企業(yè)的應(yīng)用更為廣泛。但在過去10年數(shù)據(jù)快速增長(zhǎng)的領(lǐng)域(如搜索引擎、社交媒體、移動(dòng)數(shù)據(jù)、協(xié)同過濾推薦等)運(yùn)用不多。R跟C、Perl或者Python的語(yǔ)法不一樣(后三者語(yǔ)法根源一樣),其簡(jiǎn)易性使得寫R的程序員比較廣泛。R還有很多程序包和不錯(cuò)的用戶界面,SAS卻難學(xué)很多。 更混淆的事情是,管理決策層在搭建其數(shù)據(jù)科學(xué)家團(tuán)隊(duì)時(shí),有時(shí)也不是很清楚他們想要的到底是什么。他們往往最終招募的是很純粹的技術(shù)極客、計(jì)算機(jī)科學(xué)家,或者缺乏恰當(dāng)大數(shù)據(jù)經(jīng)驗(yàn)的人。人力資源部門對(duì)于數(shù)據(jù)科學(xué)的了解也不會(huì)好到哪里,因此導(dǎo)致更為嚴(yán)重的問題,他們給出的招聘廣告就是不斷重復(fù)類似的關(guān)鍵詞:Java、Python、MapReduce、R、Hadoop和NoSQL。但數(shù)據(jù)科學(xué)真的就是這些技能的混合嗎? MapReduce只是一個(gè)將數(shù)據(jù)分解為子集,在不同機(jī)器上分開處理,并把所有結(jié)果集合起來,從而處理大數(shù)據(jù)的泛化框架。因此它涉及的是處理大數(shù)據(jù)的分布式框架,用到的這些服務(wù)器和設(shè)備則組成云(Cloud)。 Hadoop是MapReduce的一種實(shí)現(xiàn),就像C++是面向?qū)ο缶幊痰膶?shí)現(xiàn)一樣。NoSQL意味著“Not Only SQL(意為不單只是SQL)”,是指能更新穎、更高效地訪問(比如MapReduce)數(shù)據(jù)的數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)管理系統(tǒng),有時(shí)它是作為SQL(標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)查詢語(yǔ)言)之下的隱藏層而存在的。 除了MapReduce以外,還有其他框架——例如,圖形數(shù)據(jù)庫(kù)和環(huán)境,它們依賴于節(jié)點(diǎn)和邊這類概念,來管理和訪問數(shù)據(jù)(通常是空間數(shù)據(jù))。這些概念并不一定是新的。在谷歌存在之前,分布式體系結(jié)構(gòu)已被應(yīng)用到搜索技術(shù)環(huán)境中了。15年前,我寫Perl腳本進(jìn)行哈希連接(一種NoSQL連接,用來連接或合并數(shù)據(jù)庫(kù)中的兩個(gè)表)。然而,現(xiàn)在一些數(shù)據(jù)庫(kù)廠商提供的哈希連接,是SQL連接的一個(gè)快速替代品。哈希連接在本書后面還會(huì)討論到。它們使用哈希表,并依賴于名稱-值對(duì)的形式。我想說的結(jié)論是,有時(shí)MapReduce、NoSQL、Hadoop、Python(一種優(yōu)秀的腳本語(yǔ)言,往往用于處理文本和非結(jié)構(gòu)化數(shù)據(jù))會(huì)被認(rèn)為是Perl的后繼者,但它們根源于幾十年前就開發(fā)出的系統(tǒng)和技術(shù),只是在過去的10年里變得更成熟而已,但數(shù)據(jù)科學(xué)并不只是這些。 事實(shí)上,你可以成為一名真正的數(shù)據(jù)科學(xué)家,且不需要掌握這些技能。NoSQL和MapReduce不是新概念——在這些關(guān)鍵詞被創(chuàng)建之前,就有很多人接觸到它們。但要成為一名數(shù)據(jù)科學(xué)家,你需要以下能力。
數(shù)據(jù)科學(xué)家在商業(yè)分析、統(tǒng)計(jì)學(xué)和計(jì)算機(jī)科學(xué)等領(lǐng)域也是通才,比如會(huì)掌握這些專業(yè)知識(shí):健壯性、實(shí)驗(yàn)設(shè)計(jì)、算法復(fù)雜度、儀表盤和數(shù)據(jù)可視化。一些數(shù)據(jù)科學(xué)家也是數(shù)據(jù)策略師——他們可以開發(fā)數(shù)據(jù)收集策略,并使用數(shù)據(jù)來發(fā)現(xiàn)可操作的、能對(duì)商業(yè)產(chǎn)生影響的見解。這就要求數(shù)據(jù)科學(xué)家具有創(chuàng)造性,能根據(jù)業(yè)務(wù)要求,制定分析、提出解決方案。 要理解數(shù)據(jù)科學(xué),所需的基本數(shù)學(xué)知識(shí)包括:
從技術(shù)的角度,要掌握的重要技能和知識(shí)有R、Python(或Perl)、Excel、SQL、圖形(可視化)、FTP、基本的UNIX命令(sort、grep、head、tail、管道和重定向操作符、cat、cron定時(shí)等),以及對(duì)如何設(shè)計(jì)和訪問數(shù)據(jù)庫(kù)有基本了解。了解分布式系統(tǒng)如何工作和在哪里能發(fā)現(xiàn)瓶頸(是在硬盤和內(nèi)存之間的數(shù)據(jù)傳輸,還是在互聯(lián)網(wǎng)上),這也很重要。最后,要了解網(wǎng)絡(luò)爬蟲基本知識(shí),這有助于獲取互聯(lián)網(wǎng)上能找到的非結(jié)構(gòu)化數(shù)據(jù)。 |
|