1. 程式人生 > >機器學習入門之決策樹算法

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

所有 最大的 id3 次數 要去 決策樹算法 4.5 獲取 ddl

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. 決策樹的缺點: 處理連續變量不好;類別較多時,錯誤增加的比較快;可規模性一般。

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