機器學習入門之決策樹算法


1、什么是決策樹(Decision Tree)    
     決策樹是一個類似於流程圖的樹結構,其中每一個樹節點表示一個屬性上的測試,每一個分支代表一個屬性的輸出,每一個樹葉節點代 表一個類或者類的分布,樹的最頂層是樹的根節點。
     舉一個例子。小明同學想根據天氣情況是否享受游泳運動:
     這里包含了6個屬性,一條樣例即為一個實例,待學習的概念為“是否享受運動”,學習目標函數:f:X->Y。
     根據上面的表中實例,我們可以試着用一個樹結構的流程圖來表示小明根據那6個屬性決定是否享受運動:
     從上面這個樹狀圖中,我們可以看到,總共的實例有14個(出去運動的實例有9個,不運動的實例有5個),從樹頂往下看,首先看到菱形的選項,意思是天氣如何?然后分出了三個分支——晴天,陰天,雨天。實例中是天氣屬性為晴天,並決定要去運動的有2個,不去運動的有3個;天氣屬性為陰天,並決定去運動的有4個,不運動的有0個;天氣屬性為雨天,並決定去運動的有3個,不運動的有2個。從圖中我們可以看到,當標記中的正例或者反例為0個時,樹就不繼續往下擴展了(比如天氣屬性為陰天的時候,不去運動的實例為0個)。假如正例或者反例都不為0時,那么就要根據屬性繼續往下擴展樹。
     決策樹是機器學習中分類方法中的一個重要算法。
 
2、如何構造一個決策樹算法
     (1)信息熵
          信息是一種抽象的概念,那么如何對信息進行一個量化的操作呢?1948年,香農提出了“信息熵”的概念。一條信息的信息量大小和它的不確定性有直接的關系,要搞清楚一件非常不確定的事情,或者說我們對一件事情一無所知,就需要了解大量的信息,信息量的度量就等於不確定性的多少。
          舉個例子,NBA總決賽的奪冠球隊,假設你對NBA球隊一無所知,你需要猜多少次?(假設每個球隊的奪冠幾率都是一樣的)這里我們可以給進入季后賽的NBA球隊進行編號(NBA季后賽會選出16支球隊),然后使用二分法進行猜測(猜測冠軍隊伍在1-8號球隊之間,是的話,在進行二分;不是的話就在9-16號球隊之間),這樣我們要猜測的次數最多是4次(2^4=16嘛)。
          信息熵使用比特(bit)來衡量信息的多少,計算公式如下:
          -(P1*log2 P1+P2*log2 P2+...P16*log2 P16)---->計算NBA季后賽總冠軍的奪冠球隊的信息熵值,含義是每一個球隊的奪冠概率乘以,以2為底這個隊奪冠的對數。P1、P2...PN表示哪一支球隊的奪冠概率,假設每一個球隊奪冠的概率都相等的話,那么這里算出的信息熵值就是4,當然這種情況是不太可能存在的,因為每一個球隊的實力不一樣嘛。
          變量的不確定越大,熵的值也就越大。
     (2)決策樹歸納算法(ID3)
          這個算法是1970-1980年,由J.Ross.Quinlan發明的。
          在決策樹算法中,比較重要的一點是我們如何確定哪個屬性應該先選擇出來,哪個屬性應該后選擇出來當做樹的節點。這里就涉及到了一個新的概念,叫做信息獲取量,公式如下:
          Gain(A)=Info(D)-Info_A(D) ---->A屬性的信息獲取量的值就等於,不按任何屬性進行分類的時候的信息量加上有按A這個屬性進行分類的時候的信息量(注意這里信息量的符號是負號,所以說“加上”)。
          以是否購買電腦的案例為例子,給出了14個實例,如下圖所示:

 

          不按任何屬性進行分類的情況下,計算信息獲取量Info(D):
  
          以年齡屬性進行分類的情況下,計算信息獲取量:
    
          所以,Gain(age)=0.940-0.694=0.246 bits
          同理,我們可以算出Gain(income) = 0.029, Gain(student) = 0.151, Gain(credit_rating)=0.048。比較大小,年齡的信息獲取量是最大的,所以選擇年齡作為第一個根節點。再次同理,后面的節點選擇也是按照這樣的計算方法來決定以哪個屬性作為節點。
     (3)結束條件
          當我們使用遞歸的方法來創建決策樹時,什么時候停止節點的創建很關鍵。綜上,停止節點創建的條件有以下幾點:
          a、給定節點的所有樣本屬性都屬於同一種標記的時候,比如(2)中的例子,以年齡為屬性創建的節點下,有三個分支:                            senior,youth、middle_age。其中middle_age的所有實例的標記都是yes,也就是說中年人都會買電腦,這種情況下,這個節點就可以設置成樹葉節點了。
          b、當沒有剩余屬性用來進一步划分樣本時,就停止節點的創建,采用多數表決。
          c、分枝
 
3、其它算法
     C4.5、CART算法。這幾個算法都是貪心算法,自上而下,只是選擇屬性的度量方法不同。
 
4、樹剪枝葉 (避免overfitting)
     當樹的深度太大時,設計的算法在訓練集上的表現會比較好,但是在測試集上的表現卻會很一般,這時我們就要對樹進行一定的裁剪:
     (1)先剪枝
          當分到一定程度,就不向下增長樹了。
     (2)后剪枝
          把樹完全建好后,根據類的純度來進行樹的裁剪。
5. 決策樹的優點:
     直觀,便於理解,小規模數據集有效     
 
6. 決策樹的缺點:
     處理連續變量不好;類別較多時,錯誤增加的比較快;可規模性一般。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM