決策樹算法總結

 決策樹算法實際就是一個不斷分割訓練數據集使其成爲數據子集的過程。這種分類或迴歸模型成樹形結構,這也是其被成爲決策樹算法的主要原因。決策樹算法最主要的問題是如何分裂原始數據集使其數據集包含的類別純度越來越高,於是前輩們引入了熵和信息增益等概念。下面來總結一下決策樹算法的主要步驟:

 step1.計算目標屬性(類別的熵);

 step2.選擇一個屬性分裂數據集,也即計算信息增益;

 step3.根據各屬性的信息增益,選擇最佳的分類屬性,對數據集進行分裂;

 step4.判斷剩餘的數據集是否都屬於同一類別,以停止樹的增長,否則遞歸的進行步驟2、3.

 怎麼計算信息熵等問題,很多博客已經回答的非常完美了。所以我不想總結這些的東西。這篇博文總結的是我在實際做決策樹算法中遇到的最困惑的問題,有如下幾個:

 1、ID3和C4.5算法到底有什麼區別?

 2、決策樹在遇到連續屬性時怎麼處理?

 3、遇到的屬性不是連續屬性但是離散屬性的個數非常多怎麼辦?

 4、決策樹的遞歸構造很難理解,怎麼去理解它?

 5、樹的剪枝怎麼辦?

 下面是我的總結和思考:

 1、ID3算法和C4.5算法最根本的區別在於對屬性選擇所採用的指標不同,ID3算法中採用信息增益作爲屬性選擇的指標,而 C4.5採用信息增益率做爲屬性選擇的指標。這麼做帶來的好處是排除了含有大量屬性值的總是被選爲最佳屬性的問題。在ID3算法中如果年齡是一個屬性它含有大量的值,那麼年齡必定會被選爲最佳屬性從而導致決策樹生長的過大。決策樹過大會導致判決規則過於複雜而不利於人們理解,這樣就喪失了決策樹算法的一個巨大優勢;

 2、對於連續屬性如年收入Income屬性,我們採取這樣一種策略:尋找一個分割點Point,這樣我們就可以將連續屬性轉化成一個離散的屬性:Income <= Point 和 Income>Point這樣兩個屬性。問題就自然而然的轉化成怎麼尋找這個Point?。我們仍然通過計算信息增益的方法來選擇一個使信息增益最大的Point.下面舉個例子來解釋一下: 

wKioL1X3j5aRX5xmAADdSoRpWuo927.jpg

 首先需要做的是對數據集中的年收入進行排序,結果爲60,70,75,85,90,95,100,120,125,220。接着,求出兩年收入之間的均值結果爲65,72,80,87,92,97,110,122,172。然後在該序列的首位加上兩個值,要求是能包含原始年收入的首位值這裏取爲55和230。後得到這樣的一串序列:55,65,72,80,87,92,97,110,122,172,230。這串序列就是上面的可能的分割點,下面要做的就是從這些點中找到最佳的分割點,我們根據原始數據構造如下的頻數表並計算每個點的熵值:

 wKioL1X3pnORe4X4AAFynJTIX2Y627.jpg

 故可以選擇收入97爲分割點。

 3、在預測收入的一個數據集中碰到了類似的情況,它給了一個這樣的屬性native-country: United-States, Cambodia, England, Puerto-Rico, Canada, Germany, Outlying-US(Guam-USVI-etc), India, Japan, Greece, South, China, Cuba, Iran, Honduras, Philippines, Italy, Poland, Jamaica, Vietnam, Mexico, Portugal, Ireland, France, Dominican-Republic, Laos, Ecuador, Taiwan, Haiti, Columbia, Hungary, Guatemala, Nicaragua, Scotland, Thailand, Yugoslavia, El-Salvador, Trinadad&Tobago, Peru, Hong, Holand-Netherlands。可以看出我們如果不加處理的用這些屬性值的話,決策樹變得很龐大,所以我想把國家按照發達和發展中國家來分類,便可將該屬性的取值減爲兩個。遇到這個問題沒有定式需要結合一定的經驗來處理。

 4、這個問題的存在主要是因爲沒有學過數據結構,所以對樹的遞歸構造比較陌生。建議先看看數據結構然後琢磨別人寫的代碼自然就會理解。

 5、這個問題一般是設立一個確認集,然後依據確認集的輸出情況來剪枝,這樣做比較簡單。當然還有其他的方法。下面介紹利用確認集來進行剪枝的簡單步驟:

 (1)、將完全生長的決策樹的每個節點都作爲待剪枝的節點;

 (2)、從底向上,將某個節點下的子樹刪除然後用確認集計算出刪除子樹後的決策樹的準確率;

 (3)、如果第二步得到的準確率較刪除前的準確率確有提高,則真的刪除該子樹;

 (4)、遍歷所有的節點,得到剪枝後的決策樹。


 

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