《數據挖掘導論》 - 讀書筆記(5) - 分類:基本概念、決策樹與模型評估 [2016-8-21]


第4章  分類:基本概念、決策樹與模型評估

  分類任務就是確定對象屬於哪個預定義的目標類。分類問題是一個普遍存在的問題,有許多不同的應用。例如:根據電子郵件的標題和內容檢查出垃圾郵件,根據核磁共振掃描的結果區分腫瘤是惡性的還是良性的,根據星系的形狀對它們進行分析。

  本章介紹分類的基本概念,討論諸如模型的過分擬合等關鍵問題,並提供評估和比較分類技術性能的方法。盡管本章主要關注一種稱作決策樹歸納的技術,但是本章討論的大部分內容也適用於其他的分類技術。

4.1 預備知識

  分類任務的輸入數據是記錄的集合。每條記錄也稱為實例或樣例,用元組(x,y)表示,其中x是屬性的集合,而y是一個特殊的屬性,指出樣例的類標號(也稱為分類屬性或目標屬性)。下表列出一個樣本數據集,用來將脊椎動物分成以下幾類:哺乳類、鳥類、魚類、爬行類和兩棲類。屬性集致命脊椎動物的性質,如提問、表皮覆蓋、反之后代的方式、飛行的能力和在水中生存的能力等。盡管下表中的屬性主要是離散的,但是屬性集也可以包含連續特征。另一方面,類標號卻必須是離散屬性,這正是區別分類與回歸(regression)的關鍵特征。回歸是一種預測建模任務,其中目標屬性y是連續的。

  

  定義4.1 分類(classification)  分類任務就是通過學習得到一個目標函數(target function),把每個屬性集x映射到一個預先定義的類標號y

  目標函數也稱為分類模型(classification model)。分類模型可以用於以下目的。

  描述性建模  分類模型可以作為解釋性的工具,用於區分不同類中的對象。例如對於生物學家或者其他人,一個描述性模型有助於概括上表中的數據,並說明哪些特征決定一種脊椎動物是哺乳類、爬行類、鳥類、魚類或兩棲類。

  預測性建模  分類模型還可以用於預測未知記錄的類標號。如下圖所示,分類模型可以看做一個黑箱,當給定未知記錄的屬性集上的值時,它自動地賦予未知樣本類標號。例如,假設有一種叫做毒蜥的生物,其特征如下:

  

 

可以根據使用4-1中的數據集建立的分類模型來確定該生物所屬的類。

  

 

  分類技術非常適合預測或描述二元或標稱類型的數據集。對於序數分類(例如把人類分成高收入、中等收入或低收入組),分類技術不太有效。因為分類技術部考慮隱含在目標類中的序關系。其他形式的聯系,如子類與超類的關系也被忽略。本章余下的部分只考慮二元的或標稱類型的類標號。

4.2 解決分類問題的一般方法

  分類技術是一種根據輸入數據集簡歷分類模型的系統方法。分類法的例子包括決策樹分類法、基於規則的分類法、神經網絡、支持向量機和朴素貝葉斯分類法。這些技術都使用一種學習算法(learning algorithm)確定分類模型,該模型能夠很好地擬合輸入數據中類標號和屬性之間的聯系。學習算法得到的模型不僅要很好地擬合輸入數據,還要能夠正確地預測未知樣本的類標號。因此,訓練算法的主要目標就是建立具有很好的泛化能力模型,即建立能夠准確地預測未知樣本類標號的模型。

  下圖展示解決分類問題的一般方法。首先,需要一個訓練集(training set),它由類標號已知的記錄組成,使用訓練集簡歷分類模型,該模型隨后將運用於檢驗集(test set),檢驗集由類標號未知的記錄組成。

  

 

  分類模型的性能根據模型正確和錯誤預測的檢驗記錄進行評估,這些計數存放在稱作混淆矩陣(confusion matrix)的表格中。表4-2描述二元分類問題的混淆矩陣。表中每個表項fij表示實際類標號為i但被預測為類j的記錄數。例如,f01代表原本屬於類0單被誤分類為1的記錄數。按照混淆矩陣中的表項,被分類模型正確預測的樣本總數是(f11+f00),而被錯誤預測的樣本總數是(f10+f01)。

  

 

  雖然混淆矩陣通過衡量分類模型性能的信息,但是用一個數據匯總這些信息更便於比較不同模型的性能。為實現這一目的,可以使用性能度量(performance metric),如准確率(accuracy),其定義如下:

  

 

  同樣,分類模型的性能可以用錯誤率(error rate)來表示,其定義如下:

  

  大多數分類算法都在尋求這樣一些模型,當把他們應用於檢驗集時具有最高的准確率,或者等價地,具有最低的錯誤率。在4.5節再次討論模型的評估問題。

4.3 決策樹歸納

  本節介紹決策樹(decision tree)分類法,這是一種簡單但卻廣泛使用的分類技術。

4.3.1 決策樹的工作原理

  為解決決策樹分類的工作原理,考慮上一節中介紹的脊椎動物分類問題的簡化版本。這里我們不把脊椎動物分為五個不同的物種,而只考慮兩個類別:哺乳類動物和非哺乳類動物。

  假設科學家發現一個新的物種,怎么判斷它是哺乳動物還是非哺乳動物呢?一種方法是針對物種的特征提出一系列問題,第一個問題可能是,該物種是冷血動物還是恆溫動物。如果它是冷血的,則該物種肯定不是哺乳動物;否則它或者是鳥類,或者是某種哺乳動物。如果它是恆溫的,需要接着問:該物種是由雌性產崽進行繁殖的嗎?如果是,則它肯定為哺乳動物,否則它有可能是非哺乳動物。

  通過一處一系列精心構思的關於檢驗記錄屬性的問題,可以解決分類問題。每當一個問題得到答案,后續的問題將隨之而來,知道我們得到記錄的類標號。這一些列的問題和這些問題的可能回答可以組織成決策樹的形式,決策樹是一種由節點和有向邊組成的層次結構。圖4-4顯示哺乳類動物分類問題的決策樹,樹中包含三種節點。

  根結點(root node),它沒有入變,但有零條或多條出邊。

  內部結點(internal node),恰有一條入邊和兩條或多條出邊。

  葉結點(leaf node),恰有一條入邊,但沒有出邊。

  在決策樹中,每個葉結點都賦予一個類標號。非終結點(包括根節點和內部結點)包含屬性測試條件,用以區分不同特性的記錄。例如,在下圖中,在根節點處,使用提問這個屬性把冷血脊椎動物和恆溫脊椎動物區別開來。因為所有的冷血脊椎動物都是非哺乳動物,所以用一個類稱號為非哺乳動物的葉節點作為根節點的右子女。如果脊椎動物的提問是恆溫的,則接下來用胎生這個屬性來區分哺乳動物與其他恆溫動物(主要是鳥類)。

  

  一旦構造了決策樹,對檢驗記錄進行分類就相當容易了。從樹的根節點開始,將測試條件用於檢驗記錄,根據測試結果選擇適當的分支。沿着該分支或者到達另一個內部結點,使用新的測試條件,或者到達一個葉節點。到達葉節點之后,葉節點的類稱號就被賦值給該檢驗記錄。例如,下圖顯示應用決策樹預測火烈鳥的類標號所經過的路徑,路徑終止於類稱號為非哺乳動物的葉節點。

  

4.3.2 如何建立決策樹

  原則上講,對於給定的屬性集,可以構造的決策樹的數目達指數級。盡管某些決策樹比其他決策樹更准確,但是由於搜索空間是指數規模的,找出最佳決策樹在計算上是不可行的。盡管如此,人們還是開發了一些有效的算法,能夠在合理的時間內構造出具有一定准確率的次最優決策樹。這些算法通常都采用貪心策略,在選擇划分數據的屬性時,采取一系列局部最優決策來構造決策樹。Hunt算法是一種這樣的算法。Hunt算法是許多決策樹算法的基礎,包括ID3、C4.5和CART。本節討論Hunt算法並解釋它的一些設計問題。

  1. Hunt算法

  在Hunt算法中,通過將訓練記錄相繼划分成較純的子集,以遞歸方式建立決策樹。設Dt是與節點t相關的訓練記錄集,而y={y1,y2,...,yc}是類標號,Hunt算法的遞歸定義如下:

  (1)如果Dt中所有記錄都屬於用一個類yt,則t是葉節點,用yt標記。

  (2)如果Dt中包含屬於多個類的記錄,則選擇一個屬性測試條件(attribute test condition),將記錄划分成較小的子集。對於測試條件的每個輸出,創建一個子女節點,並根據測試結果將Dt中的記錄分布到子女節點中。然后對於每個子女節點,遞歸地調用該算法。

  為了解釋該算法如何執行,考慮如下問題:預測貸款申請者是會按時歸還貸款,還是會拖欠貸款。對於這個問題,訓練數據集可以通過考察以前貸款者的貸款記錄來構造。下圖所示的例子中,每條記錄都包含貸款者的個人信息,以及貸款者是否拖欠貸款的類標號。

  

 

  該分類問題的初始決策樹只有一個節點,類標號為“拖欠貸款者=否”,意味着大多數貸款者都按時歸還貸款。然而,該樹需要進一步細化,因為根節點包含兩個類的記錄。根據“有房者”測試條件,這些記錄被划分為較小的子集,如圖(b)所示。選取屬性測試條件的理由稍后討論,目前,我們假定此處這樣選擇是划分數據的最優標准。接下來,對根節點的每個子女遞歸地調用Hunt算法。從上圖給出的訓練數據集可以看出,有房的貸款者都能按時償還了貸款,因此,根節點的左子女為葉節點,標記為“拖欠貸款者=否”。對於右子女,我們需要繼續遞歸地調用Hunt算法,知道所有的記錄都屬於同一類為止。每次遞歸調用所形成的決策樹顯示在圖(c)圖(d)中。

 

  如果屬性值的每種組合都在訓練數據集中出現,並且每種組合都具有唯一的類標號,則Hunt算法是有效的。但是對於大多數實際情況,這些假設太苛刻了。因此,需要附加的條件來處理以下的情況。

  (1)算法的第二步鎖創建的子女節點可能為空,即不存在與這些結點相關聯的記錄。如果沒有一個訓練記錄包含與這樣的節點相關聯的屬性值組合,這種情形就可能發生。這時,該節點稱為葉節點,類標號為其父節點上訓練記錄中的多數類。

  (2)在第二步,如果與Dt相關聯的所有記錄都具有相同的屬性值,則不可能進一步划分這些記錄。在這種情況下,該結點為葉結點,其標號與該結點相關聯的訓練記錄中的多數類。

  2. 決策樹歸納的設計問題

  決策樹歸納的學習算法必須解決下面的兩個問題:  

  (1)如何分裂訓練記錄?  樹增長過程的每個遞歸步都必須選擇一個屬性測試條件,將記錄划分成較小的子集。為了實現這個步驟,算法必須提供為不同類型的的屬性指定測試條件的方法,並且提供評估每種測試條件的客觀度量。

  (2)如何停止分裂過程?  需要有結束條件,以終止決策樹的生長過程。一個可能的策略是分列二結點,直到所有的記錄都屬於同一個類,或者所有的記錄都具有相同的屬性值。盡管兩個結束條件對於結束決策樹歸納算法都是允許的,但是還可以使用其他的標准提前終止樹的生長過程。提前終止的優點將在4.4.5節討論。

4.3.3 表示屬性測試條件的方法

  決策樹歸納算法必須為不同類型的屬性提供表示屬性測試條件和其對應輸出的方法。

  二元屬性  二元屬性的測試條件產生兩個可能的輸出,如下圖所示:

  

  標稱屬性  由於標稱屬性有多個屬性值,它的測試條件可以用兩種方法表示,對於多路划分,其輸出數取決於該屬性值的個數。例如,如果屬性婚姻狀況有三個不同的屬性值---單身、已婚、離異,則它的測試條件就會產生一個三路划分。另一方面,某些決策樹算法(如CART)只產生二元化分,它們考慮創建k個屬性值的二元化分的所有2^(k-1)-1種方法。圖(b)顯示了把婚姻狀況的屬性值划分為兩個子集的三種不同的分組方法。

  

  序數屬性  序數屬性也可以產生二元或多路划分,只要不違背序數屬性值的有序性,就可以對屬性值進行分組。下圖顯示了按照屬性襯衣尺碼划分訓練記錄的不同的方法。圖(a)和圖(b)中的分組保持了屬性值間的序關系,而圖(c)所示的分組則違反了這一性質,因為它把小號和大號分為一組,把中號和加大號放在另一組。

  

 

 

  連續屬性  對於連續屬性來說,測試條件可以是具有二元輸出的比較冊書(A<v)或(A≥v),也可以是具有形如輸出的范圍查詢。下圖顯示了這些方法的差別。對於二元划分,決策樹算法必須考慮所有可能的划分點v,並從中選擇產生最佳划分的點。對於多路划分,算法必須考慮所有可能的連續值區間。可以采用2.3.6節介紹的離散化的策略,離散化之后,每個離散化區間賦予一個新的序數值,只要保持有序性,相鄰的值還可以聚集成較寬的區間。

  

4.3.4 選擇最佳划分的度量

  有很多度量可以用來確定划分記錄的最佳方法,這些度量用划分謙和划分后記錄的類分布定義。

  設p(i|t)表示給定結點t中屬於類i的記錄所占的比例,有時,我們省略結點t,直接Pi表示該比例。在兩類問題中,任意結點的類分布都可以記錄(p0,p1),其中p1=1-p0。例如,考慮下圖中的測試條件,划分前的類分布時(0.5,0.5),因為來自每個類的記錄數相等。如果使用性別屬性來划分數據,則子女結點的類分布分別為(0.4,0.4)和(0.4,0.6),雖然划分后兩個類的分布不再平衡,但是子女結點仍然包含兩個類的記錄;按照第二個屬性車型進行划分,將得到純度更高的划分。

  

  選擇最佳划分的度量通常是根據划分后子女結點不純性的程度。不純的程度越低,類分布就越傾斜。例如,類分布為(0,1)的結點具有零不純性,而均衡分布(0.5,0.5)的結點具有最高的不純性。不純性度量的例子包括:

  

  其中c是類的個數,並且在計算熵時,Olog20=0。

  下圖顯示了二分類問題不純性度量值的比較,p表示屬於其中一個類的記錄所占的比例。從圖中可以看出,三種方法都在類分布均衡時(即當p=0.5時)達到最大值,而當所有記錄都屬於同一個類時(p等於1或0)達到最小值。下面我們給出三種不純性度量方法的計算實例。

  

  

  從上面的例子及上圖可以看出,不同的不純性度量是一致的。根據計算,結點N1具有最低的不純性度量值,接下來依次是N2,N3,雖然結果是一致的,但是作為測試條件的屬性選擇仍然因不純性度量的選擇而異。

  為了確定測試條件的效果,我們需要比較父結點(划分前)的不純程度和子女結點(划分后)的不純程度,它們的差越大,測試條件的效果就越好,增益是一種可以用來確定划分效果的標准:

  

  

   其中,I(.)是給定結點的不純性度量,N是父結點上的記錄總數,k是屬性值的個數N(v=vj)是與子女結點vj相關聯的記錄個數。決策樹歸納算法通常選擇最大化增益的測試條件,因為對所有的測試條件來說,I(parent)是一個不變的值,所以最大化增益等價於最小化子女結點的不純性度量的加權平均值。最后,當選擇熵(entropy)作為上述公式的不純性度量時,熵的差就是所謂信息增益(information gain)

  1. 二元屬性的划分

  

  考慮4-14中的圖表,假設有兩種方法將數據划分成較小的子集。划分前,Gini指標等於0.5,因為屬於兩個類的記錄的個數相等。如果選擇屬性A划分數據,節點N1的Gini指標等於0.486,而N2的Gini指標等於0.480,派生結點的Gini指標的加權平均為(7/12)*0.4898+(5/12)*0.480=0.486。類似的,我們可以計算屬性B的Gini指標甲醛平均值是0.371。因為屬性B具有更小的Gini指標,它比屬性A更可取。

  2. 標稱屬性的划分

  正如前面提到的,標稱屬性可以產生二元划分或多路划分。如圖4-15所示。二元划分的Gini指標與計算與二元屬性類型。對於車型屬性第一種二元分組,{運動,豪華}的Gini指標是0.4922,而{家用}的Gini指標是0.3750。該分組的Gini指標加權平均是:

  16/20*0.4922 + 4/20*0.3750=0.468

  

  類似的,對第二種二元分組{運動}和{家用,豪華},Gini指標加權平均是0.167。第二種分組的Gini指標值相對較低,因為其對應的子集的純度高的多。

  對於多路划分,需要計算每個屬性值Gini指標。Gini({家用{)=0.375,Gini({運動})=0,Gini({豪華})=0.219,多路划分的總Gini指標等於:

  4/20*0.375 + 8/20*0 + 8/20*0.219 = 0.163

  多路划分的Gini指標比兩個二元划分都小,這一結果並不奇怪,因為二元划分實際上合並了多路划分的某些輸出,自然降低了子集的純度。

  

 

  3. 連續屬性的划分

  考慮圖4-16所示的例子,其中測試條件“年收入≤v”用來划分拖欠貸款分類問題的訓練數據,用窮舉法確定v的值,將N各記錄中所有的屬性值都作為候選划分點。對每個候選v,都要掃描一次數據集,統計年收入大於和小於v的記錄數,然后計算每個候選的Gini的指標,並從中選擇具有最小值的候選划分點。這種方法的計算代價是昂貴的,因為對每個候選划分點計算Gini指標需要O(N)次操作,由於有N個候選,總的計算復雜度為O(N^2)。為了降低計算復雜度,按照年收入將訓練記錄排序,所需要的時間為O(NlogN),從兩個相鄰的排過序的屬性值中選擇中間值作為候選划分點,得到候選划分點55,56,72等。無論如何,與窮舉方法不同,在計算候選划分點的Gini指標時,不需要考察所有N個記錄。

  

  對第一個候選v=55,沒有年收入小於55K的記錄,所以年收入<55k的派生結點的Gini指標是0;另一方面,年收入大於或等於55K的樣本記錄數目分別為3(類Yes)和7(類No),這樣,該結點的Gini指標是0.420.該候選划分的總Gini指標等於0*0+1*0.420=0.420。

  ..........

  4. 增益率

  熵和Gini指標等不純性度量去向有利於具有大量不同值的屬性。圖4-12顯示了三種可供選擇的測試條件。第一個測試條件性別與第二個測試條件車型相比,容易看出車型視乎提供了更好的划分數據的方法,因為它產生更純的派生結點。而然,如果將這兩個條件與顧客ID相比,后者看起來產生更純的划分,但顧客ID卻不是一個有預測性的屬性,因為每個樣本在該屬性上的值都是唯一的。即使在不太極端情形下,也不會希望產生大量輸出的測試條件,因為與每個划分相關聯的記錄太少,以致不能做出可靠的預測。

  解決該問題的策略有兩種。第一種策略是限制測試條件只能是二元划分,CART這樣的決策樹算法采用的就是這種策略;另一種策略是修改評估划分的標准,把屬性測試條件產生的輸出數也考慮進去。例如,決策樹算法C4.5采用稱作增益率(gain ratio)的划分標准來評估划分。增益率定義如下:

  

其中,划分信息,而k是划分的總數。例如,如果每個屬性值具有相同的記錄數,則,而信息划分等於Log2K。這說明如果某個屬性產生了大量的划分,它的划分信息將會很大,從而降低了增益率。

4.3.5 決策樹歸納算法

  算法4.1給出了稱作TreeGrowth的決策樹歸納算法的框架。該算法的輸入是訓練記錄集E合屬性集F。算法遞歸地選擇最優的屬性來划分數據(步驟7),並擴展樹的葉結點(步驟11和步驟12),知道滿足結束條件(步驟1)。算法的細節如下:

  (1)函數createdNode()為決策樹建立新結點。決策樹的節點或者是一個測試條件,記作mode.test_cond,或者是一個類標號,記作node.label。

  (2)函數find_best_split()確定應當選擇哪個屬性作為划分訓練記錄的測試條件。如前所述,測試條件的選擇取決於使用哪種不純性度量來評估划分,一些廣泛使用的度量包括熵、Gini指標和X2統計量。

  (3)函數Classify()為葉結點確定類標號。對於每個葉結點t,令P(i|t)表示該節點上屬於類i的訓練記錄所占的比例,在大多數情況下,都將葉結點指派到具有多數記錄的類:

  leaf.label=argmax p(i|t)

其中,操作argmax返回最大化p(i|t)的參數值i。p(i|t)除了提供確定葉結點類標號所需要的信息之外,還可以用來估計分配到葉結點t的記錄屬於類i的概率。5.7節討論如何使用這種概率估計,在不同的代價函數下,確定決策樹的性能。

  (4)函數stopping_cond()通過檢查是否所有的記錄都屬於同一個類,或者都具有相同額屬性值,決定是否終止決策樹的增長。終止遞歸函數的另一種方法是,檢查記錄數是否小於某個最小閾值。

  

  建立決策樹之后,可以進行樹剪枝(tree-pruning),以減小決策樹的規模。決策樹過大容易受所謂過分擬合(overfitting)現象的影響。通過修建初始決策樹的分支,剪枝有助於提高決策樹的泛化能力。過分擬合和樹剪枝問題將在4.4更詳細的討論。

4.3.6 例子,Web機器人檢測

  web使用挖掘就是利用數據挖掘的技術,從web訪問日志中提取有用的模式。這些模式能夠提示站點訪問者的一些有趣特性:例如,一個人頻繁地訪問某個web站點,並打開介紹同一產品的網頁,如果商家提供一些打折或者免費運輸的優惠,這個人很可能會購買這種商品。

  在web使用挖掘中,重要的是要區分用戶訪問和web機器人(web robot)訪問。web機器人(又稱為web爬蟲)是一個軟件程序,它可以自動跟蹤嵌入網頁中的超鏈接,定位和獲取Internet上的信息。這些程序安裝在搜索引擎的入口,收集索引網頁必須的文檔。在應用web挖掘技術分析人類的瀏覽習慣之前,必須過濾掉web機器人的訪問。

  本節介紹如何使用決策樹分類法來區分正常的用戶訪問和由web機器人產生的訪問。輸入數據取自web服務器日志,它的一個樣本顯式在圖4-17a中,每行對應於web客戶(用戶或web機器人)的一個頁面訪問請求。web日志記錄的字段包括客戶端的IP地址、請求的時間戳、請求訪問的文檔的網址、文檔的大小、客戶的身份(通過用戶代理字段獲得)。web會話是客戶在一次網站訪問期間發出的請求序列,每個web會話都可以用有向圖來建模,其中節點對應於網頁,而有向邊對應於連接網頁的超鏈,圖4-17b顯示web服務器日志中第一次web繪畫的圖形表示。

  

  為了對web會話進行分類,需要構造描述每次會話特性的特征。圖4-17c顯示了web機器人檢測任務使用的一些特征。顯著的特征有遍歷的深度和寬度。深度確定請求頁面的最大距離,其中距離用自網站入口點的超鏈數量度量。例如,假設主頁http://www.cs.umn.edu/~kumar的深度為0,則http://www.cs.umn.edu/~kumar/MINDS/MINDS_papers.htm的深度為2。根據圖4-17b中的web圖,第一次會話的深度等於2。寬度屬性度量web圖的寬度。例如,圖4-17b中顯示的web會話的寬度等於2。

  用於分類的數據集包含2916個記錄,web機器人(類1)和正常用戶(類2)會話的個數相等,10%的數據用於訓練,而90%的數據用於檢驗。生成的決策樹模型顯示在圖4-18中,該決策樹在訓練集上的錯誤率為3.8%,在檢驗集上的錯誤率為5.3%。

  該模型表明可以從以下4個方面區分出web機器人和正常用戶。

  (1)web機器人的訪問傾向於寬而淺,而正常用戶訪問比較集中(窄而深)。

  (2)與正常的用戶不同,web機器人很少訪問與web文檔相關的圖片頁。

  (3)web機器人的會話的長度趨於較長,包含了大量請求頁面。

  (4)web機器人更可能對相同的文檔發出重復的請求,因為正常用戶訪問的網頁常常會被瀏覽器保存。

  

4.3.7 決策樹歸納的特點

  下面是對決策樹歸納算法重要特點的總結。

  (1)決策樹歸納是一種構建分類模型的非參數方法。換句話說,它不要求任何先驗假設,不假定類和其他屬性服從一定的概率分布。

  (2)找到最佳的決策樹是NP完全問題。許多決策樹算法都采取啟發式的方法指導對假設空間的搜索。例如,4.3.5節中介紹的算法就采用了一種貪心的、自頂向下的遞歸划分策略建立決策樹。

  (3)已開發的構建決策樹技術不需要昂貴的計算代價,即使訓練集非常大,也可以快速建立模型。此外,決策樹一旦建立,位置樣本分類非常快,最壞情況下的時間復雜度是O(w),其中w是樹的最大深度。

  (4)決策樹相對容易解釋,特別是小型的決策樹,在很多簡單的數據集上,決策樹的准確率也可以與其他分類算法相媲美。

  (5)決策樹是學習離散值函數的典型代表。然而,它不能很好地推廣到某些特定的布爾問題。一個著名的例子是奇偶函數,當奇數(偶數)個布爾屬性為真時其值為0(1)。對這樣的函數准確建模需要一顆具有2d個結點的滿決策樹,其中d是布爾屬性的個數。

  (6)決策樹算法對於噪聲的干擾具有相當好的魯棒性,采用避免過分擬合的方法之后尤其如此。避免過分擬合的方法將在4.4節介紹。

  (7)冗余屬性不會對決策樹的准確率造成不利的影響。一個屬性如果在數據中它與另一個屬性是強相關的,那么它是冗余的。在兩個冗余的屬性中,如果已經選擇其中一個作為用於划分的屬性,則另一個將被忽略。然而,如果數據集中含有很多不相關的屬性(即對分類任務沒有用的屬性),則某些不相關屬性可能在樹的構造過程中偶然被選中,導致決策樹過大龐大。通過在預處理階段刪除不相關屬性,特征選擇技術能夠版主提高決策樹的准確率。將在4.4.3節考察不相關屬性過多的問題。

  (8)由於大多數的決策樹算法都采用自頂向下的遞歸划分方法,因此沿着樹向下,記錄會越來越少。在葉結點,記錄可能太少,對於葉結點代表的類,不能做出具有統計意義的判決,這就是所謂的數據碎片(data fragmentation)問題。解決該問題的一種可行的方法是,當樣本小於某個特定閾值時停止分裂。

  (9)子樹可能在決策樹中重復多次,如圖4-19所示,這使得決策樹過於復雜,並且可能更難解釋。當決策樹的每個內部結點都依賴單個屬性測試條件時,就會出現這種情形。由於大多數的決策樹算法都采用分治划分策略,因此在屬性空間的不同部分可以使用相同的測試條件,從而導致子樹重復問題。

  

  (10)迄今為止,本章介紹的測試條件每次都只涉及一個屬性。這樣,可以將決策樹的生長過程看成划分屬性空間為不相交的區域的過程,直到每個區域都只包含同一類的記錄(見圖4-20)。兩個不同類的相鄰區域之間的邊界稱作決策邊界(decision boundary)。由於測試條件只涉及單個屬性,因此決策邊界是直線,即平行於“坐標軸”,這就限制了決策樹對連續屬性之間復雜關系建模的表達能力。圖4-21顯示了一個數據集,使用一次只涉及一個屬性的測試條件的決策樹算法很難有效地對它進行分類。

  

  

  斜決策樹(oblique decision tree)可以克服以上的局限,因為它允許測試條件涉及多個屬性。圖4-21中的數據集可以很容易地用斜決策樹表示,該斜決策樹只有一個結點,其測試條件為:

  x+y<1

盡管這種技術具有更強的表達能力,並且能夠產生更緊湊的決策樹,但是為給定的結點找出最佳測試條件的計算可能是相當復雜的。

  構造歸納(constructive induction)提供另一種將數據划分成齊次非矩形區域的方法(見2.3.5節),該方法創建符合屬性,代表已有屬性的算術或邏輯組合。新屬性提供了更好的類區分能力,並在決策樹歸納之前就增廣到數據集中。與斜決策樹不同,構造歸納不需要昂貴的花費,因為在構造決策樹之前,它只需要一次性地確定屬性的所有相關組合。相比之下,在擴展每個內部結點時,斜決策樹都需要動態地確定正確的屬性組合。然而,構造歸納會產生冗余的屬性,因為新創建的屬性是已有屬性的組合。

  (11)研究表明不純性度量方法的選擇對決策樹算法的性能的影響很小,這是因為許多度量方法相互之間都是一致的,如圖4-13所示,實際上,樹剪枝對最終決策樹的影響比不純性度量選擇的影響更大。

4.4 模型的過分擬合

  分類模型的誤差大致分為兩種:訓練誤差(training error)泛化誤差(generalization error)。訓練誤差也稱再代入誤差(resubstitution error)或表現誤差(apparent error),是在訓練記錄上誤分類樣本比例,而泛化誤差是模型在未知記錄上的期望誤差。

  回顧4.2節,一個好的分類模型不僅要能夠很好地擬合訓練數據,而且對未知樣本也要能准確地分類。換句話說,一個好的分類模型必須具有低訓練誤差和低泛化誤差。這一點非常重要,因為對訓練數據擬合度過高的模型,其泛化誤差可能比具有較高訓練誤差的模型高。這種情況就是所謂的模型過分擬合。

  二維數據過分擬合的例子 關於過分擬合問題的具體例子,考慮圖4-22所示的二維數據集。數據集中的數據點屬於兩個類,分別標記為類“0”和類“+”,類“0”的數據點由三個高斯分布混合產生,而類“+”的數據點用一個均勻分布產生。數據集中,總共有1200個數據點是屬於類“0”,1800個屬於類“+”,其中30%的點用於訓練,剩下的70%用於檢驗。對訓練集使用以Gini指標作為不純性度量的決策樹分類。為了研究過分擬合的影響,對初始的、完全生長的決策樹進行了不同程度的剪枝。圖4-23顯示了決策樹的訓練誤差和檢驗誤差。

  

 

   注意,當決策樹很小時,訓練和檢驗誤差都很大,這種情況稱作模型擬合不足(model underfitting)。出現擬合不足的原因是模型尚未學習到數據的真實結構,因此,模型在訓練集合檢驗集上的性能都很差。隨着決策樹中結點數的增加,模型的訓練誤差和檢驗誤差都會隨之降低。然而,一旦樹的規模變得太大,即使訓練誤差還在繼續降低,但是檢驗誤差開始增大,這種現象稱為模型過分擬合(model overfitting)

  

  為了理解過分擬合現象,注意模型的訓練誤差隨模型的復雜度增加而降低。例如,可以擴展樹的葉結點,直到它完全擬合訓練誤差為0,但是檢驗誤差可能很大,因為該樹可能包含這樣的結點,它們偶然地擬合訓練數據中某些噪聲。這些結點降低了決策樹的性能,因為它們不能很好的泛化到檢驗樣本。圖4-24是兩顆具有不同結點數的決策樹,結點樹少的決策樹具有較高的訓練誤差,但是與更復雜的樹相比,它具有較低的檢驗誤差。

  

  過分擬合與擬合不足是兩種與模型復雜度有關的異常現象。本節余下的部分將繼續討論造成模型過分擬合的一些潛在因素。

4.4.1 噪聲導致的過分擬合

  考慮表4-3和表4-4中哺乳動物的分類問題的訓練數據集合和檢驗數據集合。十個訓練記錄中有兩個被錯誤地標記:蝙蝠和鯨被錯誤地標記為非哺乳類動物,而不是哺乳動物。

  

  完全擬合訓練數據的決策樹實現在圖4-25a中。雖然該樹的訓練誤差為0,但它在檢驗數據上的誤差高達30%。人和海豚都被誤分類為非哺乳類動物,因為它們在屬性體溫、胎生、4條腿上的屬性值與訓練數據中被錯誤標記的樣本屬性值相同。另一方面,針鼴是個例外,其檢驗記錄中的類標號與訓練集中相似的記錄的類標號相反。例外導致的錯誤是不可避免的,它設定了分類器可以達到的最小錯誤率。

  

  相反,圖4-25b中決策樹M2具有較低的檢驗誤差(10%),盡管它的訓練誤差較高(20%)。很明顯,決策樹M1過分擬合了訓練數據,因為存在一個更簡單、但在檢驗數據集上具有更低檢驗誤差的模型。模型M1中的屬性測試條件4條腳具有欺騙性,因為它擬合了無標記的訓練記錄,導致了對檢驗集中記錄的五分類。

4.4.2 缺乏代表性樣本導致的過分擬合

  根據少量訓練記錄做出分類決策的模型也容易受過分擬合的影響。由於訓練數據缺乏具有代表性的樣本,在沒有多少訓練記錄的情況下,學習算法仍然繼續細化模型就會產生這樣的模型。下面舉例說明。

  考慮表4-5中的五個訓練記錄,表中所有的記錄都是正確標記的,對應的決策樹在圖4-26中。盡管它的訓練誤差為0,但是它的檢驗誤差卻高達30%。

  

  人、大象和海豚都被誤分類,因為決策樹把很溫但不冬眠的脊柱動物划分為非哺乳動物。決策樹做出這樣的分類決策是因為只有一個訓練記錄具有這樣的特征。這個例子清楚地表明,當決策樹的葉結點沒有足夠的代表性樣本時,很可能做出錯誤的預測。

4.4.3 過分擬合與多重比較過程

  模型的過分擬合可能出現在使用所謂的多重比較過程(multiple comparison procedure)的學習算法中。為了理解多重比較過程,考慮預測未來10個交易日股市是升還是降的任務。如果股票分析家簡單地隨機猜測,則對任意交易日預測正確的概率是0.5,然而,10次猜測至少正確預測8次的概率是。

  

這看起來不大可能。

  假設我們想從50個股票分析家中選擇一個投資顧問,策略是選擇在未來的10個交易日做出最多正確預測的分析家。該策略的缺點是,即使所有的分析家都用隨機猜測做出預測,至少有一個分析家做出8次正確預測的概率是:

  

這相當高,盡管每個分析家做出8次正確預測的概率很低。但是把他們放在一起,找到一個能夠做出准確的預測。

  ......

4.4.4 泛化誤差估計

  雖然過分擬合的主要原因一直是個爭議的話題,大家還是普遍同意模型的復雜度對模型的過分擬合有影響。如圖4-23所示。問題是,如何確定正確的模型復雜度?理想的復雜度是能產生最低泛化誤差的模型的復雜度。然而,在簡歷模型的過程中,學習算法只能訪問訓練數據集(見圖4-3),對檢驗數據集,它一無所知,因此也不知道所建立的決策樹在未知記錄上的性能。我們所能做的就是估計決策樹的泛化誤差。本節提供一些估計泛化誤差的方法。

  1. 使用再代入估計

  再代入估計方法假設訓練數據集可以很好地代表整體數據,因而,可以使用訓練誤差(又稱再代入誤差)提供對泛化誤差的樂觀估計。在這樣的前提下,決策樹歸納算法簡單地選擇產生最低訓練誤差的模型作為最終的模型。然而,訓練誤差通常是泛化誤差的一種很差的估計。

  例4.1 考慮圖4-27中的二叉決策樹,假設兩棵決策樹都由相同的訓練數據產生,並且都根據每個葉結點多數類做出分類決策。注意,左邊的樹TL復雜一些,它擴展了右邊決策樹TR的某些葉結點。左決策樹的訓練誤差是e(TL)=4/24=0.167,而右決策樹的訓練誤差是e(TR)=6/24=0.25。根據再代入估計,左決策樹要優於右決策樹。

   

  2. 結合模型復雜度

  如前所述,模型越是復雜,出現過分擬合的幾率就越高。因此,我們更喜歡采用較為簡單的模型。這種策略與應用眾所周知的奧卡姆剃刀(Occam's razor)或節儉原則(principle of parsimony)一致。

  定義4.2 奧卡姆剃刀:給定兩個具有相同泛化誤差的模型,較簡單的模型比較復雜的模型更可取。

  奧卡姆剃刀是很直觀的原則,因為復雜模型中的附加成分很大程度上是完全對偶然的擬合。用愛因斯坦的話來說,“所有事情都應該盡可能的簡單,但不是簡化。”下面我們介紹兩種把模型復雜度與分類模型評估結合在一起的方法。

  悲觀誤差評估 第一種方法明確地把使用訓練誤差與模型復雜度罰項的和計算泛化誤差。結果泛化誤差可以看做模型的悲觀誤差估計(pessimistic error estimate)。例如,設n(t)是結點t分類的訓練數據記錄,e(t)是被誤分類的記錄數。決策樹T的悲觀誤差估計eg(T)可以用下式計算:

  

其中,k是決策樹的葉結點數,e(T)決策樹的總訓練誤差,Nt是訓練記錄數,Ω(ti)是每個結點ti對應的罰項。

  例4.2 考慮圖4-27中的二叉決策樹,如果罰項等於0.5,左邊的決策樹的悲觀誤差估計為:

  

  右邊的決策樹的悲觀誤差估計為:

  

  這樣,左邊的決策樹比右邊的決策樹具有更好的悲觀誤差估計。對二叉樹來說,0.5的罰項意味着只要至少能夠改善一個訓練記錄的分類,結點就應當擴展。因為擴展一個結點等價於總誤差增加0.5,代價比犯一個訓練錯誤小。

  如果對於所有的結點t,Ω(t)=1,左邊的決策樹的北瓜誤差估計為eg(TL)=11/24=0.458,右邊的決策樹的悲觀誤差估計為eg(TR)=10/24=0.417。因此,右邊的決策樹比左邊的決策樹具有更好的悲觀錯誤率。這樣,除非能夠減少一個以上訓練記錄的誤分類,否則結點不應當擴展。

  最小描述長度原則 另一種結合模型復雜度的方法是基於稱作最小描述長度(minimum description lenght,MDL)原則的信息論方法。為了解釋說明該原則,考慮圖4-28中的例子。在該例子中,A和B都是已知屬性x值的給定記錄集。另外,A知道每個記錄的確切類標號,而B卻不知道這些信息。B可以通過要求A順序傳送類標號而獲得每個記錄的分類。一條消息需要θ(n)比特的信息,其中n是記錄的總數。

  

  另一種可能是,A決定建立一個分類模型,概括x和y之間的關系。在傳送給B前,模型用壓縮形式編碼。如果模型的准確率是100%,那么傳輸的代價就等於模型編碼的代價。否則,A還必須傳輸哪些記錄被模型錯誤分類信息。傳輸的總代價是:

  

其中,等式右邊的第一項是模型編碼的開銷,而第二項是五分類記錄編碼的開銷。根據MDL原則,我們尋找最小化開銷函數的模型。

  3. 估計統計上節

  ......

  4. 使用確認集

  在該方法中,不是用訓練集泛化誤差,而是把原始的訓練數據集分為兩個較小的子集,一個子集用於訓練,而另一個稱作確認集,用於估計泛化誤差。典型的做法是,保留2/3的訓練數據集來建立模型,剩余的1/3用作誤差估計。

  該方法常常用於通過參數控制獲得具有不同復雜度模型的分類技術。通過調整學習算法中的參數(如決策樹中剪枝的程度),知道學習算法產生的模型在確認集上達到最低的錯誤率。可以估計最佳模型的復雜度。雖然該方法為評估模型在未知樣本上的性能提供了較好的辦法,但用於訓練的記錄也減少了。

4.4.5 處理決策樹歸納中的過分擬合

  在前面章節中,我們介紹了一些估計分類模型泛化誤差的方法。對於泛化誤差可靠的估計能讓學習算法搜索到准確的模型,而不會對訓練數據集過分擬合。本節介紹兩種在決策樹歸納上避免過分擬合的策略。

  先剪枝(提前終止規則) 在這種方法中,樹增長算法在產生完全擬合整個訓練數據集的完全增長的決策樹之前就停止決策樹的生長。為了做到這一點,需要采用更具有限制性的結束條件,例如,當觀察到的不純性度量的增益(或估計的泛化誤差的改進)低於某個確定的閾值時就停止擴展葉結點。這種方法的優點在於避免產生過分擬合訓練數據的過於復雜的子樹。然而,很難為提前終止選擇正確的閾值。閾值太高將導致擬合不足的模型,而閾值太低就不能充分地解決過分擬合的問題。此外,即便使用已有的屬性測試條件得不到顯著的增益,接下來的划分也可能產生較好的子樹。

  后剪枝 在該方法中,初始決策樹按照最大規模生長,然后進行剪枝的步驟。按照自底向上的方式修建完全增長的決策樹。修剪有兩種做法:(1)用新的葉結點替換子樹,該葉結點的類標號由樹下記錄中的多數類確定;或者(2)用子樹中最長使用的分支代替子樹。當模型不能再改進時終止剪枝步驟。與先剪枝相比,后剪枝技術傾向於產生更好的結果,因為不像先剪枝,后剪枝是根據完全增長的決策樹做出的剪枝決策。先剪枝則可能過早終止決策樹的生長。然后,對於后剪枝,當子樹被剪掉后,生長完全決策樹的額外的計算就被浪費了。

  圖4-29展示了4.3.6節web機器人檢測的簡化后的決策樹模型。注意跟在depth=1的子樹已經用涉及屬性ImagePages的一個分支替換,這種方法又稱子樹提升(subtree raising);depth>1且MultiAgent=0的子樹被類標號為0的葉結點替換,這種方法稱作子樹替換(subtree replacement);depth>1且MultiAgent=1的子樹完整保留。

  

4.5 評估分類器的性能

  4.4.4節中介紹了集中在訓練過程中估計模型泛化誤差的方法。估計誤差有助於學習算法進行模型選擇(model selection),即找到一個具有合適復雜度、不易發生過擬合的模型。模型一旦建立,就可以應用到檢驗數據集上,預測未知記錄的來標號。

  測試模型在檢驗集上的性能是有用的,因為這樣的測量給出模型泛化誤差的無偏估計。在檢驗集上計算出的准確率或錯誤率可以用來比較不同分類器在相同領域上的性能。然而,為了做到這一點,檢驗記錄的類標號必須是已知的。本節回顧一些常用的評估分類器性能的方法。

4.5.1 保持方法

  在保持(Holdout)方法中,將被標記的原始數據划分成兩個不相交的集合,分別稱為訓練集合檢驗集。在訓練數據集上歸納分類模型,在檢驗集上評估模型的性能。訓練集和檢驗集的划分比例通常根據分析家的判斷(例如,50-50,或者2/3作為訓練集,1/3作為檢驗集)。分類器的准確率根據模型在檢驗集上的准確率估計。

  保持方法有一些眾所周知的局限性。第一,用於訓練的被標記樣本較少,因為要保留一部分記錄用於檢驗。因此,建立的模型不如使用所有被標記樣本建立的模型好。第二,模型可能高度依賴於訓練集和檢驗集的構成。一方面,訓練集越小,模型的方差越大。另一方面,如果訓練集太大,根據用較小的檢驗集估計的准確率又不太可靠。這樣的估計具有很寬的置信區間。最后,訓練集合檢驗集不再是相互獨立的。因為訓練集和檢驗集來源於同一個數據集,在一個子集中超出比例的類在另一個子集就低於比例,反之亦然。

4.5.2 隨機二次抽樣

  可以多次重復保持方法來改進對分類器性能的估計,這種方法稱作隨機二次抽樣。設acci是第i次迭代的模型的准確率,總准確率是。隨機二次抽樣也會遇到一些與保持方法同樣的問題,因為在訓練階段也沒有利用盡可能多的數據。並且,由於它沒有控制每個記錄用於訓練和檢驗的次數,因此,有些用於訓練的記錄使用的頻率可能比其他記錄高很多。

4.5.3 交叉驗證

  替代隨機二次抽樣的一種方法時交叉驗證(cross-validation)。在該方法中,每個記錄用於訓練的次數相同嗎,並且恰好檢驗一次。為了解釋該方法,假設把數據分為相同大小的兩個子集,首先,我們選擇一個子集作為訓練集,而另一個做檢驗集,然后交換兩個集合的角色,原先做訓練集的現在做檢驗集,反之亦然,這種方法較二折交叉驗證。總誤差通過對兩次運行的誤差求和得到。在這個例子中,每個樣本各做一次訓練樣本和檢驗樣本。k折交叉驗證是對該方法的推廣,把數據分為大小相同的k分,在每次運行,選擇其中一份做檢驗集,而其余的全部作為訓練集,該過程重復k次,使得每份數據都用於檢驗恰好一次。同樣,總誤差是所有k次運行的誤差紙之和。k折價差驗證方法的一種特殊情況使令k=N,其中N是數據集的大小,在這種所謂留一(leave-one-out)方法中,每個檢驗集只有一個記錄。該方法的優點是使用盡可能多的訓練記錄,此外,檢驗集之間是互斥的,並且有效地覆蓋了整個數據集;該方法的缺點是整個過程重復N次,計算上開銷很大,此外,因為每個檢驗集只有一個記錄,性能估計度量的方法偏高。

4.5.4 自助法

  迄今為止,我們介紹的方法都是假定訓練記錄采用不放回抽樣,因此,訓練集和檢驗集都不包含重復記錄。在自助(boostrap)方法中,訓練記錄采用有放回抽樣,即已經選座訓練的記錄將放回原來的記錄集中,使得它等概率地被重新抽取。如果原始數據有N個記錄,可以證明,平均來說,大小為N的自助樣本大約包含原始數據中63.2%的記錄。這是因為一個記錄被自助抽樣抽取的概率是1-(1-1/N)N,當N充分大時,該概率逐漸逼近1-e-1=0.632。沒有抽中的記錄就稱為檢驗集的一部分,將訓練集簡歷的模型應用到檢驗集上,得到自助樣本准確率的一個估計εt。抽樣過程重復b次,產生b個自助樣本。

  按照如何計算分類器的總准確率,有幾種不同的自助抽樣法。常用的方法之一是.632自助(.632 boostrap),它通過組合每個自助樣本的准確率εt和由包含所有標記樣本的訓練集計算的准確率(accs)計算總准確率(accboot):

  

 

 

 

 

 

  


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com