1. 程式人生 > >《機器學習》第三章 決策樹學習 筆記加總結

《機器學習》第三章 決策樹學習 筆記加總結

分類問題 子集 觀察 組成 cas 普通 重復 1.0 需要

《機器學習》第三章 決策樹學習


決策樹學習方法搜索一個完整表示的假設空間,從而避免了受限假設空間的不足。決策樹學習的歸納偏置是優越選擇較小的樹。

3.1.簡介


決策樹學習是一種逼近離散值目標函數的方法,在這種方法中學習到的函數被表示為一棵決策樹。


決策樹(Decision Tree)是一種簡單但是廣泛使用的分類器。通過訓練數據構建決策樹,可以高效的對未知的數據進行分類。

決策數有兩大優點:
1)決策樹模型可以讀性好,具有描述性,有助於人工分析;
2)效率高,決策樹只需要一次構建,反復使用,每一次預測的最大計算次數不超過決策樹的深度。


3.2.決策樹表示法


決策樹通過把實例從根節點排列到某個葉子結點來分類實例,葉子結點即為實例所屬的分類。樹上的每一個結點指定了對實例的某個屬性的測試,並且該結點的每一個後繼分支對應於該屬性的一個可能值。分類實例的方法是從這棵樹的根節點開始,測試這個結點的屬性,然後按照給定實例的屬性值對應的樹枝向下移動。然後這個過程在以新結點的根的子樹上重復。

決策樹對應表達式:
(Outlook=Sunny∧Humidity=Normal∨(Outlook=Overcast))∨(Outlook=Rain∧Wind=Weak)


3.3.決策樹學習的適用問題

通常決策樹學習最適合具有以下特征的問題:
1)實例是由“屬性-值”對表示
2)目標函數具有離散的輸出值
3)可能需要析取得描述
4)訓練數據可以包含錯誤
5)訓練數據可以包含缺少屬性值的實例

【核心任務都是要把樣例分類到各可能的離散值對應的類別中,常稱為分類問題】


3.4.基本的決策樹學習算法

基本步驟

決策樹構建的基本步驟如下:

1. 開始,所有記錄看作一個節點

2. 遍歷每個變量的每一種分割方式,找到最好的分割點

3. 分割成兩個節點N1和N2

4. 對N1和N2分別繼續執行2-3步,直到每個節點足夠“純”為止

決策樹的變量可以有兩種:

1) 數字型(Numeric):變量類型是整數或浮點數,如前面例子中的“年收入”。用“>=”,“>”,“<”或“<=”作為分割條件(排序後,利用已有的分割情況,可以優化分割算法的時間復雜度)。

2) 名稱型(Nominal):類似編程語言中的枚舉類型,變量只能重有限的選項中選取,比如前面例子中的“婚姻情況”,只能是“單身”,“已婚”或“離婚”。使用“=”來分割。

如何評估分割點的好壞?如果一個分割點可以將當前的所有節點分為兩類,使得每一類都很“純”,也就是同一類的記錄較多,那麽就是一個好分割點。比如上面的例子,“擁有房產”,可以將記錄分成了兩類,“是”的節點全部都可以償還債務,非常“純”;“否”的節點,可以償還貸款和無法償還貸款的人都有,不是很“純”,但是兩個節點加起來的純度之和與原始節點的純度之差最大,所以按照這種方法分割。構建決策樹采用貪心算法,只考慮當前純度差最大的情況作為分割點。

通過自頂向下構造決策樹來進行學習。構造過程是從“哪一個屬性將在樹的根結點被測試?”這個問題開始的。為了回答這個問題,使用統計測試來確定每一個實例屬性單獨分類訓練樣例的能力。分類能力最好的屬性被選作樹的根結點的測試。然後為根節點屬性的每個可能值產生一個分支,並把訓練樣例排列到適當的分支之下。然後重復整個過程,用每個分支結點關聯的訓練樣例來選取在該點被測試的最佳屬性。這形成了對合格決策樹的貪婪搜索(greedy search),也就是算法從不回溯重新考慮原來的選。


D3(Examples,Target_attribute,Attributes)

Examples即訓練樣例集。Target_attribute是這棵樹要測試的目標屬性。Attributes是除目標屬性外供學習到的決策樹測試的屬性列表。返回一棵能正確分類給定Examples的決策樹。

.如果Examples都為正,那麽返回label=+的單結點樹Root

.如果Examples都為反,那麽返回label=+的單結點樹Root

.如果Attributes為空,那麽返回單結點樹Root,label=Examples中最普遍的Target_attribute的值

.否則開始

.A←Attributes中分類Examples能力最好的屬性

.Root的決策屬性←A

.對於A的每個可能值vi

.在Root下加一個新的分支對應測試A=vi

.令Examples vi為Examples中滿足A屬性值為vi的子集

.如果Examples vi為空

.在這個新分支下加一個葉子結點,結點的label=Examples中最普遍的Target_attribute值

.否則在這個新分支下加一個子樹ID3(Examples vi,Target_attribute,Attributes-{A})

.結束

.返回Root

3.4.1.哪個屬性是最佳的分類屬性

熵(entropy):刻畫了任意樣例集的純度(purity)。
如果目標屬性具有c個不同的值,那麽S相對c個狀態(c-wise)的分類的熵定義為:

Entropy(S)≡∑(i=1,c)-pilog2pi
Pi是S中屬於類別i的比例。


信息增益(information gain):一個屬性的信息增益就是由於使用這個屬性分割樣例而導致的期望熵降低。
Entropy(S,A)≡Entropy(S)-∑(v∈Values(A))(|Sv|/|S|)Entropy(Sv)

Values(A)是屬性A所有可能值的集合,Sv 是S中屬性A的值為v的子集。

例如,假定S包含14個樣例-[9+,5-]。在這14個樣例中,假定正例中的6個和反例中的2個有Wind=Weak,其他的有Wind=Strong。由於按照屬性Wind分類14個樣例得到的信息增益可以計算如下。

Values(Wind)=Weak,Strong

S=[9+,5-]

SWeak←[6+,2-]

Sstrong←[3+,3-]

=Entropy(S)-(8/14)Entropy(SWeak)-(6/14)Entropy(Sstrong)

=0.940-(8/14)0.811-(6/14)1.00

=0.048

3.5.決策樹學習中的假設空間搜索


ID3算法中的假設空間包含所有的決策樹,它是關於現有屬性的有限離散值函數的一個完整空間。
【因為每個有限離散值函數可被表示為某個決策樹,所以ID3算法避免了搜索不完整假設空間的一個主要風險:假設空間不包含目標函數】

當變了決策樹空間時,ID3僅維護單一的當前假設。

基本的ID3算法在搜索中不進行回溯。
【它易受無回溯的爬山搜索中的常見風險影響:收斂到局部最優答案,而不是全局最優答案】

ID3算法在搜索的每一步都使用當前的所有訓練樣例,以統計為基礎覺得怎樣簡化以前的假設。

【使用所有樣例的統計屬性的一個優點是大大降低了對個別訓練樣例錯誤的敏感性】

3.6.決策樹學習的歸納偏置
ID3的搜索策略為:(a)優先選擇較短的樹而不是較長的;(b)選擇那些信息增益高的屬性離根結點較近的樹。

近似的ID3算法歸納偏置:較短的樹比較長的樹優先。

ID3歸納偏置的更貼切近似:較短的樹比較長的樹優先。那些信息增益高的屬性更靠近根結點的樹優先。

3.6.1.限定偏置和優越偏置

ID3與候選消除算法對假設空間搜索的差異:

1)ID3的搜索範圍是一個完整的假設空間

2)變型空間候選消除算法的搜索範圍是不完整的假設空間,但它徹底地搜索這個空間,查找所有與訓練數據一致的假設。
【簡單地講,ID3的歸納偏置來自它的搜索策略,而候選消除算法的歸納偏置來自它對搜索空間的定義】

優先偏置:ID3的歸納偏置是對某種假設勝過其他假設的一種優選,它對最終可列舉的假設沒有硬性限制。這種類型的偏置通常被稱為優先偏置(搜索偏置)。

限定偏置:候選消除算法的偏置是對待考慮假設的一種限定。這種形式的偏置通常被稱為限定偏置(語言偏置)。

如果需要某種形式的歸納偏置來從訓練數據中泛化,那麽我們該優先考慮哪種形式的歸納偏置:優先偏置還是限定偏置?

優選偏置比限定偏置更符合需要,因為它允許學習器工作在完整的假設空間上,這保證了未知的目標函數被包含在內。相反,限定偏置嚴格地限制了假設集合的潛在空間,通常不是我們希望的,因為它同時引入了把未知的目標函數排除在外的可能性。


3.6.2.為什麽短的假設優先

奧坎姆剃刀:優先選擇擬合數據的最簡單的假設。

奧坎姆剃刀困難一:困難在於可以定義很多小的假設集合--其中大多數相當晦澀難解。那麽,我們根據什麽相信有短描述的決策樹組成的小假設集合就比其他眾多可定義的小假設集合更適當呢?

奧坎姆剃刀困難二:假設的大小是由學習器內部使用的特定表示決定的。所以兩個學習器使用不同的假設,兩者又都用奧坎姆剃刀原則得到相互矛盾的結論!

3.7.決策樹學習的常見問題

決策樹學習的實際問題包括:確定決策樹增長的深度;處理連續值的屬性;選擇一個適合的屬性篩選度量標準;處理屬性值不完整的訓練數據;處理不同代價的屬性;提高計算效率。

3.7.1.避免過度擬合數據

定義:給定一個假設空間H,一個假設h∈H,如果存在其他的假設h‘∈H,使得在訓練樣例上h的錯誤率比h‘小,但在整個實例分布上h’的錯誤率比h小,那麽就說假設h過度擬合訓練數據。

當數據中有噪聲或訓練樣例的數量太少以至於不能產生目標函數的代表性的采樣時,這個策略便會遇到困難。這個簡單算法產生的樹會過度擬合訓練樣例。但是運用到測試數據上卻得到非常高的錯誤率。過渡擬合的原因有以下幾點:

噪音數據:訓練數據中存在噪音數據,決策樹的某些節點有噪音數據作為分割標準,導致決策樹無法代表真實數據。

缺少代表性數據:訓練數據沒有包含所有具有代表性的數據,導致某一類數據無法很好的匹配,這一點可以通過觀察混淆矩陣(Confusion Matrix)分析得出。

多重比較(Mulitple Comparition):舉個列子,股票分析師預測股票漲或跌。假設分析師都是靠隨機猜測,也就是他們正確的概率是0.5。每一個人預測10次,那麽預測正確的次數在8次或8次以上的概率只有5%左右,比較低。但是如果50個分析師,每個人預測10次,選擇至少一個人得到8次或以上的人作為代表,那麽概率概率十分大,隨著分析師人數的增加,概率無限接近1。但是,選出來的分析師其實是打醬油的,他對未來的預測不能做任何保證。上面這個例子就是多重比較。這一情況和決策樹選取分割點類似,需要在每個變量的每一個值中選取一個作為分割的代表,所以選出一個噪音分割標準的概率是很大的。

有幾種途徑可被用來避免決策樹學習中過度擬合。他們可被分為兩類:

及早停止樹增長,在ID3算法完美分類訓練數據之前就停止樹增長;

後修剪法,即允許樹過度擬合數據,然後對這個樹進行後修建。


解決這個問題的方法包括:

使用與訓練樣例截然不同的一套分離的樣例,來評估通過後修剪法從樹上修剪結點的效用。

使用所有可用數據進行訓練,但進行統計測試來估計擴展(或修剪)一個特定的結點是否有可能改善在在訓練集合外的實例上的性能。

使用一個明確的標準來衡量訓練樣例和決策樹的復雜度,當這個編碼的長度最小時停止樹增長。

上面第一種方法是最普通的,它常被稱為訓練和驗證集法。這種方法中,可用的數據被分成兩個樣例集合:一個訓練集合用來形成學習到的假設,一個分離的驗證集合用來評估這個假設在後續數據上的精度,確切地說是用來評估修剪這個假設的影響。【動機:即使學習器可能會被訓練集合中的隨機錯誤和巧合規律性所誤導,但驗證集合不大可能表現出同樣的隨機波動。所以,驗證集合可以用來對過度擬合訓練集中的虛假特征提供防護檢驗。很重要一點是驗證集合應該足夠大,以便它本身可提供具有統計意義的實例樣本。常見做法:1/3用作驗證集合2/3作訓練集合】


錯誤率降低修剪步驟組成:刪除以此結點為根的子樹;使它成為葉子結點;把和該結點關聯的訓練樣例的最常見分類賦給它。僅當修剪後的樹對於驗證集合的性能不比原來的樹差時才刪除該結點。

如果有大量的數據可供使用,那麽使用分離的數據集合來引導修剪時一個有效的方法。這個方法的主要缺點是當數據有限時。從中保留一部分用作驗證集合進一步減少了訓練可以使用的樣例。

規則後修剪
規則後修剪包括下面的步驟:


1)從訓練集合推導出決策樹,增長決策樹直到盡可能好地擬合訓練數據,允許,過度擬合發生。

2)將決策樹轉化為等價的規則集合,方法是為從根結點到葉子結點的每一條路徑創建一條規則。
3)通過刪除任何能導致估計精度提高的前件來修剪每一條規則。
4)按照修剪過的估計精度對它們進行排序,並按這樣順序應用這些規則來分類後來的實例。

為什麽修剪之前要把決策樹轉化成規則集呢?這樣做主要有三個好處:

轉化為規則集可以區分決策結點使用的不同上下文。

轉化為規則集消除了根結點附近的屬性測試和葉結點附近的屬性測試的區別。

轉化為規則以提高可讀性。


3.7.3.屬性選擇的其他度量標準

太多的可能值必然把訓練樣例分割成非常小的空間。因此,相對訓練樣例,它會有非常高的信息增益,盡管對於未見實例它是一個非常差的目標函數預測器。避免這個不足的一種方法是用其他度量而不是信息增益來選擇決策屬性。一個可以選擇的度量標準是增益比率。增益比率通過加入一個唄稱作分裂信息的項來懲罰類似Date的屬性,分裂信息用來衡量屬性分裂數據的廣度和均勻性:
SplitInformation(S,A)≡-∑(i=1,c)(|Si|/|S|)log2(|Si|/|S|)

增益比率度量是用前面的增益度量和這裏的分裂信息度量來共同定義的,即
GainRatio(S,A)≡(Gain(S,A))/(SplitInformation(S,A))

距離的度量:它不偏向有大量值的屬性,並報告了其實驗研究,說明了這種方法產生的決策樹的預測精度與增益法和增益比率法得到的結果沒有明顯的差別。而且這種距離度量避免了增益比率度量的實際困難。

3.7.4.處理缺少屬性值得訓練樣例
在某些情況下,可供使用的數據可能缺少某些屬性值。在這種情況下,經常需要根據此屬性值已知的其他實例來估計這個缺少的屬性值。

處理缺少屬性值的策略一:賦給它結點n的訓練樣例中該屬性的最常見值。另一種策略是可以賦給它結點n的被分類為c(x)的訓練樣例中該屬性的最常見值。然後使用這個估計值的訓練樣例就可以被現有的決策樹學習算法使用了。


處理缺少屬性值的策略二:為A的每個可能值賦予一個概率,而不是簡單地將最常見的值賦給A(x)。根據結點n的樣例上A的不同值的出現頻率,這些概率可以被再次估計。

3.7.5處理不同代價的屬性

度量代替信息增益屬性選擇度量,學到了更加有效的識別策略,同時沒有損失分類的精度。
Gain^2(S,A)/Cost(A)

《機器學習》第三章 決策樹學習 筆記加總結