大数据环境下数据科学的知识体系
數(shù)據(jù)科學(xué)概論
隨著互聯(lián)網(wǎng)的飛速發(fā)展,大數(shù)據(jù)(Big Data)的概念和技術(shù)成為當(dāng)下流行的領(lǐng)域。 數(shù)據(jù)科學(xué)(Data Science)這一體系也隨著大數(shù)據(jù)的崛起成為討論熱點(diǎn)。在各大招聘網(wǎng)站上,“數(shù)據(jù)科學(xué)家”也漸漸成為一個(gè)熱門的工作職位。大專院校也紛紛開設(shè)大數(shù)據(jù)相關(guān)專業(yè)培養(yǎng)數(shù)據(jù)科學(xué)人才。哈佛商業(yè)評(píng)論說,數(shù)據(jù)科學(xué)家是二十一世紀(jì)最性感的職業(yè)。
數(shù)據(jù)科學(xué)是一個(gè)混合了數(shù)學(xué)、計(jì)算機(jī)科學(xué)以及相關(guān)行業(yè)知識(shí)的交叉學(xué)科,主要包括統(tǒng)計(jì)學(xué)、操作系統(tǒng)、程序設(shè)計(jì)、數(shù)據(jù)庫(kù)、機(jī)器學(xué)習(xí)、數(shù)據(jù)可視化等相關(guān)領(lǐng)域的知識(shí)。隨著數(shù)據(jù)量的爆發(fā),大數(shù)據(jù)可以看做數(shù)據(jù)科學(xué)的一個(gè)分支。
操作系統(tǒng)
Windows
Microsoft Windows是美國(guó)微軟公司開發(fā)的一套操作系統(tǒng),它問世于1985年,并逐漸成為家家戶戶人們最喜愛的操作系統(tǒng)。直至今天,Windows操作系統(tǒng)仍然是家用和辦公電腦操作系統(tǒng)的首選。由于病毒和漏洞的層出不窮,Windows的安全性和健壯性一直為人所詬病。
Mac OS X
Mac OS X是一套運(yùn)行于蘋果Macintosh系列電腦上的操作系統(tǒng)。它基于Unix內(nèi)核,以簡(jiǎn)單易用和穩(wěn)定可靠著稱。但曲高和寡,畢竟Mac OS X難以成為主流。
Linux
Linux是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和[網(wǎng)絡(luò)協(xié)議。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
Linux最擅長(zhǎng)的就是服務(wù)器系統(tǒng)。大數(shù)據(jù)平臺(tái)無論是Hadoop還是Spark,最好的搭配就是Linux。
Linux強(qiáng)大而豐富的文本工具如grep、sed、awk等可以在不動(dòng)用編程工具的前提下完成基本的數(shù)據(jù)處理流程。
基于Linux內(nèi)核的發(fā)行版本已經(jīng)有很多了,比較流行的諸如Ubuntu、Redhat、CentOS、Debian等等,目前使用最廣泛的是Ubuntu。
架構(gòu)
大數(shù)據(jù)的概念和技術(shù)流行之后,業(yè)界推出了很多基于大數(shù)據(jù)的軟件架構(gòu),其中最有名的就是Hadoop和Spark。
Hadoop
Hadoop是一款支持?jǐn)?shù)據(jù)分布式存儲(chǔ)和數(shù)據(jù)分布式計(jì)算的軟件平臺(tái),能夠在廉價(jià)硬件上構(gòu)建大型集群。Hadoop是Yahoo公司根據(jù)谷歌公司發(fā)表的MapReduce和Google文件系統(tǒng)(GFS)的論文開源實(shí)現(xiàn)而成。
簡(jiǎn)單來說,Hadoop架構(gòu)包括兩部分,一是HDFS分布式文件系統(tǒng),二是MapReduce編程模型。前者負(fù)責(zé)將數(shù)據(jù)分布式并容錯(cuò)地存儲(chǔ)在集群的各個(gè)節(jié)點(diǎn),后者負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行分布式的分發(fā)、計(jì)算和歸納。
Hadoop上的數(shù)據(jù)和應(yīng)用程序被分區(qū)成許多小部分,而每個(gè)部分都能在集群中的任意節(jié)點(diǎn)上運(yùn)行。
Hadoop一經(jīng)推出,立刻風(fēng)靡大數(shù)據(jù)領(lǐng)域并成為事實(shí)上的行業(yè)標(biāo)準(zhǔn),圍繞Hadoop的技術(shù)生態(tài)圈迅速建立起來,主要包括下面幾項(xiàng)技術(shù):
- HBase:Hadoop上的分布式非結(jié)構(gòu)化數(shù)據(jù)庫(kù)(NoSQL)。
- Hive:構(gòu)建于Hadoop之上的數(shù)據(jù)倉(cāng)庫(kù),通過一種類SQL語(yǔ)言HiveQL為用戶提供數(shù)據(jù)的歸納、查詢和分析等功能。
- Mahout:機(jī)器學(xué)習(xí)算法軟件包。
- Sqoop:結(jié)構(gòu)化數(shù)據(jù)如關(guān)系數(shù)據(jù)庫(kù)與Hadoop之間的數(shù)據(jù)轉(zhuǎn)換工具。
- ZooKeeper:是一種為Hadoop設(shè)計(jì)的高可用、高性能且一致的開源協(xié)調(diào)服務(wù),它提供了一項(xiàng)基本服務(wù):分布式鎖服務(wù)。
Spark
Spark是一個(gè)開源的計(jì)算框架,可以用來替代Hadoop的MapReduce模型。Hadoop的MapReduce在運(yùn)行過程中將中間數(shù)據(jù)存放到磁盤中,而Spark使用了內(nèi)存運(yùn)算技術(shù),能在數(shù)據(jù)尚未寫入硬盤時(shí)即在內(nèi)存內(nèi)分析運(yùn)算。所以Spark的運(yùn)算速度比Hadoop MapReduce快近100倍,即便是運(yùn)行程序于硬盤時(shí),Spark也能快上10倍速度。
Spark目前本身不包含分布式文件系統(tǒng),所以Spark經(jīng)常借用Hadoop的HDFS來實(shí)現(xiàn)分布式存儲(chǔ),而Spark本身負(fù)責(zé)分布式計(jì)算。
Spark的技術(shù)生態(tài)圈包含下列幾項(xiàng):
- Spark核心和彈性分布式數(shù)據(jù)集(RDDs):
Spark核心是整個(gè)項(xiàng)目的基礎(chǔ),提供了分布式任務(wù)分配、調(diào)度和基本的I/O功能。而其基礎(chǔ)的程序抽象則稱為彈性分布式數(shù)據(jù)集(RDDs)和作用其上的算子,RDDs是一個(gè)可以并行操作、有容錯(cuò)機(jī)制的數(shù)據(jù)集合。應(yīng)用程序操縱RDDs的方法類似于操縱本地端的數(shù)據(jù)集合。 - Spark SQL:Spark SQL 是一個(gè)用來處理結(jié)構(gòu)化數(shù)據(jù)的Spark組件,可以看作是一個(gè)分布式的SQL查詢引擎。
- Spark Streaming:是Spark實(shí)時(shí)任務(wù)處理模塊。
- MLlib:MLlib是Spark上分布式機(jī)器學(xué)習(xí)框架。Spark分布式內(nèi)存式的架構(gòu)比Hadoop磁盤式的Mahout快很多倍,擴(kuò)充性更好。
MLlib可使用許多常見的機(jī)器學(xué)習(xí)和統(tǒng)計(jì)算法,簡(jiǎn)化大規(guī)模機(jī)器學(xué)習(xí)時(shí)間。 - GraphX:是Spark上的分布式圖形處理框架。
編程語(yǔ)言
Hadoop基于Java語(yǔ)言,而Spark基于Scala語(yǔ)言,同時(shí)Spark通過PySpark支持Python語(yǔ)言。無論是Hadoop還是Spark,在其生態(tài)圈中都少不了SQL的身影,如Hive中的類SQL語(yǔ)言HQL、Spark-SQL等,再加上在統(tǒng)計(jì)分析領(lǐng)域如日中天的R語(yǔ)言,構(gòu)成了大數(shù)據(jù)環(huán)境下的編程語(yǔ)言生態(tài)圈。
Python
隨著大數(shù)據(jù)技術(shù)的不斷推進(jìn),Python已經(jīng)成為當(dāng)之無愧的大數(shù)據(jù)第一編程語(yǔ)言。Python的第三方庫(kù)numpy、scipy、matplotlib、pandas、keras等覆蓋了從科學(xué)計(jì)算到深度學(xué)習(xí)的全棧環(huán)境,構(gòu)成了Python語(yǔ)言數(shù)據(jù)科學(xué)的生態(tài)圈。在IEEE發(fā)布的編程語(yǔ)言流行度排行榜上,Python語(yǔ)言高居第一。
R
R語(yǔ)言是統(tǒng)計(jì)學(xué)家發(fā)明的一種語(yǔ)言,也可以說是一種統(tǒng)計(jì)軟件,主要用于數(shù)據(jù)統(tǒng)計(jì)和數(shù)據(jù)可視化。R語(yǔ)言強(qiáng)大的第三方軟件包涵蓋了從統(tǒng)計(jì)分析、科學(xué)計(jì)算、機(jī)器學(xué)習(xí)、數(shù)據(jù)可視化等數(shù)據(jù)科學(xué)的各個(gè)領(lǐng)域,從而和Python一起成為大數(shù)據(jù)時(shí)代最流行的編程語(yǔ)言。
Java
Hadoop是基于Java語(yǔ)言的,所以在Hadoop下編程就必須學(xué)習(xí)和使用Java。Java語(yǔ)言是目前編程領(lǐng)域市場(chǎng)份額最多的語(yǔ)言,隨著Android的流行和Hadoop的崛起,Java又煥發(fā)出新的活力。
SQL
SQL,指結(jié)構(gòu)化查詢語(yǔ)言,全稱是 Structured Query Language。SQL是訪問和處理關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)計(jì)算機(jī)語(yǔ)言。所有的關(guān)系型數(shù)據(jù)庫(kù)如Oracle、SQL Server、MySQL等都是使用SQL語(yǔ)言進(jìn)行數(shù)據(jù)庫(kù)的創(chuàng)建、查詢、修改等操作。數(shù)據(jù)科學(xué)離不開數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù)仍然是數(shù)據(jù)存儲(chǔ)的主要結(jié)構(gòu),所以SQL語(yǔ)言也是數(shù)據(jù)科學(xué)領(lǐng)域不可或缺的知識(shí)。
數(shù)據(jù)庫(kù)
據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)。在數(shù)據(jù)庫(kù)發(fā)展的歷史上,經(jīng)歷了層次型、網(wǎng)絡(luò)型到關(guān)系型的轉(zhuǎn)變過程。從上世紀(jì)七十年代到現(xiàn)在,關(guān)系型數(shù)據(jù)庫(kù)一統(tǒng)江湖。直到大數(shù)據(jù)時(shí)代,由于非結(jié)構(gòu)化數(shù)據(jù)的大量涌現(xiàn),才誕生了非關(guān)系型數(shù)據(jù)庫(kù)。
關(guān)系型數(shù)據(jù)庫(kù)
關(guān)系數(shù)據(jù)庫(kù)是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。關(guān)系模型是由埃IBM公司科學(xué)家Codd于1970年首先提出并發(fā)表論文,隨后大量的商業(yè)性的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)開始出現(xiàn),例如,Oracle、DB2、SQL Server等。開源技術(shù)興起后,又出現(xiàn)了MySQL、PostgreSQL等開源關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。關(guān)系數(shù)據(jù)庫(kù)依賴SQL語(yǔ)言進(jìn)行數(shù)據(jù)的管理和操縱。在大數(shù)據(jù)時(shí)代,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)仍然占據(jù)數(shù)據(jù)存儲(chǔ)的相當(dāng)部分份額。
非關(guān)系型數(shù)據(jù)庫(kù)
非關(guān)系型的數(shù)據(jù)庫(kù),也稱為NoSQL(Not only SQL)。隨著互聯(lián)網(wǎng)技術(shù)的興起和飛速發(fā)展,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付現(xiàn)代網(wǎng)站如Web 2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題。而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合以及多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)環(huán)境下數(shù)據(jù)存儲(chǔ)的應(yīng)用難題。目前流行的非關(guān)系型數(shù)據(jù)庫(kù)包括Hadoop中的基于列存儲(chǔ)的HBase、文檔類型的MogoDB等。深入學(xué)習(xí)一種非關(guān)系型數(shù)據(jù)庫(kù)在大數(shù)據(jù)時(shí)代是必不可少的。
數(shù)學(xué)基礎(chǔ)
在數(shù)據(jù)科學(xué)領(lǐng)域,要想站到更高的層次看問題,必要的數(shù)學(xué)基礎(chǔ)是不可少的。因?yàn)樵跀?shù)據(jù)分析中,幾乎所有的數(shù)據(jù)模型都可以用數(shù)學(xué)來描述。而其中最重要的就是線性代數(shù)和概率統(tǒng)計(jì)。
線性代數(shù)
很多的算法中,數(shù)據(jù)在數(shù)學(xué)中的表示就是向量或矩陣,對(duì)數(shù)據(jù)進(jìn)行處理很多時(shí)候就是對(duì)矩陣進(jìn)行運(yùn)算。另外,數(shù)據(jù)分析中的各種回歸算法本身就是線性代數(shù)的問題。
概率與統(tǒng)計(jì)
在數(shù)據(jù)的統(tǒng)計(jì)與分析過程中,需要統(tǒng)計(jì)學(xué)的基礎(chǔ)知識(shí),例如期望、方差、協(xié)方差、假設(shè)檢驗(yàn)等。很多的數(shù)據(jù)模型最終轉(zhuǎn)化為一個(gè)概率問題,不一定要得到完全確定的結(jié)果,只要滿足一定的概率就可以了。概率論在數(shù)據(jù)科學(xué)中應(yīng)用較多的有貝葉斯統(tǒng)計(jì)、隱馬爾可夫模型等。
凸優(yōu)化
機(jī)器學(xué)習(xí)的算法之所以有效,是因?yàn)閿?shù)據(jù)模型對(duì)數(shù)據(jù)的處理最終都會(huì)轉(zhuǎn)化為一系列的數(shù)學(xué)優(yōu)化問題,而且主要是凸優(yōu)化問題,例如梯度下降算法等。所以除了線性代數(shù)和概率統(tǒng)計(jì)之外,我們可能還需要一點(diǎn)微積分的知識(shí)。
數(shù)據(jù)分析
數(shù)據(jù)分析是指用適當(dāng)?shù)慕y(tǒng)計(jì)分析方法對(duì)收集來的大量數(shù)據(jù)進(jìn)行分析,提取有用信息和形成結(jié)論而對(duì)數(shù)據(jù)加以詳細(xì)研究和概括總結(jié)的過程。數(shù)據(jù)分析從統(tǒng)計(jì)學(xué)的角度可分為描述性數(shù)據(jù)分析、驗(yàn)證性數(shù)據(jù)分析和探索性數(shù)據(jù)分析,其中探索性數(shù)據(jù)分析側(cè)重于在數(shù)據(jù)中發(fā)現(xiàn)新的特征,這和機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘形成重疊。其實(shí),統(tǒng)計(jì)學(xué)習(xí)本來就是機(jī)器學(xué)習(xí)的一個(gè)分支。
數(shù)據(jù)分析流程一般可分為數(shù)據(jù)獲取、數(shù)據(jù)清洗、數(shù)據(jù)建模、數(shù)據(jù)可視化等幾個(gè)主要步驟。
數(shù)據(jù)獲取
近年來流行的網(wǎng)絡(luò)爬蟲就是數(shù)據(jù)獲取的一個(gè)重要方式,Python是編寫爬蟲程序的最佳選擇。當(dāng)然除了互聯(lián)網(wǎng)數(shù)據(jù)之外,物聯(lián)網(wǎng)下大量傳感器也是數(shù)據(jù)獲取的主要來源之一。
數(shù)據(jù)清洗
數(shù)據(jù)清洗主要對(duì)獲取的數(shù)據(jù)進(jìn)行整理和加工,包括對(duì)錯(cuò)誤數(shù)據(jù)的修正、對(duì)缺失數(shù)據(jù)的處理、異常值的檢測(cè)和處理以及數(shù)據(jù)標(biāo)準(zhǔn)化等等,最終形成可以應(yīng)用數(shù)據(jù)模型的干凈有效的數(shù)據(jù)。
數(shù)據(jù)建模和模型評(píng)估
這是數(shù)據(jù)分析過程中最重要的一步。按照業(yè)務(wù)需求建立不同模型,例如客戶流失預(yù)警、欺詐檢測(cè)等等。其中會(huì)應(yīng)用到機(jī)器學(xué)習(xí)的一些算法。最后,由業(yè)務(wù)專家進(jìn)行業(yè)務(wù)解釋和結(jié)果評(píng)價(jià)并最終將模型推廣應(yīng)用。
數(shù)據(jù)可視化
數(shù)據(jù)分析的結(jié)果最好的展示形式是圖表,特別是統(tǒng)計(jì)圖形,能事半功倍地說明數(shù)據(jù)分析結(jié)果的各個(gè)方面,正所謂一圖勝千言。Python中的matplotlib庫(kù)和R中的ggplot2軟件包是數(shù)據(jù)可視化編程領(lǐng)域的翹楚。
機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘
機(jī)器學(xué)習(xí)本身就是一門交叉學(xué)科,它匯集了統(tǒng)計(jì)學(xué)、線性代數(shù)、微積分、凸優(yōu)化等數(shù)學(xué)知識(shí)以及數(shù)據(jù)庫(kù)、算法、編程等計(jì)算機(jī)知識(shí)。數(shù)據(jù)挖掘的概念在很多場(chǎng)合和機(jī)器學(xué)習(xí)并不加以區(qū)分。嚴(yán)格來說,機(jī)器學(xué)習(xí)注重的是算法,而數(shù)據(jù)挖掘是利用機(jī)器學(xué)習(xí)算法在數(shù)據(jù)庫(kù)的數(shù)據(jù)中發(fā)現(xiàn)有價(jià)值的信息。Python的sckit-learn、Hadoop的Mahout、Spark的MLlib都集成了流行的機(jī)器學(xué)習(xí)算法,可以直接使用。機(jī)器學(xué)習(xí)的算法主要包括回歸、分類、聚類、關(guān)聯(lián)分析、支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)等等。
行業(yè)知識(shí)
一個(gè)好的數(shù)據(jù)分析師需要一定的行業(yè)知識(shí)。例如,如果做電商的銷售數(shù)據(jù)分析,就必須對(duì)銷售指標(biāo)的意義了如指掌;如果做銀行的信用卡客戶分析,就必須對(duì)銀行基本的業(yè)務(wù)有所了解。如果無法理解數(shù)據(jù)中的業(yè)務(wù),也就無法更好地利用數(shù)據(jù),也無法解讀數(shù)據(jù)分析最后的結(jié)論。
結(jié)論
綜上所述,作為大數(shù)據(jù)環(huán)境下數(shù)據(jù)科學(xué)的從業(yè)者、大專院校大數(shù)據(jù)相關(guān)專業(yè)的學(xué)生,需要學(xué)習(xí)的知識(shí)包括以線性代數(shù)、概率統(tǒng)計(jì)為主的數(shù)學(xué)知識(shí),打下良好的理論基礎(chǔ)。進(jìn)而學(xué)習(xí)大數(shù)據(jù)架構(gòu)平臺(tái)Hadoop和Spark,事實(shí)上業(yè)界兩大Hadoop發(fā)行公司Cloudera和Hortonworks都在其Hadoop發(fā)行版本中內(nèi)置了Spark。作為大數(shù)據(jù)的基礎(chǔ),學(xué)習(xí)一種關(guān)系型數(shù)據(jù)庫(kù)如MySQL和一種非關(guān)系型數(shù)據(jù)庫(kù)如HBase或MogoDB是必不可少的。而對(duì)于編程人員和數(shù)據(jù)分析師來說,學(xué)習(xí)Python和R語(yǔ)言能專注于數(shù)據(jù)分析的邏輯,達(dá)到事半功倍的效果。最后,作為進(jìn)階,學(xué)習(xí)和掌握機(jī)器學(xué)習(xí)以及深度學(xué)習(xí)的各種流行算法,以達(dá)到數(shù)據(jù)科學(xué)的高層境界。
總結(jié)
以上是生活随笔為你收集整理的大数据环境下数据科学的知识体系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统学习机器学习之监督学习
- 下一篇: 史上最全,100+大数据开源处理工具汇总