決策樹(decision tree)分類演算法

2021-06-16 03:57:04 字數 2581 閱讀 7018

2.1 決策樹(decision tree)分類演算法

決策樹是以例項為基礎的歸納學習演算法。它從一組無次序、無規則的元組中推理出決策樹表示形式的分類規則。它採用自頂向下的遞迴方式,在決策樹的內部結點進行屬性值

的比較,並根據不同的屬性值從該結點向下分支,葉結點是要學習劃分的類。從根到葉結點的一條路徑就對應著一條合取規則,整個決策樹就對應著一組析取表示式規則。2023年

quinlan提出了著名的id3演算法。在id3演算法的基礎上,2023年quinlan又提出了c4.5演算法。為了適應處理大規模資料集的需要,後來又提出了若干改進的演算法,其中sliq (super-

vised learning in quest)和sprint (scalable parallelizableinduction of decision trees)是比較有代表性的兩個演算法。

(1) id3演算法

id3演算法的核心是:在決策樹各級結點上選擇屬性時,用資訊增益(information gain)作為屬性的選擇標準,以使得在每乙個非葉結點進行測試時,能獲得關於被測試記錄最大的類別資訊。其具體方法是:檢測所有的屬性,選擇資訊增益最大的屬性產生決策樹結點,由該屬性的不同取值建立分支,再對各分支的子集遞迴呼叫該方法建立決策樹結點的分支,直到所有子集僅包含同一類別的資料為止。最後得到一棵決策樹,它可以用來對新的樣本進行分類。

某屬性的資訊增益按下列方法計算。通過計算每個屬性的資訊增益,並比較它們的大小,就不難獲得具有最大資訊增益的屬性。

設s是s個資料樣本的集合。假定類標號屬性具有m個不同值,定義m個不同類ci(i=1,…,m)。設si是類ci中的樣本數。對乙個給定的樣本分類所需的期望資訊由下式給出:

其中pi=si/s是任意樣本屬於ci的概率。注意,對數函式以2為底,其原因是資訊用二進位制編碼。

設屬性a具有v個不同值。可以用屬性a將s劃分為v個子集,其中sj中的樣本在屬性a上具有相同的值aj(j=1,2,……,v)。設sij是子集sj中類ci的樣本數。由a劃分成子集的熵或資訊期望由下式給出:

熵值越小,子集劃分的純度越高。對於給定的子集sj,其資訊期望為

其中pij=sij/sj 是sj中樣本屬於ci的概率。在屬性a上分枝將獲得的資訊增益是

gain(a)= i(s1, s2, …,sm)-e(a)

id3演算法的優點是:演算法的理論清晰,方法簡單,學習能力較強。其缺點是:只對比較小的資料集有效,且對雜訊比較敏感,當訓練資料集加大時,決策樹可能會隨之改變。

(2) c4.5演算法

c4.5演算法繼承了id3演算法的優點,並在以下幾方面對id3演算法進行了改進:

1) 用資訊增益率來選擇屬性,克服了用資訊增益選擇屬性時偏向選擇取值多的屬性的不足;

2) 在樹構造過程中進行剪枝;

3) 能夠完成對連續屬性的離散化處理;

4) 能夠對不完整資料進行處理。

c4.5演算法與其它分類演算法如統計方法、神經網路等比較起來有如下優點:產生的分類規則易於理解,準確率較高。其缺點是:在構造樹的過程中,需要對資料集進行多次的順序掃瞄和排序,因而導致演算法的低效。此外,c4.5只適合於能夠駐留於記憶體的資料集,當訓練集大得無法在記憶體容納時程式無法執行。

(3) sliq演算法

sliq演算法對c4.5決策樹分類演算法的實現方法進行了改進,在決策樹的構造過程中採用了「預排序」和「廣度優先策略」兩種技術。

1) 預排序。對於連續屬性在每個內部結點尋找其最優**標準時,都需要對訓練集按照該屬性的取值進行排序,而排序是很浪費時間的操作。為此,sliq演算法採用了預排序技術。所謂預排序,就是針對每個屬性的取值,把所有的記錄按照從小到大的順序進行排序,以消除在決策樹的每個結點對資料集進行的排序。具體實現時,需要為訓練資料集的每個屬性建立乙個屬性列表,為類別屬性建立乙個類別列表。

2) 廣度優先策略。在c4.5演算法中,樹的構造是按照深度優先策略完成的,需要對每個屬性列表在每個結點處都進行一遍掃瞄,費時很多,為此,sliq採用廣度優先策略構造決策樹,即在決策樹的每一層只需對每個屬性列表掃瞄一次,就可以為當前決策樹中每個葉子結點找到最優**標準。

sliq演算法由於採用了上述兩種技術,使得該演算法能夠處理比c4.5大得多的訓練集,在一定範圍內具有良好的隨記錄個數和屬性個數增長的可伸縮性。

然而它仍然存在如下缺點:

1)由於需要將類別列表存放於記憶體,而類別列表的元組數與訓練集的元組數是相同的,這就一定程度上限制了可以處理的資料集的大小。

2) 由於採用了預排序技術,而排序演算法的複雜度本身並不是與記錄個數成線性關係,因此,使得sliq演算法不可能達到隨記錄數目增長的線性可伸縮性。

(4) sprint演算法

為了減少駐留於記憶體的資料量,sprint演算法進一步改進了決策樹演算法的資料結構,去掉了在sliq中需要駐留於記憶體的類別列表,將它的類別列合併到每個屬性列表中。這樣,在遍歷每個屬性列表尋找當前結點的最優**標準時,不必參照其他資訊,將對結點的**表現在對屬性列表的**,即將每個屬性列表分成兩個,分別存放屬於各個結點的記錄。

sprint演算法的優點是在尋找每個結點的最優**標準時變得更簡單。其缺點是對非**屬性的屬性列表進行**變得很困難。解決的辦法是對**屬性進行**時用雜湊表記錄下每個記錄屬於哪個孩子結點,若記憶體能夠容納下整個雜湊表,其他屬性列表的**只需參照該雜湊表即可。由於雜湊表的大小與訓練集的大小成正比,當訓練集很大時,雜湊表可能無法在記憶體容納,此時**只能分批執行,這使得sprint演算法的可伸縮性仍然不是很好。

決策樹理論 Decision tree

決策樹面試被提及的題目 1 決策樹的原理 從根結點開始,對例項的某一特徵進行測試,根據測試的結果,將例項分配到其子結點 每乙個子結點對應著該特徵的乙個取值。如此遞迴地對例項進行測試並分配,直至達到葉結點。最後將例項分配到葉結點的類中。2 決策樹的過程 步驟 決策樹學習通常包括3個步驟 特徵選擇 決策...

Decision Tree演算法(決策樹)

1.定義 決策樹是一種十分常用的分類方法。決策樹是乙個樹結構 可以是二叉樹或非二叉樹 其每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達...

決策樹(decision tree) 二 剪枝

注 本部落格為周志華 機器學習 讀書筆記,雖然有一些自己的理解,但是其中仍然有大量文字摘自周老師的 機器學習 書。決策樹系列部落格 決策樹 一 構造決策樹 決策樹 二 剪枝 決策樹 decision tree 三 連續值處理 決策樹 四 缺失值處理 前面在決策樹 decision tree 一 中介...