西瓜書第四章---決策樹

4.1基本流程

       4.1.1決策樹的基本概念

               決策樹是基於樹的結構來進行決策的,類似於數據結構中的二叉樹。會隨着條件的不同做出不同的決策。逐漸向葉子結點趨近。書中舉得是西瓜的例子,但網上流傳的相親的例子更加形象貼切。如下圖:

                                                    

                 那麼在女孩對男孩條件篩選的過程實際上就是一個典型的決策樹。相當於女孩通過房子,工作將男生分爲兩個類別:是想要相親的對象和不是想要相親的對象。

                在上圖的決策樹中,決策過程的每一次判定都是對某一個屬性的測試,比如“有自己的房子?”,“有工作?”;每個測試的結果要麼導出最終結論,要麼導出進一步的判定問題,所有的考慮都是在上一次考慮的限定範圍之內。

               那麼總結後便可得出如下結論:用決策樹分類實際上就是從根節點開始,對實例的魔衣特徵進行測試,根據測試結果將實例分配到其子節點,此時每個子節點對應着該特徵的一個取值,如此遞歸的對實例進行測試並分配,直到到達葉子結點,最後將實例分到葉子節點所對應的類中。

                一般而言一個決策樹包括的內容有:一個根節點,若干個內部節點和若干個葉子結點,其代表的含義如下:

                *非葉子結點:每一個非葉子結點都表示一個特徵屬性測試。

                *分支:每一個分支代表這個特徵屬性在某個值域上的輸出。

                *葉子結點:每個葉子結點存放一個類別。

                *每個節點包含的樣本集合通過屬性測試被劃分到子節點中,根節點包含樣本全集。

                同時決策樹對應的目標等性質如下:

                *學習的目標:根據給定的訓練數據集構建一個決策樹模型,使它能夠對實例進行正確的分類。

                *學習的本質:從訓練集中歸納出一組分類規則,或者說由訓練數據集估計出條件概率模型。

                *學習的目的:能夠選擇一個最優決策樹。

     4.1.2決策樹的構造

             決策樹本身便是一個遞歸的過程,當出現以下三種情況時,會導致遞歸的返回:

             ①當前結點包含的樣本全屬於同一類別,這時直接將該節點標記爲葉節點,並設爲相應的類別;

             ②當前屬性集爲空,或是所有樣本在所有屬性上取值相同,無法劃分,這時將該節點標記爲葉節點,並將其類別設爲該節點所含樣本最多的類別;

             ③當前結點包含的樣本集合爲空,不能劃分,這時也將該節點標記爲葉節點,並將其類別設爲父節點中所含樣本最多的類別。

             其對應的算法的基本流程圖如下圖所示:

             

                 對應於上圖所示的算法而言對應於第一種情況就是當給定的訓練集D所包含的樣本均屬於同一個類別C,這個時候將此時對應的節點標記爲C類節點。而第二種情況則是屬性集A爲空集或者對於訓練集D而言其中的樣本在屬性集上的取值均相同。此時便將對應的節點標記爲葉子結點,並且它的類別爲訓練集中樣本數最多的類。第三種情況則是在該節點時對應的訓練集爲空,不能劃分。

4.2劃分選擇

        4.2.1信息增益

                ID3算法

                劃分數據的大原則是:將無序數據變得更加有序,但是各種方法都有各自的優缺點,信息論是量化處理信息的分支科學,在劃分數據集前後信息發生的變化稱爲信息增益,一般而言,信息增益越大對應的特徵進行劃分提升的“純度”越高。因此獲得信息增益越高的特徵就是最好的選擇。而集合信息的度量方式稱爲香農熵,或者簡稱熵。

                如下所示:“信息熵”是度量樣本結合純度的常用指標,假定當前樣本集合D中第K類樣本所佔比例爲pk,則樣本集合D的信息熵定義爲:

                  

                  由上圖可知,對應的Ent(D)值越大那麼表示越混亂,當只有一個類別時,信息熵爲0(log1=0)。

                  假如通過屬性劃分樣本集D,產生了V個分支節點,v表示第v個分支節點。得出如下結論:分支節點包含的樣本數越多,那麼該分支節點的影響力越大。對此可以計算出劃分後與原始數據D相比獲得的“信息增益”。

                     

                 信息增益越大,表示使用該特徵劃分樣本集D的效果越好,而ID3算法就是基於此在遞歸過程中,每次都選擇最大信息增益的特徵作爲當前的劃分屬性。如書上所述先算出根節點的信息熵,然後算出對應特徵有幾個分支的信息熵,最後算出對應特徵的信息增益。在算出全部特徵的信息增益後,比較得出最大作爲結點用來劃分不同的樣本對應不同的分類。(每一次都是在上一次的基礎上,就是說在該節點的樣本必須符合上個節點給出的條件才能被分配到此節點。)

          4.2.2增益率

                  C4.5算法

                  按照信息增益來劃分或者說按照ID3算法來劃分時有一個較爲明顯的問題。信息增益對可取數目比較多的屬性有偏好。這很容易理解,對應的分類數目越多,那麼分的就更加準確,那麼對應的信息增益自然更加大。那麼加入存在這樣的一個屬性是一個唯一的標識,將樣本集D劃分爲|D|個分支,這樣每一個分支只有一個樣本,信息熵爲0,卻對分類沒有用處,和沒有分類以前樣本集的情況一樣。爲解決這個問題,先使用ID3算法計算出信息增益高於平均水平的候選屬性,接着計算出候選屬性的增益率,增益率定義爲:

                        

                  而

                                   

                   這樣選擇增益率最高的作爲選擇標準,即可避免對應的問題。

             4.2.3基尼指數

                    CART算法

                    基尼指數指的是從樣本集D中隨機抽取兩個樣本,兩個樣本類別不一致的概率。如果基尼指數越小,我們可以得知對應的屬性其實包含的類別較多。那麼用其作爲選擇標準就是一個很不錯的選擇。基尼指數定義如下:

                                                       

                使用屬性a劃分後如下圖:

                                                           

                     

4.3剪枝處理

             決策樹的構造流程過於依賴與訓練集,無論怎樣的訓練集,決策樹總是可以很好的將各個類別分離開,那麼就會碰到過擬合的問題。而在決策樹中,剪枝就是用來處理過擬合的主要手段。剪枝分爲預剪枝和後剪枝。定義如下:

             預剪枝:在構造過程中先評估,再考慮是否分支。

             後剪枝:在構造好一顆完整的決策樹後,自底向上,評估分支的必要性。

             在這裏的評估指的是性能度量,即決策樹的泛化性能。泛化性能可以通過測試集作爲近似。

             4.3.1未剪枝決策樹

                     

               4.3.2預剪枝

                       對於預剪枝而言,在使用時對應屬性的不同類別被標記爲該類別中訓練樣例最多的類別。然後使用測試集進行評估,查看性能是否提升。

                              

               4.3.3後剪枝              

                       在構造好一顆完整的決策樹後,從最下面的節點開始,考慮該節點分支對模型的性能是否有提升,若無則剪枝,即將該節點標記爲葉子節點,類別標記爲其包含樣本最多的類別。

                        

                      預剪枝處理使得決策樹較多分支被剪掉,大大降低了訓練時間,同時降低了過擬合。但由於剪掉了當前結點後續子節點的分支,因此預剪枝阻止了分支的展開,在一定程度上可能會導致欠擬合。而後剪枝相比於預剪枝而言保留了更多的分支,因此往往性能更好,但其計算和訓練時間也增加了較多。

4.4連續值與缺失值

                4.4.1連續值處理

                 對於連續值得屬性,需要進行離散化處理。常用的方法是二分法,基本思想爲找到一個閾值,對於樣本集D的連續屬性a,二分法找到一個閾值α,將對應的屬性值劃分爲<=α和>α.

                其具體步驟爲:

                1.將a的所有取值按升序排列,所有相鄰屬性的均值作爲劃分點。

                2.計算每一個劃分點劃分集合D後的信息增益。

                3.選擇最大信息增益的劃分點作爲最優劃分點

                

                 4.4.2缺失值處理

                        在現實的任務中,收集到的數據會因爲各種各樣的原因丟失,所以對應的位置就變成了一個不確定的數,如果直接刪除,那麼會丟失其他有價值的數據。對於該問題主要有兩個主要的問題要解決:

                       (1)如何選擇劃分屬性

                       (2)給定劃分屬性,若樣本在該屬性上缺失值,如何劃分到具體的分支上。

                       對於(1)來說,通過在樣本集D中選取在屬性α上沒有缺失值的樣本子集,計算在該樣本子集上的信息增益,最終的信息增益等於該樣本子集劃分後信息增益乘以樣本子集佔樣本集的比重。即:

                        

                        對於(2)來說,若該樣本子集在屬性α上的值缺失,則將該樣本以不同的權重(即每個分支所含樣本比例)劃入到所有分支節點中。該樣本在分支節點中的權重變爲:

                          

                       在特徵工程中也有缺失值處理的問題,但當時主要採用刪除或者查補的方式。比如當每列或者行數缺失值達到一定的比例,整行或者整列都被放棄。

                       而對於插補來說可以通過缺失值所在的行或者列的平均值來進行填充。

                       對於決策樹來說由於考慮到信息增益原本的便不再適合。

             

4.5多變量決策樹

                     對於普通的決策樹算法而言,由於它每個節點的劃分條件都是單獨的,明確的,所以決策樹的決策邊界是平行於空間座標軸的,如下圖:

                                            

           這對其擬合能力有一定的影響,當數據比較複雜時,需要較多的屬性才能得到比較好的劃分,而多變量決策樹就可以解決該問題。在多變量決策樹的學習過程中,不是爲每個非葉結點尋找一個最優劃分屬性,而是試圖建立一個合適的線性分類器。

4.6隨機森林

       第八章講到集成學習,簡單來說集成學習是指通過建立幾個模型組合來解決單一預測問題。它的工作原理是生成多個模型,各自獨立地學習和做出預測。這些預測最後結合成單預測,因此優於任何一個單分類做出的預測。

       隨機森林實際上就是一個包含多個決策樹的分類器,並且其輸出的類別是由個別樹輸出的類別的衆數決定的。

       eg。如果你訓練了5課樹,其中有4棵樹的結果是True,一棵樹的結果是False,那麼最終的結果也會是True。

       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章