在維基百科中對數(shù)據(jù)挖掘的解釋是:數(shù)據(jù)挖掘(英語:data mining)是一個跨*的計算機科學分支 它是用人工智能、機器學習、統(tǒng)計學和數(shù)據(jù)庫的交叉方法在相對較大型的數(shù)據(jù)集中發(fā)現(xiàn)模式的計算過程。數(shù)據(jù)挖掘過程的總體目標是從一個數(shù)據(jù)集中提取信息,并將其轉(zhuǎn)換成可理解的結(jié)構(gòu),以進一步使用。以下是小編為你整理的大數(shù)據(jù)實戰(zhàn)學習教程 ?
分類。分類是找出數(shù)據(jù)庫中一組數(shù)據(jù)對象的共同特點并按照分類模式將其劃分為不同的類,其目的是通過分類模型,將數(shù)據(jù)庫中的數(shù)據(jù)項映射到某個給定的類別。 ?
回歸分析。回歸分析方法反映的是事務(wù)數(shù)據(jù)庫中屬性值在時間上的特征,產(chǎn)生一個將數(shù)據(jù)項映射到一個實值預測變量的函數(shù),發(fā)現(xiàn)變量或?qū)傩蚤g的依賴關(guān)系,其主要研究問題包括數(shù)據(jù)序列的趨勢特征、數(shù)據(jù)序列的預測以及數(shù)據(jù)間的相關(guān)關(guān)系等。
?
聚類。聚類分析是把一組數(shù)據(jù)按照相似性和差異性分為幾個類別,其目的是使得屬于同一類別的數(shù)據(jù)間的相似性盡可能大,不同類別中的數(shù)據(jù)間的相似性盡可能小。 ?
關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則是描述數(shù)據(jù)庫中數(shù)據(jù)項之間所存在的關(guān)系的規(guī)則,即根據(jù)一個事務(wù)中某些項的出現(xiàn)可導出另一些項在同一事務(wù)中也出現(xiàn),即隱藏在數(shù)據(jù)間的關(guān)聯(lián)或相互關(guān)系。 ?
導入/預處理 ?
雖然采集端本身會有很多數(shù)據(jù)庫,但是如果要對這些海量數(shù)據(jù)進行有效的分析,還是應該將這些來自前端的數(shù)據(jù)導入到一個集中的大型分布式數(shù)據(jù)庫,或者分布式存儲集群,并且可以在導入基礎(chǔ)上做一些簡單的清洗和預處理工作。也有一些用戶會在導入時使用來自Twitter的Storm來對數(shù)據(jù)進行流式計算,來滿足部分業(yè)務(wù)的實時計算需求。導入與預處理過程的特點和挑戰(zhàn)主要是導入的數(shù)據(jù)量大,每秒鐘的導入量經(jīng)常會達到百兆,甚至千兆級別。 ?
挖掘 ?
與前面統(tǒng)計和分析過程不同的是,數(shù)據(jù)挖掘一般沒有什么預先設(shè)定好的主題,主要是在現(xiàn)有數(shù)據(jù)上面進行基于各種算法的計算,從而起到預測的效果,從而實現(xiàn)一些高級別數(shù)據(jù)分析的需求。比較典型算法有用于聚類的K-Means、用于統(tǒng)計學習的SVM和用于分類的Naive Bayes,主要使用的工具有HadoopMahout等。該過程的特點和挑戰(zhàn)主要是用于挖掘的算法很復雜,并且計算涉及的數(shù)據(jù)量和計算量都很大,還有,常用數(shù)據(jù)挖掘算法都以單線程為主。 ?
Hadoop和Hive ?
一群基于Java的工具被開發(fā)出來以滿足數(shù)據(jù)處理的巨大需求。Hadoop作為*的基于Java的框架用于批處理數(shù)據(jù)已經(jīng)點燃了大家的熱情。Hadoop比其他一些處理工具慢,但它出奇的準確,因此被廣泛用于后端分析。它和Hive——一個基于查詢并且運行在頂部的框架可以很好地結(jié)對工作。 ?
Scala ?
Scala是另一種基于Java的語言,并且和Java相同的是,它正日益成為大規(guī)模機器學習,或構(gòu)建高層次算法的工具。它富有表現(xiàn)力,并且還能夠構(gòu)建健壯的系統(tǒng)。 ?
“Java就像是建造時的鋼鐵,而Scala則像黏土,因為你之后可以將之放入窯內(nèi)轉(zhuǎn)變成鋼鐵,”Driscoll說。
?
Kafka和Storm ?
那么,當你需要快速實時的分析時又該怎么辦呢?Kafka會成為你的好朋友。它大概5年前就已經(jīng)出現(xiàn)了,但是直到最近才成為流處理的流行框架。 ?
Kafka,誕生于LinkedIn內(nèi)部,是一個超快速的查詢消息系統(tǒng)。Kafka的缺點?好吧,它太快了。在實時操作時會導致自身出錯,并且偶爾地會遺漏東西。 ?
“有精度和速度之間有一個權(quán)衡,”Driscoll說, “因此,硅谷所有的大型高科技公司都會使用兩條管道:Kafka或Storm用于實時處理,然后Hadoop用于批處理系統(tǒng),此時雖然是緩慢的但超級準確。” ?
Storm是用Scala編寫的另一個框架,它在硅谷中因為流處理而受到了大量的青睞。它被Twitter納入其中,勿庸置疑的,這樣一來,Twitter就能在快速事件處理中得到巨大的裨益。 ?
大數(shù)據(jù)系統(tǒng)應包含的功能模塊
大數(shù)據(jù)系統(tǒng)應該包含的功能模塊,首先是能夠從多種數(shù)據(jù)源獲取數(shù)據(jù)的功能,數(shù)據(jù)的預處理(例如,清洗,驗證等),存儲數(shù)據(jù),數(shù)據(jù)處理、數(shù)據(jù)分析等(例如做預測分析,生成在線使用建議等等),*呈現(xiàn)和可視化的總結(jié)、匯總結(jié)果。
下圖描述了大數(shù)據(jù)系統(tǒng)的這些高層次的組件:
本節(jié)的其余部分簡要說明了每個組分 ?
2.1 各種各樣的數(shù)據(jù)源
當今的IT生態(tài)系統(tǒng),需要對各種不同種類來源的數(shù)據(jù)進行分析。這些來源可能是從在線Web應用程序,批量上傳或feed,流媒體直播數(shù)據(jù),來自工業(yè)、手持、家居傳感的任何東西等等。
顯然從不同數(shù)據(jù)源獲取的數(shù)據(jù)具有不同的格式、使用不同的協(xié)議。例如,在線的Web應用程序可能會使用SOAP / XML格式通過HTTP發(fā)送數(shù)據(jù),feed可能會來自于CSV文件,其他設(shè)備則可能使用MQTT通信協(xié)議。
由于這些單獨的系統(tǒng)的性能是不在大數(shù)據(jù)系統(tǒng)的控制范圍之內(nèi),并且通常這些系統(tǒng)都是外部應用程序,由第三方供應商或團隊提供并維護,所以本文將不會在深入到這些系統(tǒng)的性能分析中去。 ?
2.2 數(shù)據(jù)采集
*步,獲取數(shù)據(jù)。這個過程包括分析,驗證,清洗,轉(zhuǎn)換,去重,然后存到適合你們公司的一個持久化設(shè)備中(硬盤、存儲、云等)。
在下面的章節(jié)中,本文將重點介紹一些關(guān)于如何獲取數(shù)據(jù)方面的非常重要的技巧。請注意,本文將不討論各種數(shù)據(jù)采集技術(shù)的優(yōu)缺點。 ?
2.3 存儲數(shù)據(jù)
第二步,一旦數(shù)據(jù)進入大數(shù)據(jù)系統(tǒng),清洗,并轉(zhuǎn)化為所需格式時,這些過程都將在數(shù)據(jù)存儲到一個合適的持久化層中進行。
在下面的章節(jié)中,本文將介紹一些存儲方面的*實踐(包括邏輯上和物理上)。在本文結(jié)尾也會討論一部分涉及數(shù)據(jù)安全方面的問題。 ?
2.4 數(shù)據(jù)處理和分析
第三步,在這一階段中的一部分干凈數(shù)據(jù)是去規(guī)范化的,包括對一些相關(guān)的數(shù)據(jù)集的數(shù)據(jù)進行一些排序,在規(guī)定的時間間隔內(nèi)進行數(shù)據(jù)結(jié)果歸集,執(zhí)行機器學習算法,預測分析等。
在下面的章節(jié)中,本文將針對大數(shù)據(jù)系統(tǒng)性能優(yōu)化介紹一些進行數(shù)據(jù)處理和分析的*實踐。 ?
2.5 數(shù)據(jù)的可視化和數(shù)據(jù)展示
*一個步驟,展示經(jīng)過各個不同分析算法處理過的數(shù)據(jù)結(jié)果。該步驟包括從預先計算匯總的結(jié)果(或其他類似數(shù)據(jù)集)中的讀取和用一種友好界面或者表格(圖表等等)的形式展示出來。這樣便于對于數(shù)據(jù)分析結(jié)果的理解。