数据挖掘算法之决策树算法总结
機器學習中,決策樹是一個預測模型;它代表的是對象屬性值與對象值之間的一種映射關系。樹中每個節點表示某個對象,每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則對應具有上述屬性值的子對象。決策樹僅有單一輸出;若需要多個輸出,可以建立獨立的決策樹以處理不同輸出。
每個決策樹都表述了一種樹型結構,它由它的分支來對該類型的對象依靠屬性進行分類。每個決策樹可以依靠對源數據庫的分割進行數據測試。這個過程可以遞歸式的對樹進行修剪。當不能再進行分割或一個單獨的類可以被應用于某一分支時,遞歸過程就完成了。另外,隨機森林分類器將許多決策樹結合起來以提升分類的正確率。
決策樹同時也可以依靠計算條件概率來構造。決策樹如果依靠數學的計算方法可以取得更加理想的效果。1986年Quinlan提出了著名的ID3算法。在ID3算法的基礎上,1993年Quinlan又提出了C4.5算法。為了適應處理大規模數據集的需要,后來又提出了若干改進的算法,其中SLIQ (super-vised learning in quest)和SPRINT (scalable parallelizableinduction of decision trees)是比較有代表性的兩個算法。
決策樹的工作原理
決策樹一般都是自上而下的來生成的。?選擇分割的方法有多種,但是目的都是一致的,即對目標類嘗試進行最佳的分割。
從根節點到葉子節點都有一條路徑,這條路徑就是一條“規則”。決策樹可以是二叉的,也可以是多叉的。對每個節點的衡量:
?(1) ID3算法
ID3算法的核心是:在決策樹各級結點上選擇屬性時,用信息增益(information gain)作為屬性的選擇標準,以使得在每一個非葉結點進行測試時,能獲得關于被測試記錄最大的類別信息。其具體方法是:檢測所有的屬性,選擇信息增益最大的屬性產生決策樹結點,由該屬性的不同取值建立分支,再對各分支的子集遞歸調用該方法建立決策樹結點的分支,直到所有子集僅包含同一類別的數據為止。最后得到一棵決策樹,它可以用來對新的樣本進行分類。
ID3算法的優點是:算法的理論清晰,方法簡單,學習能力較強。其缺點是:只對比較小的數據集有效,且對噪聲比較敏感,當訓練數據集加大時,決策樹可能會隨之改變。
(2) C4.5算法
C4.5算法繼承了ID3算法的優點,并在以下幾方面對ID3算法進行了改進:
C4.5算法與其它分類算法如統計方法、神經網絡等比較起來有如下優點:產生的分類規則易于理解,準確率較高。其缺點是:在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致算法的低效。此外,C4.5只適合于能夠駐留于內存的數據集,當訓練集大得無法在內存容納時程序無法運行。
(3) SLIQ算法
SLIQ算法對C4.5決策樹分類算法的實現方法進行了改進,在決策樹的構造過程中采用了“預排序”和“廣度優先策略”兩種技術。
SLIQ算法由于采用了上述兩種技術,使得該算法能夠處理比C4.5大得多的訓練集,在一定范圍內具有良好的隨記錄個數和屬性個數增長的可伸縮性。然而它仍然存在如下缺點:
(4) SPRINT算法
為了減少駐留于內存的數據量,SPRINT算法進一步改進了決策樹算法的數據結構,去掉了在SLIQ中需要駐留于內存的類別列表,將它的類別列合并到每個屬性列表中。這樣,在遍歷每個屬性列表尋找當前結點的最優分裂標準時,不必參照其他信息,將對結點的分裂表現在對屬性列表的分裂,即將每個屬性列表分成兩個,分別存放屬于各個結點的記錄。
SPRINT算法的優點是在尋找每個結點的最優分裂標準時變得更簡單。其缺點是對非分裂屬性的屬性列表進行分裂變得很困難。解決的辦法是對分裂屬性進行分裂時用哈希表記錄下每個記錄屬于哪個孩子結點,若內存能夠容納下整個哈希表,其他屬性列表的分裂只需參照該哈希表即可。由于哈希表的大小與訓練集的大小成正比,當訓練集很大時,哈希表可能無法在內存容納,此時分裂只能分批執行,這使得SPRINT算法的可伸縮性仍然不是很好。
?下面以ID3和C4.5為例說明:
ID3算法
??????從信息論知識中我們直到,期望信息越小,信息增益越大,從而純度越高。所以ID3算法的核心思想就是以信息增益度量屬性選擇,選擇分裂后信息增益最大的屬性進行分裂。下面先定義幾個要用到的概念。
??????設D為用類別對訓練元組進行的劃分,則D的熵(entropy)表示為:??????
??????其中pi表示第i個類別在整個訓練元組中出現的概率,可以用屬于此類別元素的數量除以訓練元組元素總數量作為估計。熵的實際意義表示是D中元組的類標號所需要的平均信息量。
??????現在我們假設將訓練元組D按屬性A進行劃分,則A對D劃分的期望信息為:??????
??????而信息增益即為兩者的差值:??????
??????ID3算法就是在每次需要分裂時,計算每個屬性的增益率,然后選擇增益率最大的屬性進行分裂。下面我們繼續用SNS社區中不真實賬號檢測的例子說明如何使用I
D3算法構造決策樹。為了簡單起見,我們假設訓練集合包含
10個元素:
??????其中s、m和l分別表示小、中和大。
??????設L、F、H和R表示日志密度、好友密度、是否使用真實頭像和賬號是否真實,下面計算各屬性的信息增益。??????
??????
?
??????因此日志密度的信息增益是0.276。
??????用同樣方法得到H和F的信息增益分別為0.033和0.553。
??????因為F具有最大的信息增益,所以第一次分裂選擇F為分裂屬性,分裂后的結果如下圖表示:
?
?
??????在上圖的基礎上,再遞歸使用這個方法計算子節點的分裂屬性,最終就可以得到整個決策樹。
??????上面為了簡便,將特征屬性離散化了,其實日志密度和好友密度都是連續的屬性。對于特征屬性為連續值,可以如此使用ID3算法:
??????先將D中元素按照特征屬性排序,則每兩個相鄰元素的中間點可以看做潛在分裂點,從第一個潛在分裂點開始,分裂D并計算兩個集合的期望信息,具有最小
期望信息的點稱為這個屬性的最佳分裂點,其信息期望作為此屬性的信息期望。
3.3.2、C4.5算法
??????ID3算法存在一個問題,就是偏向于多值屬性,例如,如果存在唯一標識屬性ID,則ID3會選擇它作為分裂屬性,這樣雖然使得劃分充分純凈,但這種劃分對分類幾乎毫無用處。ID3的后繼算法C4.5使用增益率(gain ratio)的信息增益擴充,試圖克服這個偏倚。
??????C4.5算法首先定義了“分裂信息”,其定義可以表示成:??????
??????其中各符號意義與ID3算法相同,然后,增益率被定義為:
??????
?
??????C4.5選擇具有最大增益率的屬性作為分裂屬性,其具體應用與ID3類似,不再贅述。
參考來源:
?
http://www.cnblogs.com/kidoln/archive/2012/01/05/2312679.html
?
http://www.cnblogs.com/leoo2sk/archive/2010/09/19/1831151.html
?
總結
以上是生活随笔為你收集整理的数据挖掘算法之决策树算法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Logistic回归主要应用领域
- 下一篇: 《SAS编程与数据挖掘商业案例》学习笔记