《机器学习实战》总结
用了大概一個月的時間,終于把《機器學(xué)習(xí)實戰(zhàn)》這本書看了一遍,書中的代碼也全部敲了一遍。下來就總結(jié)下書中提到的各個算法。
(注意,本博客適用于復(fù)習(xí),不適用新手)
一、監(jiān)督學(xué)習(xí)
我的理解就是給的數(shù)據(jù)是有結(jié)果的,根據(jù)這些已經(jīng)明確結(jié)果的數(shù)據(jù)去推測那些沒有明確結(jié)果的數(shù)據(jù)的結(jié)果。
監(jiān)督學(xué)習(xí)可簡單分為分類和回歸:
分類常用于處理標稱型數(shù)據(jù)(數(shù)據(jù)結(jié)果為0,1或者結(jié)果為-1,1;即結(jié)果是確定的幾個值);
回歸既可以用于處理標稱型數(shù)據(jù)又可以用于處理連續(xù)性數(shù)據(jù)。
1.分類
常用的分類方法有:k-近鄰算法(kNN)、決策樹、樸素貝葉斯、Logistic回歸、支持向量機(SVM)、AdaBoost元算法。
我們挨個看。
1.1 k-近鄰算法(kNN)
kNN算法的主要思想是 將 待分類的點分類至 離待預(yù)測的點最近的k個點出現(xiàn)最多的那個分類結(jié)果。
優(yōu)點:精度高、對異常值不敏感、無數(shù)據(jù)輸入假定。
缺點:計算復(fù)雜度高、空間復(fù)雜度高。
適用數(shù)據(jù)類型:數(shù)值型和標稱型
1.2 決策樹
根據(jù)訓(xùn)練數(shù)據(jù)創(chuàng)建一棵決策樹,判斷待分類數(shù)據(jù)類別時要從根節(jié)點開始比較判斷,一直到葉子節(jié)點,該葉子節(jié)點就是待分類數(shù)據(jù)的類別了。
優(yōu)點:計算復(fù)雜度不高,輸出結(jié)果容易理解,對中間值的缺失不敏感,可以處理不相關(guān)特征數(shù)據(jù)。
缺點:可能會產(chǎn)生過度匹配問題。
適用數(shù)據(jù)類型:數(shù)值型和標稱型
1.3 樸素貝葉斯
通過對訓(xùn)練數(shù)據(jù)進行分析,再結(jié)合貝葉斯公式計算條件概率,判斷將待分類數(shù)據(jù)分到哪個類別下的概率最大,就將其分到那個類別。
優(yōu)點:在數(shù)據(jù)較少的情況下仍然有效,可以處理多類別問題。
缺點:對于輸入數(shù)據(jù)的準備方式較為敏感。
適用數(shù)據(jù)類型:標稱型
1.4 Logistic回歸
這一章主要是講了梯度上升法,故而放在分類里。Logistic回歸的目的是尋找一個非線性函數(shù)Sigmoid(一種階躍函數(shù))的最佳擬合參數(shù),求解過程可以由最優(yōu)化算法來完成(在每個特征上都乘以一個回歸系數(shù),然后把所有結(jié)果相加,將總和代入Sigmoid函數(shù),得到一個0-1的數(shù)值,數(shù)值>0.5歸于類別1,<0.5歸于類別0,最優(yōu)化算法就是在找這樣一個最佳的回歸系數(shù))。在最優(yōu)化算法中,最常用的就是梯度上升算法(也有的人在用梯度下降算法,效果類似),而梯度上升算法又可以簡化為隨機梯度上升算法(隨機的意思是梯度上升算法中的每次移動的步長都會更新)。
用一個公式來表示:
Sigmoid函數(shù)的輸入為
要注意的是
優(yōu)點:計算代價不高,易于理解和實現(xiàn)。
缺點:容易欠擬合,分類精度可能不高
適用數(shù)據(jù)類型:數(shù)值型和標稱型
1.5 支持向量機(SVM)
SVM算法就是找到一個可以將兩個類別分開的超平面,且此超平面滿足在所有可以將兩個類別分開的超平面中,它里最近的那些點的距離之和是最大的。
優(yōu)點:泛化錯誤率低,計算開銷不大,結(jié)果易解釋。
缺點:對參數(shù)調(diào)節(jié)和核函數(shù)的選擇敏感,原始分類器不加修改僅適用于處理二分類問題。
適用數(shù)據(jù)類型:數(shù)值型和標稱型
1.6 AdaBoost元算法
將不同的分類方法結(jié)合起來叫元算法(或集成方法)。AdaBoost算法的流程:訓(xùn)練數(shù)據(jù)中的每個樣本,并賦予其一個權(quán)重,這些權(quán)重構(gòu)成了一個向量D。一開始,這些權(quán)重值都初始化成相等值。首先在訓(xùn)練數(shù)據(jù)上訓(xùn)練出一個弱分類器并計算該分類起的錯誤率,然后在同一數(shù)據(jù)集上再次訓(xùn)練若弱分類器。在二次訓(xùn)練中,第一次分對的樣本的權(quán)重會減少,第一次分錯的樣本的權(quán)重會提高。為每個分類器分配一個權(quán)重值(基于每個弱分類器的錯誤率),不斷迭代,直到錯誤率為0,或弱分類器的數(shù)目達到用戶指定的值為止。
優(yōu)點:泛化錯誤率低,易編碼,可以應(yīng)用在大部分分類器上,無參數(shù)調(diào)整。
缺點:對離群點敏感。
適用數(shù)據(jù)類型:數(shù)值型和標稱型
2.回歸
與分類一樣,回歸也是預(yù)測目標值的過程。回歸與分類的不同點在于,前者預(yù)測連續(xù)型變量,而后者預(yù)測離散型變量。
2.1 線性回歸
線性回歸分為標準線性回歸與局部加權(quán), 標準線性回歸自不必多說,簡單說一下局部加權(quán)線性回歸。用高斯分布(類似正態(tài)分布)給預(yù)測點附近的點賦予更高的權(quán)值來計算回歸系數(shù)
優(yōu)點:結(jié)果易于理解,計算上不復(fù)雜
缺點:對非線性的數(shù)據(jù)擬合不好
適用數(shù)據(jù)類型:數(shù)值型和標稱型數(shù)據(jù)
2.2 嶺回歸
當(dāng)數(shù)據(jù)的樣本數(shù)比特征數(shù)還少的時候,矩陣x.T*x的逆不能直接計算。即便當(dāng)樣本數(shù)比特征數(shù)多時,它仍有可能無法直接計算,這個時候就可以用嶺回歸。簡單來說,嶺回歸就是在線性回歸的矩陣x.T*x上加一個λ*I從而使得矩陣非奇異(I是一個m*m的單位矩陣)。
嶺回歸也屬于線性回歸。它相當(dāng)于對回歸系數(shù)的大小進行了限制,這是一種縮減法。
2.3 樹回歸
樹回歸在我看來有點類似與分段函數(shù),構(gòu)建樹的過程就是將數(shù)據(jù)根據(jù)特征切分成葉子節(jié)點,預(yù)測過程就是根據(jù)節(jié)點特征尋找葉子節(jié)點的過程。值得注意的是,由于構(gòu)建樹的過程可能會導(dǎo)致傾向數(shù)據(jù)過擬合,所以有兩種常用的剪枝算法:預(yù)剪枝和后剪枝。
優(yōu)點:可以對復(fù)雜和非線性的數(shù)據(jù)建模
缺點:結(jié)果不易理解
適用數(shù)據(jù)類型:數(shù)值型和標稱型
二、無監(jiān)督學(xué)習(xí)
1.K均值(K-means)聚類
K均值聚類和K近鄰分類有點類似,但也有不同。K近鄰是已知結(jié)果有幾種分類。而K均值則結(jié)果未知。K均值聚類的過程是這樣的,先選取K個隨機初始點作為質(zhì)心,然后將所有數(shù)據(jù)根據(jù)這些質(zhì)心分類,計算分類后的類別的質(zhì)心,根據(jù)這個新的質(zhì)心再調(diào)整分類結(jié)果,這個過程不斷循環(huán),知道質(zhì)心的位置不再變化。值得注意的是還有一個二分K-均值算法,它的流程是,先將整個數(shù)據(jù)作為一個簇,計算總誤差,再將這個簇一分為二,計算總誤差,選取總誤差較大(或者較小)的簇再一份為二,選取現(xiàn)在所有簇中總誤差較大(或者較小)的簇再進行劃分,直到得到用戶想要的K個分類。
優(yōu)點:容易實現(xiàn)。
缺點:可能收斂到局部最小值,在大規(guī)模數(shù)據(jù)集上收斂緩慢。
適用數(shù)據(jù)類型:數(shù)值型數(shù)據(jù)
2.關(guān)聯(lián)規(guī)則(Apriori算法)
關(guān)聯(lián)規(guī)則算法可以參考經(jīng)典的啤酒尿布的故事,主要思想是尋找頻繁項集。Apriori算法的原理是說如果一個元素項是不頻繁的,那么那些包含該元素的超集也是不頻繁的。Apriori算法從單元素項開始,通過組合滿足最小支持度要求的項集來形成更大的集合。
優(yōu)點:易編碼實現(xiàn)。
缺點:在大數(shù)據(jù)集上可能較慢。
適用數(shù)據(jù)類型:數(shù)值型和標稱型
3.關(guān)聯(lián)規(guī)則(FP-growth算法)
FP-growth算法相比較與Apriori算法可以大大提高運算速度。FP-growth算法主要是構(gòu)建了一棵FP樹,然后從FP樹中挖掘頻繁項集。FP樹的結(jié)構(gòu)如下圖所示:(圖片來自網(wǎng)絡(luò),侵刪)
值得注意的是,FP樹的節(jié)點數(shù)值是可以重復(fù)的;與FP樹一同構(gòu)建的還有一個頭指針表。
優(yōu)點:一般要快于Apriori。
缺點:實現(xiàn)比較困難,在某些數(shù)據(jù)集上性能會下降。
適用數(shù)據(jù)類型:標稱型
三、其他
1.PCA簡化數(shù)據(jù)
主成分分析(PCA)可以對數(shù)據(jù)進行降維處理。它是通過沿著數(shù)據(jù)最大方差的方向旋轉(zhuǎn)坐標軸來實現(xiàn)的。選擇方差最大的方向作為第一條坐標軸,后續(xù)坐標軸則與前面的坐標軸正交。切方差矩陣上的特征值分析可以用一系列的正交坐標軸來獲取。
優(yōu)點:降低數(shù)據(jù)的復(fù)雜性,識別最重要的多個特征。
缺點:不一定需要,且可能損失有用信息。
適用數(shù)據(jù)類型:數(shù)值型
2.SVD簡化數(shù)據(jù)
奇異值分解(SVD)可以讓我們用小得多的數(shù)據(jù)集來表示原始數(shù)據(jù)集。SVD的示意圖如下:(圖片取自網(wǎng)絡(luò),侵刪)
優(yōu)點:簡化數(shù)據(jù),去除噪聲,提高算法的結(jié)果。
缺點:數(shù)據(jù)的轉(zhuǎn)換可能難以理解。
適用數(shù)據(jù)類型:數(shù)值型
3.MapReduce
當(dāng)數(shù)據(jù)量很大時,一臺計算機已經(jīng)不能滿足運算了,這個時候就可以用MapReduce來將單個作業(yè)分配給多個計算機執(zhí)行。它的框架可參考如下圖:(圖片取自網(wǎng)絡(luò),侵刪)
將輸入數(shù)據(jù)分配給多臺計算機上做運算(map過程),將它們的輸出通過某種方式組合(一般還會排序)。將結(jié)果再分成多個小份分給多臺計算機進行工作(reduce過程),最后得到最終結(jié)果。reduce過程可以重復(fù)多次。
優(yōu)點:可在短時間內(nèi)完成大量工作。
缺點:算法必須進過重寫,需要對系統(tǒng)工程有一定的理解。
適用數(shù)據(jù)類型:數(shù)值型和標稱型
總結(jié)
以上是生活随笔為你收集整理的《机器学习实战》总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《机器学习实战》第十五章 MapRedu
- 下一篇: 《集体智慧编程》第二章(一)