1. 程式人生 > >大資料開發學習路線圖,你都學會了嗎?

大資料開發學習路線圖,你都學會了嗎?

大資料路線;

 

在這裡還是要推薦下我自己建的大資料學習交流群:199427210,群裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料軟體開發相關的),包括我自己整理的一份2018最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴加入。
 

入門知識

推薦書籍

1、舍恩伯格的《大資料時代》;

2、巴拉巴西的《爆發》;

3、塗子沛的《大資料》;

4、吳軍《智慧時代》;

5、《大資料架構商業之路:從業務需求到技術方案》

 

工具技能

1、hadoop: 常用於離線的複雜的大資料處理

2、Spark:常用於離線的快速的大資料處理

3、Storm:常用於線上的實時的大資料處理

4、HDFS:Hadoop分散式檔案系統。HDFS有著高容錯性的特點,並且設計用來部署在低廉的硬體上。而且它提供高吞吐量來訪問應用程式的資料,適合那些有著超大資料集的應用程式。

5、Hbase:是一個分散式的、面向列的開源資料庫。該技術來源於 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化資料的分散式儲存系統”。就像Bigtable利用了Google檔案系統(File System)所提供的分散式資料儲存一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop專案的子專案。HBase不同於一般的關係資料庫,它是一個適合於非結構化資料儲存的資料庫。另一個不同的是HBase基於列的而不是基於行的模式。

6、Hive:hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉庫的統計分析。

7、Kafka:是一種高吞吐量的分散式釋出訂閱訊息系統,它可以處理消費者規模的網站中的所有動作流資料。 這種動作(網頁瀏覽,搜尋和其他使用者的行動)是在現代網路上的許多社會功能的一個關鍵因素。 這些資料通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 對於像Hadoop的一樣的日誌資料和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行載入機制來統一線上和離線的訊息處理,也是為了通過叢集來提供實時的消費。

8、redis:redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set –有序集合)和hash(雜湊型別)。這些資料型別都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。

 

 

資料探勘十大經典演算法

1:C4.5

C4.5就是一個決策樹演算法,它是決策樹(決策樹也就是做決策的節點間像一棵樹一樣的組織方式,其實是一個倒樹)核心演算法ID3的改進演算法,所以基本上了解了一半決策樹構造方法就能構造它。決策樹構造方法其實就是每次選擇一個好的特徵以及分裂點作為當前節點的分類條件。C4.5比ID3改進的地方時:

ID3選擇屬性用的是子樹的資訊增益(這裡可以用很多方法來定義資訊,ID3使用的是熵(entropy)(熵是一種不純度度量準則)),也就是熵的變化值,而C4.5用的是資訊增益率。也就是多了個率嘛。一般來說率就是用來取平衡用的,就像方差起的作用差不多,比如有兩個跑步的人,一個起點是100m/s的人、其1s後為110m/s;另一個人起速是1m/s、其1s後為11m/s。如果僅算加速度(單位時間速度增加量)那麼兩個就是一樣的了;但如果使用速度增加率(速度增加比例)來衡量,2個人差距就很大了。在這裡,其克服了用資訊增益選擇屬性時偏向選擇取值多的屬性的不足。在樹構造過程中進行剪枝,我在構造決策樹的時候好討厭那些掛著幾個元素的節點。對於這種節點,乾脆不考慮最好,不然很容易導致overfitting。對非離散資料都能處理,這個其實就是一個個式,看對於連續型的值在哪裡分裂好。也就是把連續性的資料轉化為離散的值進行處理。能夠對不完整資料進行處理,這個重要也重要,其實也沒那麼重要,缺失資料採用一些方法補上去就是了。

2:CART

CART也是一種決策樹演算法!相對於上著有條件實現一個節點下面有多個子樹的多元分類,CART只是分類兩個子樹,這樣實現起來稍稍簡便些。所以說CART演算法生成的決策樹是結構簡潔的二叉樹。

3:KNN(K Nearest Neighbours)

這個很簡單,就是看你周圍的K個人(樣本)中哪個類別的人佔的多,哪個多,那我就是多的那個。實現起來就是對每個訓練樣本都計算與其相似度,是Top-K個訓練樣本出來,看這K個樣本中哪個類別的多些,誰多跟誰。

4:Naive Bayes

(樸素貝葉斯NB)

NB認為各個特徵是獨立的,誰也不關誰的事。所以一個樣本(特徵值的集合,比如“資料結構”出現2次,“檔案”出現1次),可以通過對其所有出現特徵在給定類別的概率相乘。比如“資料結構”出現在類1的概率為0.5,“檔案”出現在類1的概率為0.3,則可認為其屬於類1的概率為0.5*0.5*0.3。

5:Support Vector Machine (支援向量機SVM)

SVM就是想找一個分類得最”好”的分類線/分類面(最近的一些兩類樣本到這個”線”的距離最遠)。這個沒具體實現過,上次聽課,那位老師自稱自己實現了SVM,敬佩其鑽研精神。常用的工具包是LibSVM、SVMLight、MySVM。

6:EM (期望最大化)

這個我認為就是假設資料時由幾個高斯分佈組成的,所以最後就是要求幾個高斯分佈的引數。通過先假設幾個值,然後通過反覆迭代,以期望得到最好的擬合。

7:Apriori

這個是做關聯規則用的。不知道為什麼,一提高關聯規則我就想到購物籃資料。這個沒實現過,不過也還要理解,它就是通過支援度和置信度兩個量來工作,不過對於Apriori,它通過頻繁項集的一些規律(頻繁項集的子集必定是頻繁項集等等啦)來減少計算複雜度。

8:PageRank

大名鼎鼎的PageRank大家應該都知道(Google靠此專利發家,其實也不能說發家啦!)。對於這個演算法我的理解就是:如果我指向你(網頁間的連線)則表示我承認你,則在計算你的重要性的時候可以加上我的一部分重要性(到底多少,要看我自己有多少和我共承認多少個人)。通過反覆這樣來,可以求的一個穩定的衡量各個人(網頁)重要性的值。不過這裡必須要做些限制(一個人的開始預設重要性都是1),不然那些值會越來越大越來越大。

9:K-Means

K-Means是一種最經典也是使用最廣泛的聚類方法,時至今日扔然有很多基於其的改進模型提出。K-Means的思想很簡單,對於一個聚類任務(你需要指明聚成幾個類,當然按照自然想法來說不應該需要指明類數,這個問題也是當前聚類任務的一個值得研究的課題),首先隨機選擇K個簇中心,然後反覆計算下面的過程直到所有簇中心不改變(簇集合不改變)為止:步驟1:對於每個物件,計算其與每個簇中心的相似度,把其歸入與其最相似的那個簇中。

步驟2:更新簇中心,新的簇中心通過計算所有屬於該簇的物件的平均值得到。

k-means 演算法的工作過程說明如下:首先從n個數據物件任意選擇k 個物件作為初始聚類中心;而對於所剩下其它物件,則根據它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然後再計算每個所獲新聚類的聚類中心(該聚類中所有物件的均值);不斷重複這一過程直到標準測度函式開始收斂為止。一般都採用均方差作為標準測度函式. k個聚類具有以下特點:各聚類本身儘可能的緊湊,而各聚類之間儘可能的分開。

10:AdaBoost

AdaBoost做分類的一般知道,它是一種boosting方法。這個不能說是一種演算法,應該是一種方法,因為它可以建立在任何一種分類演算法上,可以是決策樹,NB,SVM等。

Adaboost是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。其演算法本身是通過改變資料分佈來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。將修改過權值的新資料集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。使用adaboost分類器可以排除一些不必要的訓練資料,並將關鍵放在關鍵的訓練資料上面。

 

應用數學基礎

線性代數

1、標量、向量、矩陣和張量

2、矩陣和向量相乘

3、單位矩陣和逆矩陣

4、線性相關和生成子空間

5、範數

6、特殊型別的矩陣和向量

7、特徵分解

8、奇異值分解

9、Moore-Penrose 偽逆

10、跡運算

11、行列式

12、例項:主成分分析

概率與資訊理論

1、為什麼要使用概率?

2、隨機變數

3、概率分佈

4、邊緣概率

5、條件概率

6、條件概率的鏈式法則

7、獨立性和條件獨立性

8、期望、方差和協方差

9、常用概率分佈

10、常用函式的有用性質

11、貝葉斯規則

12、連續型變數的技術細節

13、資訊理論

14、結構化概率模型

數值計算

1、上溢和下溢

2、病態條件

3、基於梯度的優化方法

4、約束優化

5、例項:線性最小二乘

這些大資料所需要學習到的知識,你都學會了嗎?