1. 程式人生 > >第六講:決策樹+隨機森林+AdaBoost(中)

第六講:決策樹+隨機森林+AdaBoost(中)

主要內容:


4 整合學習(下)

4.1決策樹

    4.1.1  CART模型(見上講)  

    4.1.2  特徵選擇

    4.1.3  樹的生成

    4.1.4  模型選擇

4.2 隨機森林

    4.2.1 Randomized Decision Trees

    4.2.2 Random Forests

    4.2.3 Extremely Randomized trees

    4.2.4 Ferns


本講知識體系圖


4 整合學習(下)

4.1決策樹  

4.1.1  CART模型(見上講)

 

分類與迴歸的區別:分類構建的決策樹的葉子結點是一個類別,葉子結點中哪個類別的訓練樣本數量最多,葉子結點的類別就取這個類別(由於剪枝早停等優化,葉子結點不一定純,該方法即最大後驗概率[MAP])。而回歸的葉子結點是一個值,與目標取值集合是類別的分類問題不同的是,迴歸的目標取值集合是一個數值區間,對於一個葉子結點有一個相對訓練樣本固定的輸出值,這個值通常取葉子結點中包含的所有訓練樣本的均值。特別的,迴歸在樹劃分的時候選取的準則是特有的方差度量。

 

4.1.2  特徵選擇

 

上一講通過講解CART框架介紹了決策樹的一般結構(除了CART外,還有ID3,C4.5,C5.0等經典決策樹演算法),即{ if -then } 詢問式分支結構,通過這樣一層一層的條件約束,最終可以將滿足相同或類似條件的目標劃為一類(迴歸問題類似)。因此,當我們用已知類別的資料分析挖掘得到這樣的一個模型結構後,理所當然地就可以用這個模型來預測一個未知物件的類別。事實上只要訓練集資料不自相矛盾,決策樹可以做到100%的將訓練集劃分正確,但是這樣生成的一棵決策樹過於複雜,不僅僅不利於實現使用,還有過擬合的問題。如何構造一顆優美簡潔的決策樹呢?按照常理,決策樹每次劃分使得劃分出來的類越純就越容易幾下劃分完,自然構造出的決策樹越好,因此,特徵選擇,即每一步劃分時選擇哪個屬性進行劃分,選擇的依據是什麼正是解決這個問題的關鍵。

定義每個階段的劃分純不純,從上個階段到以某個屬性劃分後的下個階段純度增加得多還是少,這裡列舉三種常用準則(另外還有卡方檢驗等):資訊增益/資訊增益率(分類),基尼增益(分類),方差度量(迴歸)。

 

(1)資訊增益/資訊增益率

該準則基於熵,熵的定義為

 

其中,N為一個集合中類別總數, Pi為第i類在該集合中所佔有的概率。

對於一個樣本數量為D,類別總數量為N的集合D,該集合的熵定義為

此時若將該集合以某個屬性A劃分一次,得到兩個樣本數量分別為 C1和 C2的集合,則劃分後的總熵為

即兩個集合各自求本集合的熵,再計算加權平均和作為整個的熵,對於多分類,也是同理進行加權平均。那麼,資訊增益定義如下

由於熵隨著分支的進行應該越來越小,因此以某個屬性進行劃分,其資訊增益越大代表該屬性的劃分能力越強。但是用資訊增益的方式選擇,存在偏向於選擇取值比較多的特徵的問題,因此便出現了資訊增益率來作為一種補償方案。

資訊增益率的定義為

其中分母是D集合針對每個劃分的熵,而不是每個劃分針對類別的熵的加權平均。對於上述劃分後分為兩個集合的情況,K取2即可。很明顯,劃分的集合越少,劃分熵即分母就越小,這樣資訊增益率就越大,這樣選擇屬性就傾向屬性值比較少的了。

注意,使用熵準則的都是多叉樹,故有必要考慮屬性值的取值多少,而使用的是二叉樹,並且採用的準則是下面要說的基尼指數的CART框架,就不再需要考慮這樣的問題了。

(2) 基尼(Gini)增益

該準則基於基尼指數,基尼指數定義為

其中,N為一個集合中類別總數, Pi為第i類在該集合中所佔有的概率。

對於一個樣本數量為D,類別總數量為N的集合D,該集合的熵定義為

此時若將該集合以某個屬性A劃分一次,得到兩個樣本數量分別為 C1和 C2的集合,則劃分後的總基尼指數為

基尼增益的計算以及多分類的處理方式和資訊增益類似,不再一一細說。

(3) 方差

利用方差定義資料之間的關係時顯然有,方差越小,資料之間的關係越緊密,即這些資料之間相似度高。方差度量準則表示式為

即每次劃分要使劃分的兩類的均方差各自達到最小且兩者的和也要最小。

 

【補充】:交叉熵,聯合熵,條件熵,相對熵,互資訊

以下皆為離散變量表達式,對於連續變量表達式,可用離散表示式推匯出期望表達方法(將log作為函式,利用函式的分佈知識,易推),由於期望表示式可以展開為連加形式的離散變數期望,那麼將期望表示式類似地展開為積分形式的連續變數期望,就可得到連續變數如下一些相應的公式。

 

(1)上面已經給出熵的定義,對於p分佈,有

當變數為單變數X時,該式亦寫為H(X),此時 Pi為變數X各個取值的概率,N寫為 Nx。

(2)對於p,q兩個分佈, 交叉熵的定義為

(3)聯合熵的定義為

(4)條件熵的定義為

即Y各個取值下對X的邊緣概率的熵的加權平均。

對於聯合熵和條件熵有如下關係

(5)相對熵(Kullack-Leibler距離,也叫KL散度),用來度量兩個分佈之間的距離,它的定義為

相對熵是度量分佈而不是變數之間的關係。

相對熵和交叉熵有如下關係

(6)互資訊的定義為

可以看到,當X和Y相互獨立時,log後的分數值為1,則互資訊為0。實際應用中,對於資料的各個維度之間,希望相互獨立,即去除相關性,即要讓維度之間的互資訊儘量小。對於模型的輸入輸出之間,輸出值是什麼取決於輸入本身是一個模型得以建立的前提,因此模型要好,輸出值與輸入值之間的互資訊要大。

 

互資訊和熵有如下關係

4.1.3  樹的生成

特徵選擇可以使樹更簡潔,自然是樹的生成中必不可少的一環。那麼還有哪些其他值得考慮的因素?

 

(1)選擇二叉樹還是多叉樹?

 

最常見的決策樹模型ID3是多叉樹,即屬性有幾類取值就分為幾叉,但二叉樹更簡單,CART模型就是採用的二叉樹,實際上任何多叉樹都可以轉化為二叉樹,即對於多餘兩個取值的屬性,通過yes/no詢問,一次只劃分出某類和非某類兩類,然後繼續對非某類進行更細緻的劃分。

(2)屬性具體怎麼選擇?

 

不純度準則選擇上,分類和迴歸各有特有準則,由於迴歸通常就用方差度量,這裡對比一下分類問題使用的熵、基尼指數和基本的誤分類不純度(分類誤差率)之間的關係。

不純度比較圖(引用 參考文獻[1])

其中,誤分類不純度的定義為

熵不純度的一半的定義為

基尼指數不純度定義為

對於上圖中所畫,取了j=2,即只有兩類。可以看到,熵之半和基尼指數兩個不純度的曲線差不多,而基尼指數相比熵可以省去比較耗費計算時間的log對數,以此達到一種優化。另外熵更傾向於處理離散屬性,而基尼指數更傾向於處理連續屬性。

 

屬性值為標稱時,即固定的幾個類別,則只需要遍歷所有屬性值,就知道該屬性的所有類別。示例中年齡有三個類別,一目瞭然。

 

屬性值為實數值時,對於該屬性的類別,並不明顯,此時一種解決方法是,先對該屬性已經出現的值進行排序,然後在標籤發生變化的地方進行切分。示例中體重是實數值,將訓練樣本中的體重值排序,注意該示例中目標分類(標籤)為藍色和紅色兩類,因此對排序序列從左向右看,在目標分類發生變化處切分,使同類的直接切到一個判斷區間,這樣在針對該屬性進行劃分時能儘可能的減少分支。

 

 

採用單屬性還是多屬性進行劃分,即每次劃分時判斷是隻考慮一個屬性,還是同時考慮多個屬性。對於如下圖所示的訓練資料分佈,左邊為單屬性劃分,右邊為雙屬性劃分,顯然,雙屬性更加自然合理。但是多屬性同時考慮效率並不高,現在換個角度看資料分佈,有這樣的分佈,說明其x,y兩個維度直接存在糾纏關係,一次僅僅用一個屬性(直線y=k,或x=k)根本分不開,此時如果旋轉座標系(斜著看)去相關性,又可以通過單屬性進行劃分了。也就說,需要用多屬性同時進行劃分的,可以對資料進行一定的對映變換去相關性,再用單屬性進行劃分,但是不管是去相關性還是直接多屬性劃分,沒有絕對的誰更容易。

 

(3)怎麼處理葉子結點?

 

由於噪聲的影響,把所有的資料都分類正確的樹不一定是一棵好樹,如下圖所示,隨著決策樹越來越複雜,對訓練集是越來越準確,但是泛化能力又變差了。

 

解決這樣的問題,可以加入樹分裂停止準則和剪枝進行優化。前者即預剪枝,後者即後剪枝。

 

預剪枝:樹分裂時就實施措施。

    1 當樹的深度達到預先設定的閾值停止當前分支的分裂;

    2 當分完之後,支援的資料變少。

 

後剪枝:樹建好以後,刪除掉一些無用的分支,即刪除該分支有或無對測試結果沒太大的影響的分支。

    1 降低錯誤剪枝 REP(Reduced Error Pruning);

    2 悲觀錯誤剪枝 PEP(Pessimistic  Error Pruning);

    3 基於錯誤剪枝 EBP(Error-based Pruning);

    4 代價-複雜度剪枝 CCP(Cost-complexity Pruning);

    5 最小錯誤剪枝  MEP(Minimum Error Pruning)。

 

(4)怎麼處理屬性值丟失結點?

隨便法:缺失了就不看,或者隨機取一個值代替缺失值。

代理結點法:缺失的屬性在測試階段用其他的屬性代替。

 

4.1.4  模型選擇

  有四種經典演算法模型:

(1)CART:支援分類和迴歸,分類採用基尼指數,迴歸使用方差度量,二叉樹,支援連續值處理,支援缺失值處理,利用獨立的驗證資料集進行剪枝。

(2)ID3:僅分類,採用資訊增益準則,多叉樹,其他不支援。

(3)C4.5:僅分類,採用資訊增益率準則,多叉樹,支援連續值處理,支援缺失值處理,利用基於錯誤剪枝方法進行剪枝。

(4)C5.0:在C4.5基礎上加入了Boosting技術,速度更快,記憶體使用更加有效,能生成更小的決策樹,但演算法細節並沒有公開太多,屬於商業機密。


4.2 隨機森林

隨機森林最基本的思想為,在訓練階段樹的生成過程中,指定隨機部分,隨機的生成一顆決策樹,通過重複這樣的過程,隨機生成若干決策樹組成森林,然後在預測的時候,綜合所有決策樹的判斷結果得到最終預測結果。隨機度越高,樹的相關性越低,綜合考慮結果的效果就越好。綜合結果有加法模型和乘法模型,其中乘法模型有一個痛點就是如果其中某棵樹預測值為0,那麼整個結果就變為了0。以下幾種隨機森林粗略描述,細節見參考文獻。

 

4.2.1 Randomized Decision Trees

 

每次隨機為隨機挑選幾個屬性。

特點:

1.不再尋找全域性最優的分裂節點,隨機分裂節點,訓練更快,使用更簡單的二值特徵測試;

2.選擇一個包含k個屬性的集合,從中依據某個準則函式來挑選最優的分裂節點,比如,最大化資訊增益;

3.隨機樹的效果不如決策樹,通過構建多棵樹來彌補;

4.各棵樹的投票結果求平均。

應用:

1.OCR;

2.手寫體識別;

3.人臉識別。

 

4.2.2 Random Forests

 

每次隨機挑選樣本,又隨機挑選屬性。隨機性更大。

 

演算法過程:

1. 有放回的隨機選擇N個樣本;

2. 隨機從M個屬性中選取出m個屬性 (m << M, m=sqrt(M) ), 依據某種策    略(比如說資訊增益)來選擇一個屬性作為分裂節點;

3. 按照2,構建一顆決策 樹 ;

4. 按照步驟1~3建立大量的決策樹,組成 隨機森林。

優點:

1.比較適合做多分類問題;

2.訓練和預測速度快;能夠有效地處理大的資料集;容易並行化。

3.資料集中有大比例的資料缺失時仍然可以保持精度不變;

4.能夠檢測到特徵之間的相互影響以及重要性程度;

5.不易出現過度擬合。

應用:

1.Kinect上的姿態估計;

2.Hough Forest for object detection;

3.人臉關鍵點標定。

 

4.2.3 Extremely Randomized trees

 

演算法過程:

1.隨機選擇k個屬性值,計算出屬性值的最小值和最大值

2.在[min,max]區間上隨機生成k個切分點

3.選擇score最好的切分點

與Random Forests的不同點:

1.無bootstrap,使用全部的訓練樣本;

2.在選擇節點的分裂位置時,隨機。

 

4.2.4 Ferns

演算法:

ET上各層上的節點都一樣

每個節點想象為一個特徵

其輸出值為0或者1,表示該特徵有無出現

在影象塊中,可以比較兩個象素點值的大小

應用:

1. 3D object detection

2.SLAM

 

Reference

[1]劉建平.決策樹演算法原理(下).http://www.cnblogs.com/pinard/p/6053344.html

[2] Amit, Yali, and Donald Geman. "Shape quantization and recognition with randomized trees." Neural computation 9.7 (1997): 1545-1588.

[3] 李航. "統計學習方法." 清華大學出版社, 北京 (2012).

[4] Lepetit, Vincent, and Pascal Fua. "Keypoint recognition using randomized trees." IEEE transactions on pattern analysis and machine intelligence 28.9 (2006): 1465-1479.

[5] Breiman, Leo. "Random forests." Machine learning 45.1 (2001): 5-32.

[6] Ozuysal, Mustafa, et al. "Fast keypoint recognition using random ferns." IEEE transactions on pattern analysis and machine intelligence 32.3 (2010): 448-461.

[7] Wagner, Daniel, et al. "Pose tracking from natural features on mobile phones." Proceedings of the 7th IEEE/ACM International Symposium on Mixed and Augmented Reality. IEEE Computer Society, 2008.