本文摘錄于http://www.lxweimin.com/p/ed9ae5385b89
一句話概要,決策樹算法的核心在于決策樹的構建,每次選擇讓整體數據香農熵(描述數據的混亂程度)減小最多的特征,使用其特征值對數據進行劃分,每次消耗一個特征,不斷迭代分類,直到所有特征消耗完(選擇剩下數據中出現次數最多的類別作為這堆數據的類別),或剩下的數據全為同一類別,不必繼續劃分,至此決策樹構建完成,之后我們依照這顆決策樹對新進數據進行分類。
決策樹長什么樣?
決策樹算法較之于kNN算法一個很顯著的不同在于,kNN算法需要持續使用全部的訓練數據,而決策樹算法經過訓練構建出決策樹之后,就不再需要將所有的訓練樣本保持在內存中了,這顆決策樹就是在訓練樣本中抽象出來的模型。
香農(信息)熵用來描述數據的混亂度,混亂度越大熵越大,計算公式如下:
Pi指第i種數據在這個數據集中所占的比例。
定性理解,如果這個數據集中所包含的數據類別越少,它的熵也就越小(熵是正數,因為對數算出來的結果是負數)。
如果我們將這個數據集按照數據的某個特征(不是按數據類別分,因為我們做的是學習+預測,不是對訓練樣本分類)進行了分類,分成了多個小數據集,那整個數據集熵的計算公式如下:
我們需要知道按照這個特征分類過后,整個數據集的熵減少了多少,也就是信息增益是多少,計算公式如下:
信息增益越大,也就是我們對數據的分類越有效,整個數據集的熵減小的越多。
在整個數據集的基礎上,挑選使熵減小最多的特征對數據集進行分類,將整個數據集按照上一步所選定的特征的特征值分成多個(可以超過2個)小數據集,然后對每個小數據集重復進行以上的操作,直到某個小數據集內部數據的數據類別全部相同,或者沒有可以繼續分類的特征了,這個時候我們把剩下的數據集里面出現最多的數據類別作為這個小數據集的類別。
然后我們就得到了一顆決策樹,當需要處理新樣本的時候,我們按照決策樹對特征的使用順序和新樣本的各個特征值,逐步對這個樣本進行分類,直到決策樹的葉子節點處,最后這個葉子節點數據集的數據類別就是我們根據決策樹算法所推斷出來的新樣本的數據類別。