入門知識(shí)
推薦書籍
1、舍恩伯格的《大數(shù)據(jù)時(shí)代》;
2、巴拉巴西的《爆發(fā)》;
3、涂子沛的《大數(shù)據(jù)》;
4、吳軍《智能時(shí)代》;
5、《大數(shù)據(jù)架構(gòu)商業(yè)之路:從業(yè)務(wù)需求到技術(shù)方案》
工具技能
1、hadoop: 常用于離線的復(fù)雜的大數(shù)據(jù)處理
2、Spark:常用于離線的快速的大數(shù)據(jù)處理
3、Storm:常用于在線的實(shí)時(shí)的大數(shù)據(jù)處理
4、HDFS:Hadoop分布式文件系統(tǒng)。HDFS有著高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的硬件上。而且它提供高吞吐量來(lái)訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序。
5、Hbase:是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù)。該技術(shù)來(lái)源于 Fay Chang 所撰寫的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。另一個(gè)不同的是HBase基于列的而不是基于行的模式。
6、Hive:hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的sql查詢功能,可以將sql語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。 其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類SQL語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì),不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析。
7、Kafka:是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者規(guī)模的網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。 這種動(dòng)作(網(wǎng)頁(yè)瀏覽,搜索和其他用戶的行動(dòng))是在現(xiàn)代網(wǎng)絡(luò)上的許多社會(huì)功能的一個(gè)關(guān)鍵因素。 這些數(shù)據(jù)通常是由于吞吐量的要求而通過處理日志和日志聚合來(lái)解決。 對(duì)于像Hadoop的一樣的日志數(shù)據(jù)和離線分析系統(tǒng),但又要求實(shí)時(shí)處理的限制,這是一個(gè)可行的解決方案。Kafka的目的是通過Hadoop的并行加載機(jī)制來(lái)統(tǒng)一線上和離線的消息處理,也是為了通過集群來(lái)提供實(shí)時(shí)的消費(fèi)。
8、redis:redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。
數(shù)據(jù)挖掘十大經(jīng)典算法
1:C4.5
C4.5就是一個(gè)決策樹算法,它是決策樹(決策樹也就是做決策的節(jié)點(diǎn)間像一棵樹一樣的組織方式,其實(shí)是一個(gè)倒樹)核心算法ID3的改進(jìn)算法,所以基本上了解了一半決策樹構(gòu)造方法就能構(gòu)造它。決策樹構(gòu)造方法其實(shí)就是每次選擇一個(gè)好的特征以及分裂點(diǎn)作為當(dāng)前節(jié)點(diǎn)的分類條件。C4.5比ID3改進(jìn)的地方時(shí):
ID3選擇屬性用的是子樹的信息增益(這里可以用很多方法來(lái)定義信息,ID3使用的是熵(entropy)(熵是一種不純度度量準(zhǔn)則)),也就是熵的變化值,而C4.5用的是信息增益率。也就是多了個(gè)率嘛。一般來(lái)說(shuō)率就是用來(lái)取平衡用的,就像方差起的作用差不多,比如有兩個(gè)跑步的人,一個(gè)起點(diǎn)是100m/s的人、其1s后為110m/s;另一個(gè)人起速是1m/s、其1s后為11m/s。如果僅算加速度(單位時(shí)間速度增加量)那么兩個(gè)就是一樣的了;但如果使用速度增加率(速度增加比例)來(lái)衡量,2個(gè)人差距就很大了。在這里,其克服了用信息增益選擇屬性時(shí)偏向選擇取值多的屬性的不足。在樹構(gòu)造過程中進(jìn)行剪枝,我在構(gòu)造決策樹的時(shí)候好討厭那些掛著幾個(gè)元素的節(jié)點(diǎn)。對(duì)于這種節(jié)點(diǎn),干脆不考慮最好,不然很容易導(dǎo)致overfitting。對(duì)非離散數(shù)據(jù)都能處理,這個(gè)其實(shí)就是一個(gè)個(gè)式,看對(duì)于連續(xù)型的值在哪里分裂好。也就是把連續(xù)性的數(shù)據(jù)轉(zhuǎn)化為離散的值進(jìn)行處理。能夠?qū)Σ煌暾麛?shù)據(jù)進(jìn)行處理,這個(gè)重要也重要,其實(shí)也沒那么重要,缺失數(shù)據(jù)采用一些方法補(bǔ)上去就是了。
2:CART
CART也是一種決策樹算法!相對(duì)于上著有條件實(shí)現(xiàn)一個(gè)節(jié)點(diǎn)下面有多個(gè)子樹的多元分類,CART只是分類兩個(gè)子樹,這樣實(shí)現(xiàn)起來(lái)稍稍簡(jiǎn)便些。所以說(shuō)CART算法生成的決策樹是結(jié)構(gòu)簡(jiǎn)潔的二叉樹。
3:KNN(K Nearest Neighbours)
這個(gè)很簡(jiǎn)單,就是看你周圍的K個(gè)人(樣本)中哪個(gè)類別的人占的多,哪個(gè)多,那我就是多的那個(gè)。實(shí)現(xiàn)起來(lái)就是對(duì)每個(gè)訓(xùn)練樣本都計(jì)算與其相似度,是Top-K個(gè)訓(xùn)練樣本出來(lái),看這K個(gè)樣本中哪個(gè)類別的多些,誰(shuí)多跟誰(shuí)。
4:Naive Bayes
(樸素貝葉斯NB)
NB認(rèn)為各個(gè)特征是獨(dú)立的,誰(shuí)也不關(guān)誰(shuí)的事。所以一個(gè)樣本(特征值的集合,比如“數(shù)據(jù)結(jié)構(gòu)”出現(xiàn)2次,“文件”出現(xiàn)1次),可以通過對(duì)其所有出現(xiàn)特征在給定類別的概率相乘。比如“數(shù)據(jù)結(jié)構(gòu)”出現(xiàn)在類1的概率為0.5,“文件”出現(xiàn)在類1的概率為0.3,則可認(rèn)為其屬于類1的概率為0.5*0.5*0.3。
5:Support Vector Machine (支持向量機(jī)SVM)
SVM就是想找一個(gè)分類得最”好”的分類線/分類面(最近的一些兩類樣本到這個(gè)”線”的距離最遠(yuǎn))。這個(gè)沒具體實(shí)現(xiàn)過,上次聽課,那位老師自稱自己實(shí)現(xiàn)了SVM,敬佩其鉆研精神。常用的工具包是LibSVM、SVMLight、MySVM。
6:EM (期望最大化)
這個(gè)我認(rèn)為就是假設(shè)數(shù)據(jù)時(shí)由幾個(gè)高斯分布組成的,所以最后就是要求幾個(gè)高斯分布的參數(shù)。通過先假設(shè)幾個(gè)值,然后通過反復(fù)迭代,以期望得到最好的擬合。
7:Apriori
這個(gè)是做關(guān)聯(lián)規(guī)則用的。不知道為什么,一提高關(guān)聯(lián)規(guī)則我就想到購(gòu)物籃數(shù)據(jù)。這個(gè)沒實(shí)現(xiàn)過,不過也還要理解,它就是通過支持度和置信度兩個(gè)量來(lái)工作,不過對(duì)于Apriori,它通過頻繁項(xiàng)集的一些規(guī)律(頻繁項(xiàng)集的子集必定是頻繁項(xiàng)集等等啦)來(lái)減少計(jì)算復(fù)雜度。
8:PageRank
大名鼎鼎的PageRank大家應(yīng)該都知道(Google靠此專利發(fā)家,其實(shí)也不能說(shuō)發(fā)家啦!)。對(duì)于這個(gè)算法我的理解就是:如果我指向你(網(wǎng)頁(yè)間的連接)則表示我承認(rèn)你,則在計(jì)算你的重要性的時(shí)候可以加上我的一部分重要性(到底多少,要看我自己有多少和我共承認(rèn)多少個(gè)人)。通過反復(fù)這樣來(lái),可以求的一個(gè)穩(wěn)定的衡量各個(gè)人(網(wǎng)頁(yè))重要性的值。不過這里必須要做些限制(一個(gè)人的開始默認(rèn)重要性都是1),不然那些值會(huì)越來(lái)越大越來(lái)越大。
9:K-Means
K-Means是一種最經(jīng)典也是使用最廣泛的聚類方法,時(shí)至今日扔然有很多基于其的改進(jìn)模型提出。K-Means的思想很簡(jiǎn)單,對(duì)于一個(gè)聚類任務(wù)(你需要指明聚成幾個(gè)類,當(dāng)然按照自然想法來(lái)說(shuō)不應(yīng)該需要指明類數(shù),這個(gè)問題也是當(dāng)前聚類任務(wù)的一個(gè)值得研究的課題),首先隨機(jī)選擇K個(gè)簇中心,然后反復(fù)計(jì)算下面的過程直到所有簇中心不改變(簇集合不改變)為止:步驟1:對(duì)于每個(gè)對(duì)象,計(jì)算其與每個(gè)簇中心的相似度,把其歸入與其最相似的那個(gè)簇中。
步驟2:更新簇中心,新的簇中心通過計(jì)算所有屬于該簇的對(duì)象的平均值得到。
k-means 算法的工作過程說(shuō)明如下:首先從n個(gè)數(shù)據(jù)對(duì)象任意選擇k 個(gè)對(duì)象作為初始聚類中心;而對(duì)于所剩下其它對(duì)象,則根據(jù)它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然后再計(jì)算每個(gè)所獲新聚類的聚類中心(該聚類中所有對(duì)象的均值);不斷重復(fù)這一過程直到標(biāo)準(zhǔn)測(cè)度函數(shù)開始收斂為止。一般都采用均方差作為標(biāo)準(zhǔn)測(cè)度函數(shù). k個(gè)聚類具有以下特點(diǎn):各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。
10:AdaBoost
AdaBoost做分類的一般知道,它是一種boosting方法。這個(gè)不能說(shuō)是一種算法,應(yīng)該是一種方法,因?yàn)樗梢越⒃谌魏我环N分類算法上,可以是決策樹,NB,SVM等。
Adaboost是一種迭代算法,其核心思想是針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),然后把這些弱分類器集合起來(lái),構(gòu)成一個(gè)更強(qiáng)的最終分類器(強(qiáng)分類器)。其算法本身是通過改變數(shù)據(jù)分布來(lái)實(shí)現(xiàn)的,它根據(jù)每次訓(xùn)練集之中每個(gè)樣本的分類是否正確,以及上次的總體分類的準(zhǔn)確率,來(lái)確定每個(gè)樣本的權(quán)值。將修改過權(quán)值的新數(shù)據(jù)集送給下層分類器進(jìn)行訓(xùn)練,最后將每次訓(xùn)練得到的分類器最后融合起來(lái),作為最后的決策分類器。使用adaboost分類器可以排除一些不必要的訓(xùn)練數(shù)據(jù),并將關(guān)鍵放在關(guān)鍵的訓(xùn)練數(shù)據(jù)上面。
應(yīng)用數(shù)學(xué)基礎(chǔ)
線性代數(shù)
1、標(biāo)量、向量、矩陣和張量
2、矩陣和向量相乘
3、單位矩陣和逆矩陣
4、線性相關(guān)和生成子空間
5、范數(shù)
6、特殊類型的矩陣和向量
7、特征分解
8、奇異值分解
9、Moore-Penrose 偽逆
10、跡運(yùn)算
11、行列式
12、實(shí)例:主成分分析
概率與信息論
1、為什么要使用概率?
2、隨機(jī)變量
3、概率分布
4、邊緣概率
5、條件概率
6、條件概率的鏈?zhǔn)椒▌t
7、獨(dú)立性和條件獨(dú)立性
8、期望、方差和協(xié)方差
9、常用概率分布
10、常用函數(shù)的有用性質(zhì)
11、貝葉斯規(guī)則
12、連續(xù)型變量的技術(shù)細(xì)節(jié)
13、信息論
14、結(jié)構(gòu)化概率模型
數(shù)值計(jì)算
1、上溢和下溢
2、病態(tài)條件
3、基于梯度的優(yōu)化方法
4、約束優(yōu)化
5、實(shí)例:線性最小二乘
這些大數(shù)據(jù)所需要學(xué)習(xí)到的知識(shí),你都學(xué)會(huì)了嗎?