決策樹分類算法算法
一、概述性能
決策樹(decision tree)——是一種被普遍使用的分類算法。測試
相比貝葉斯算法,決策樹的優點在於構造過程不須要任何領域知識或參數設置spa
在實際應用中,對於探測式的知識發現,決策樹更加適用。對象
二、算法思想blog
通俗來講,決策樹分類的思想相似於找對象。現想象一個女孩的母親要給這個女孩介紹男友,因而有了下面的對話:ci
女兒:多大年紀了?io
母親:26。table
女兒:長的帥不帥?二叉樹
母親:挺帥的。
女兒:收入高不?
母親:不算很高,中等狀況。
女兒:是公務員不?
母親:是,在稅務局上班呢。
女兒:那好,我去見見。
這個女孩的決策過程就是典型的分類樹決策。
實質:經過年齡、長相、收入和是否公務員對將男人分爲兩個類別:見和不見
假設這個女孩對男人的要求是:30歲如下、長相中等以上而且是高收入者或中等以上收入的公務員,那麼這個能夠用下圖表示女孩的決策邏輯
上圖完整表達了這個女孩決定是否見一個約會對象的策略,其中:
◊綠色節點表示判斷條件
◊橙色節點表示決策結果
◊箭頭表示在一個判斷條件在不一樣狀況下的決策路徑
圖中紅色箭頭表示了上面例子中女孩的決策過程。
這幅圖基本能夠算是一顆決策樹,說它「基本能夠算」是由於圖中的斷定條件沒有量化,如收入高中低等等,還不能算是嚴格意義上的決策樹,若是將全部條件量化,則就變成真正的決策樹了。
決策樹分類算法的關鍵就是根據「先驗數據」構造一棵最佳的決策樹,用以預測未知數據的類別
決策樹:是一個樹結構(能夠是二叉樹或非二叉樹)。其每一個非葉節點表示一個特徵屬性上的測試,每一個分支表明這個特徵屬性在某個值域上的輸出,而每一個葉節點存放一個類別。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達葉子節點,將葉子節點存放的類別做爲決策結果。
三、決策樹構造
假若有如下判斷蘋果好壞的數據樣本:
樣本 紅 大 好蘋果 0 1 1 1 1 1 0 1 2 0 1 0 3 0 0 0 |
樣本中有2個屬性,A0表示是否紅蘋果。A1表示是否大蘋果。假如要根據這個數據樣本構建一棵自動判斷蘋果好壞的決策樹。
因爲本例中的數據只有2個屬性,所以,咱們能夠窮舉全部可能構造出來的決策樹,就2棵,以下圖所示:
顯然左邊先使用A0(紅色)作劃分依據的決策樹要優於右邊用A1(大小)作劃分依據的決策樹。
固然這是直覺的認知。而直覺顯然不適合轉化成程序的實現,因此須要有一種定量的考察來評價這兩棵樹的性能好壞。
決策樹的評價所用的定量考察方法爲計算每種劃分狀況的信息熵增益:
若是通過某個選定的屬性進行數據劃分後的信息熵降低最多,則這個劃分屬性是最優選擇
屬性劃分選擇(即構造決策樹)的依據:
簡單來講,熵就是「無序,混亂」的程度。
經過計算來理解:
1、原始樣本數據的熵:
樣例總數:4
好蘋果:2
壞蘋果:2
熵: -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1
信息熵爲1表示當前處於最混亂,最無序的狀態。
二、兩顆決策樹的劃分結果熵增益計算
樹1先選A0做劃分,各子節點信息熵計算以下:
0,1葉子節點有2個正例,0個負例。信息熵爲:e1 = -(2/2 * log(2/2) + 0/2 * log(0/2)) = 0。
2,3葉子節點有0個正例,2個負例。信息熵爲:e2 = -(0/2 * log(0/2) + 2/2 * log(2/2)) = 0。
所以選擇A0劃分後的信息熵爲每一個子節點的信息熵所佔比重的加權和:E = e1*2/4 + e2*2/4 = 0。
選擇A0作劃分的信息熵增益G(S, A0)=S - E = 1 - 0 = 1.
事實上,決策樹葉子節點表示已經都屬於相同類別,所以信息熵必定爲0。
樹2先選A1做劃分,各子節點信息熵計算以下:
0,2子節點有1個正例,1個負例。信息熵爲:e1 = -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1。
1,3子節點有1個正例,1個負例。信息熵爲:e2 = -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1。
所以選擇A1劃分後的信息熵爲每一個子節點的信息熵所佔比重的加權和:E = e1*2/4 + e2*2/4 = 1。也就是說分了跟沒分同樣!
選擇A1作劃分的信息熵增益G(S, A1)=S - E = 1 - 1 = 0.
所以,每次劃分以前,咱們只須要計算出信息熵增益最大的那種劃分便可。
先作A0劃分時的信息熵增益爲1>先作A1劃分時的信息熵增益,因此先作A0劃分是最優選擇!!!
四、算法指導思想
通過決策屬性的劃分後,數據的無序度愈來愈低,也就是信息熵愈來愈小
五、算法實現
梳理出數據中的屬性
比較按照某特定屬性劃分後的數據的信息熵增益,選擇信息熵增益最大的那個屬性做爲第一劃分依據,而後繼續選擇第二屬性,以此類推