(一) 決策樹
1、決策樹分類原理
決策樹是通過一系列規則對數據進行分類的過程。它提供一種在什么條件下會得到什么值的類似規則的方法。決策樹分為分類樹和回歸樹兩種,分類樹對離散變量做決策樹,回歸樹對連續變量做決策樹。
近來的調查表明決策樹也是最經常使用的數據挖掘算法,它的概念非常簡單。決策樹算法之所以如此流行,一個很重要的原因就是使用者基本上不用了解機器學習算法,也不用深究它是如何工作的。直觀看上去,決策樹分類器就像判斷模塊和終止塊組成的流程圖,終止塊表示分類結果(也就是樹的葉子)。判斷模塊表示對一個特征取值的判斷(該特征有幾個值,判斷模塊就有幾個分支)。
如果不考慮效率等,那么樣本所有特征的判斷級聯起來終會將某一個樣本分到一個類終止塊上。實際上,樣本所有特征中有一些特征在分類時起到決定性作用,決策樹的構造過程就是找到這些具有決定性作用的特征,根據其決定性程度來構造一個倒立的樹--決定性作用最大的那個特征作為根節點,然后遞歸找到各分支下子數據集中次大的決定性特征,直至子數據集中所有數據都屬於同一類。所以,構造決策樹的過程本質上就是根據數據特征將數據集分類的遞歸過程,我們需要解決的第一個問題就是,當前數據集上哪個特征在划分數據分類時起決定性作用。
2、決策樹的學習過程
一棵決策樹的生成過程主要分為以下3個部分:
-
特征選擇:特征選擇是指從訓練數據中眾多的特征中選擇一個特征作為當前節點的分裂標准,如何選擇特征有着很多不同量化評估標准標准,從而衍生出不同的決策樹算法。
-
決策樹生成: 根據選擇的特征評估標准,從上至下遞歸地生成子節點,直到數據集不可分則停止決策樹停止生長。 樹結構來說,遞歸結構是最容易理解的方式。
-
剪枝:決策樹容易過擬合,一般來需要剪枝,縮小樹結構規模、緩解過擬合。剪枝技術有預剪枝和后剪枝兩種。
3、基於信息論的三種決策樹算法
划分數據集的最大原則是:使無序的數據變的有序。如果一個訓練數據中有20個特征,那么選取哪個做划分依據?這就必須采用量化的方法來判斷,量化划分方法有多重,其中一項就是“信息論度量信息分類”。基於信息論的決策樹算法有ID3、CART和C4.5等算法,其中C4.5和CART兩種算法從ID3算法中衍生而來。
CART和C4.5支持數據特征為連續分布時的處理,主要通過使用二元切分來處理連續型變量,即求一個特定的值-分裂值:特征值大於分裂值就走左子樹,或者就走右子樹。這個分裂值的選取的原則是使得划分后的子樹中的“混亂程度”降低,具體到C4.5和CART算法則有不同的定義方式。
ID3算法由Ross Quinlan發明,建立在“奧卡姆剃刀”的基礎上:越是小型的決策樹越優於大的決策樹(be simple簡單理論)。ID3算法中根據信息論的信息增益評估和選擇特征,每次選擇信息增益最大的特征做判斷模塊。ID3算法可用於划分標稱型數據集,沒有剪枝的過程,為了去除過度數據匹配的問題,可通過裁剪合並相鄰的無法產生大量信息增益的葉子節點(例如設置信息增益閥值)。使用信息增益的話其實是有一個缺點,那就是它偏向於具有大量值的屬性--就是說在訓練集中,某個屬性所取的不同值的個數越多,那么越有可能拿它來作為分裂屬性,而這樣做有時候是沒有意義的,另外ID3不能處理連續分布的數據特征,於是就有了C4.5算法。CART算法也支持連續分布的數據特征。
C4.5是ID3的一個改進算法,繼承了ID3算法的優點。C4.5算法用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足在樹構造過程中進行剪枝;能夠完成對連續屬性的離散化處理;能夠對不完整數據進行處理。C4.5算法產生的分類規則易於理解、准確率較高;但效率低,因樹構造過程中,需要對數據集進行多次的順序掃描和排序。也是因為必須多次數據集掃描,C4.5只適合於能夠駐留於內存的數據集。
CART算法的全稱是Classification And Regression Tree,采用的是Gini指數(選Gini指數最小的特征s)作為分裂標准,同時它也是包含后剪枝操作。ID3算法和C4.5算法雖然在對訓練樣本集的學習中可以盡可能多地挖掘信息,但其生成的決策樹分支較大,規模較大。為了簡化決策樹的規模,提高生成決策樹的效率,就出現了根據GINI系數來選擇測試屬性的決策樹算法CART。
4、決策樹優缺點
決策樹適用於數值型和標稱型(離散型數據,變量的結果只在有限目標集中取值),能夠讀取數據集合,提取一些列數據中蘊含的規則。在分類問題中使用決策樹模型有很多的優點,決策樹計算復雜度不高、便於使用、而且高效,決策樹可處理具有不相關特征的數據、可很容易地構造出易於理解的規則,而規則通常易於解釋和理解。決策樹模型也有一些缺點,比如處理缺失數據時的困難、過度擬合以及忽略數據集中屬性之間的相關性等。
(二)ID3算法的數學原理
前面已經提到C4.5和CART都是由ID3演化而來,這里就先詳細闡述ID3算法,奠下基礎。
1、ID3算法的信息論基礎
關於決策樹的信息論基礎可以參考“決策樹1-建模過程”
(1)信息熵
信息熵:在概率論中,信息熵給了我們一種度量不確定性的方式,是用來衡量隨機變量不確定性的,熵就是信息的期望值。若待分類的事物可能划分在N類中,分別是x1,x2,……,xn,每一種取到的概率分別是P1,P2,……,Pn,那么X的熵就定義為:
,從定義中可知:0≤H(X)≤log(n)
當隨機變量只取兩個值時,即X的分布為 P(X=1)=p,X(X=0)=1−p,0≤p≤1則熵為:H(X)=−plog2(p)−(1−p)log2(1−p)。
熵值越高,則數據混合的種類越高,其蘊含的含義是一個變量可能的變化越多(反而跟變量具體的取值沒有任何關系,只和值的種類多少以及發生概率有關),它攜帶的信息量就越大。熵在信息論中是一個非常重要的概念,很多機器學習的算法都會利用到這個概念。
(2)條件熵
假設有隨機變量(X,Y),其聯合概率分布為:P(X=xi,Y=yi)=pij,i=1,2,⋯,n;j=1,2,⋯,m
則條件熵(H(Y∣X))表示在已知隨機變量X的條件下隨機變量Y的不確定性,其定義為X在給定條件下Y的條件概率分布的熵對X的數學期望:
(3)信息增益
信息增益(information gain)表示得知特征X的信息后,而使得Y的不確定性減少的程度。定義為:
2、ID3算法推導
(1)分類系統信息熵
假設一個分類系統的樣本空間(D,Y),D表示樣本(有m個特征),Y表示n個類別,可能的取值是C1,C2,...,Cn。每一個類別出現的概率是P(C1),P(C2),...,P(Cn)。該分類系統的熵為:
離散分布中,類別Ci出現的概率P(Ci),通過該類別出現的次數除去樣本總數即可得到。對於連續分布,常需要分塊做離散化處理獲得。
(2)條件熵
根據條件熵的定義,分類系統中的條件熵指的是當樣本的某一特征X固定時的信息熵。由於該特征X可能的取值會有(x1,x2,……,xn),當計算條件熵而需要把它固定的時候,每一種可能都要固定一下,然后求統計期望。
因此樣本特征X取值為xi的概率是Pi,該特征被固定為值xi時的條件信息熵就是H(C|X=xi),那么
H(C|X)就是分類系統中特征X被固定時的條件熵(X=(x1,x2,……,xn)):
若是樣本的該特征只有兩個值(x1 = 0,x2=1)對應(出現,不出現),如文本分類中某一個單詞的出現與否。那么對於特征二值的情況,我們用T代表特征,用t代表T出現,表示該特征出現。那么:
與前面條件熵的公式對比一下,P(t)就是T出現的概率,就是T不出現的概率。結合信息熵的計算公式,可得:
特征T出現的概率P(t),只要用出現過T的樣本數除以總樣本數就可以了;P(Ci|t)表示出現T的時候,類別Ci出現的概率,只要用出現了T並且屬於類別Ci的樣本數除以出現了T的樣本數就得到了。
(3)信息增益
根據信息增益的公式,分類系統中特征X的信息增益就是:Gain(D, X) = H(C)-H(C|X)
信息增益是針對一個一個的特征而言的,就是看一個特征X,系統有它和沒它的時候信息量各是多少,兩者的差值就是這個特征給系統帶來的信息增益。每次選取特征的過程都是通過計算每個特征值划分數據集后的信息增益,然后選取信息增益最高的特征。
對於特征取值為二值的情況,特征T給系統帶來的信息增益就可以寫成系統原本的熵與固定特征T后的條件熵之差:
(4)經過上述一輪信息增益計算后會得到一個特征作為決策樹的根節點,該特征有幾個取值,根節點就會有幾個分支,每一個分支都會產生一個新的數據子集Dk,余下的遞歸過程就是對每個Dk再重復上述過程,直至子數據集都屬於同一類。
在決策樹構造過程中可能會出現這種情況:所有特征都作為分裂特征用光了,但子集還不是純凈集(集合內的元素不屬於同一類別)。在這種情況下,由於沒有更多信息可以使用了,一般對這些子集進行“多數表決”,即使用此子集中出現次數最多的類別作為此節點類別,然后將此節點作為葉子節點。
(三)C4.5算法
1、信息增益比選擇最佳特征
以信息增益進行分類決策時,存在偏向於取值較多的特征的問題。於是為了解決這個問題人們有開發了基於信息增益比的分類決策方法,也就是C4.5。C4.5與ID3都是利用貪心算法進行求解,不同的是分類決策的依據不同。
因此,C4.5算法在結構與遞歸上與ID3完全相同,區別就在於選取決斷特征時選擇信息增益比最大的。
信息增益比率度量是用ID3算法中的的增益度量Gain(D,X)和分裂信息度量SplitInformation(D,X)來共同定義的。分裂信息度量SplitInformation(D,X)就相當於特征X(取值為x1,x2,……,xn,各自的概率為P1,P2,...,Pn,Pk就是樣本空間中特征X取值為xk的數量除上該樣本空間總數)的熵。
SplitInformation(D,X) = -P1 log2(P1)-P2 log2(P)-,...,-Pn log2(Pn)
GainRatio(D,X) = Gain(D,X)/SplitInformation(D,X)
在ID3中用信息增益選擇屬性時偏向於選擇分枝比較多的屬性值,即取值多的屬性,在C4.5中由於除以SplitInformation(D,X)=H(X),可以削弱這種作用。
2、處理連續數值型特征
C4.5既可以處理離散型屬性,也可以處理連續性屬性。在選擇某節點上的分枝屬性時,對於離散型描述屬性,C4.5的處理方法與ID3相同。對於連續分布的特征,其處理方法是:
先把連續屬性轉換為離散屬性再進行處理。雖然本質上屬性的取值是連續的,但對於有限的采樣數據它是離散的,如果有N條樣本,那么我們有N-1種離散化的方法:<=vj的分到左子樹,>vj的分到右子樹。計算這N-1種情況下最大的信息增益率。另外,對於連續屬性先進行排序(升序),只有在決策屬性(即分類發生了變化)發生改變的地方才需要切開,這可以顯著減少運算量。經證明,在決定連續特征的分界點時采用增益這個指標(因為若采用增益率,splittedinfo影響分裂點信息度量准確性,若某分界點恰好將連續特征分成數目相等的兩部分時其抑制作用最大),而選擇屬性的時候才使用增益率這個指標能選擇出最佳分類特征。
在C4.5中,對連續屬性的處理如下:
1、對特征的取值進行升序排序
2、兩個特征取值之間的中點作為可能的分裂點,將數據集分成兩部分,計算每個可能的分裂點的信息增益(InforGain)。優化算法就是只計算分類屬性發生改變的那些特征取值。
3、選擇修正后信息增益(InforGain)最大的分裂點作為該特征的最佳分裂點
4、計算最佳分裂點的信息增益率(Gain Ratio)作為特征的Gain Ratio。注意,此處需對最佳分裂點的信息增益進行修正:減去log2(N-1)/|D|(N是連續特征的取值個數,D是訓練數據數目,此修正的原因在於:當離散屬性和連續屬性並存時,C4.5算法傾向於選擇連續特征做最佳樹分裂點)
3、葉子裁剪
分析分類回歸樹的遞歸建樹過程,不難發現它實質上存在着一個數據過度擬合問題。在決策樹構造時,由於訓練數據中的噪音或孤立點,許多分枝反映的是訓練數據中的異常,使用這樣的判定樹對類別未知的數據進行分類,分類的准確性不高。因此試圖檢測和減去這樣的分支,檢測和減去這些分支的過程被稱為樹剪枝。樹剪枝方法用於處理過分適應數據問題。通常,這種方法使用統計度量,減去最不可靠的分支,這將導致較快的分類,提高樹獨立於訓練數據正確分類的能力。
決策樹常用的剪枝常用的簡直方法有兩種:預剪枝(Pre-Pruning)和后剪枝(Post-Pruning)。預剪枝是根據一些原則及早的停止樹增長,如樹的深度達到用戶所要的深度、節點中樣本個數少於用戶指定個數、不純度指標下降的最大幅度小於用戶指定的幅度等。預剪枝的核心問題是如何事先指定樹的最大深度,如果設置的最大深度不恰當,那么將會導致過於限制樹的生長,使決策樹的表達式規則趨於一般,不能更好地對新數據集進行分類和預測。除了事先限定決策樹的最大深度之外,還有另外一個方法來實現預剪枝操作,那就是采用檢驗技術對當前結點對應的樣本集合進行檢驗,如果該樣本集合的樣本數量已小於事先指定的最小允許值,那么停止該結點的繼續生長,並將該結點變為葉子結點,否則可以繼續擴展該結點。
后剪枝則是通過在完全生長的樹上剪去分枝實現的,通過刪除節點的分支來剪去樹節點,可以使用的后剪枝方法有多種,比如:代價復雜性剪枝、最小誤差剪枝、悲觀誤差剪枝等等。后剪枝操作是一個邊修剪邊檢驗的過程,一般規則標准是:在決策樹的不斷剪枝操作過程中,將原樣本集合或新數據集合作為測試數據,檢驗決策樹對測試數據的預測精度,並計算出相應的錯誤率,如果剪掉某個子樹后的決策樹對測試數據的預測精度或其他測度不降低,那么剪掉該子樹。
(三)隨機森林、極限森林和梯度提升樹
隨機森林
1.隨機森林是一種組合方法,由許多的決策樹組成,對於每一顆決策樹,隨機森林采用的是有放回的對N個樣本分N次隨 機取出N個樣本,即這些決策樹的形成采用了隨機的方法,因此也叫做隨機決策樹。隨機森林中的樹之間是沒有關聯 的。當測試數據進入隨機森林時,其實就是讓每一顆決策樹分別進行分類,最后取所有決策樹中分類多的那類為最終 的結果。
2.隨機森林的另一個"隨機"點是對於每一個決策樹,節點是按照從樣本所有屬性中隨機抽取一定數量的屬性進行分裂 的,並不是對所有屬性進行考量,按照這種思路,其中不同的決策樹就擁有了對樣本中某些屬性強有力判斷的能力, 相當於每一顆決策樹就是一個精通某些特定領域的專家,所有這些專家組合起來形成“強分類器”對樣本進行投票。
算法優點:
1。對於很多種樣本,它可以產生高准確度的分類器;可以處理大量的輸入變數;可以在決定類別時,評估變數的重要性;
2.在建造森林時,它可以在內部對於一般化后的誤差產生不偏差的估計;
3.它包含一個好方法可以估計遺失的樣本,並且,如果有很大一部分的樣本遺失,仍可以維持准確度;它提供一個實驗方法,可以去偵測variable interactions;
4.對於不平衡的分類數據集來說,它可以平衡誤差;可被延伸應用在未標記的數據上,這類數據通常是使用非監督式聚類。
5.在數據量較大的情況下,學習速度快。
6.對錯誤和離群點更加魯棒性。
7.決策樹容易過擬合的問題會隨着隨機森林的規模而消弱
Adaboost算法
更高的准確率,容易過擬合。
極限森林
隨機性在計算分割的方式上進一步向前邁進了一步。像在隨機森林中一樣,使用候選特征的隨機子集,但不是尋找最有區別的閾值,而是為每個候選特征隨機繪制閾值,並選擇這些隨機生成的閾值中的最佳閾值作為划分規則。這通常可以更大程度地減少模型的方差,但要以更大的偏差增加為代價
使用這些方法時要調整的主要參數是n_estimators和 max_features。前者是森林中的樹木數量。越大越好,但計算所需的時間也就越長。此外,請注意,超過關鍵數量的樹木,結果將不再明顯好轉。后者是分割節點時要考慮的要素隨機子集的大小。越低,方差的減小越大,但偏差的增加也越大。max_features=None對於回歸問題,經驗良好的默認值是(始終考慮所有特征,而不是隨機子集),對於分類任務(經驗值是數據中的特征數),其 經驗值是 (總是考慮max_features="sqrt"大小的隨機子集)。
梯度提升決策樹
GBDT(Gradient Boosting Decision Tree)又叫 MART(Multiple Additive Regression Tree),是一種迭代的決策樹算法,由多棵決策樹組成,所有樹的結論累加起來作為最終答案。它在被提出之初就和SVM一起被認為是泛化能力較強的算法。
一、Regression Decision Tree:回歸樹
回歸樹總體流程類似於分類樹,區別在於,回歸樹的每一個節點都會得一個預測值,以年齡為例,該預測值等於屬於這個節點的所有人年齡的平均值。分枝時窮舉每一個feature的每個閾值找最好的分割點,但衡量最好的標准不再是最大熵,而是最小化平方誤差。也就是被預測出錯的人數越多,錯的越離譜,平方誤差就越大,通過最小化平方誤差能夠找到最可靠的分枝依據。分枝直到每個葉子節點上人的年齡都唯一或者達到預設的終止條件(如葉子個數上限),若最終葉子節點上人的年齡不唯一,則以該節點上所有人的平均年齡做為該葉子節點的預測年齡。
回歸樹算法如下圖(截圖來自《統計學習方法》5.5.1 CART生成):
二、Boosting Decision Tree:提升樹算法
提升樹是迭代多棵回歸樹來共同決策。當采用平方誤差損失函數時,每一棵回歸樹學習的是之前所有樹的結論和殘差,擬合得到一個當前的殘差回歸樹,殘差的意義如公式:殘差 = 真實值 - 預測值 。提升樹即是整個迭代過程生成的回歸樹的累加。
訓練一個提升樹模型來預測年齡:
訓練集是4個人,A,B,C,D年齡分別是14,16,24,26。樣本中有購物金額、上網時長、經常到百度知道提問等特征。提升樹的過程如下:
該例子很直觀的能看到,預測值等於所有樹值得累加,如A的預測值 = 樹1左節點 值 15 + 樹2左節點 -1 = 14。
因此,給定當前模型 fm-1(x),只需要簡單的擬合當前模型的殘差。現將回歸問題的提升樹算法敘述如下:
三、Gradient Boosting Decision Tree:梯度提升決策樹
提升樹利用加法模型和前向分步算法實現學習的優化過程。當損失函數時平方損失和指數損失函數時,每一步的優化很簡單,如平方損失函數學習殘差回歸樹。
損失函數列表
但對於一般的損失函數,往往每一步優化沒那么容易,如上圖中的絕對值損失函數和Huber損失函數。針對這一問題,Freidman提出了梯度提升算法:利用最速下降的近似方法,即利用損失函數的負梯度在當前模型的值,作為回歸問題中提升樹算法的殘差的近似值,擬合一個回歸樹。(注:鄙人私以為,與其說負梯度作為殘差的近似值,不如說殘差是負梯度的一種特例)算法如下:
算法步驟解釋:
1、初始化,估計使損失函數極小化的常數值,它是只有一個根節點的樹,即ganma是一個常數值。
2、
(a)計算損失函數的負梯度在當前模型的值,將它作為殘差的估計
(b)估計回歸樹葉節點區域,以擬合殘差的近似值
(c)利用線性搜索估計葉節點區域的值,使損失函數極小化
(d)更新回歸樹
3、得到輸出的最終模型 f(x)
以上算法將回歸樹和提升樹的算法結合起來,如果損失函數為平方損失函數,則解法與前面的回歸樹一致,直接取均值即可。如果是其他損失函數,則需要具體進行求解。具體而言,就是取導數為零來解等式。
不過對於分類情況,由於樣本輸出不是連續的值,而是離散的類別,導致我們無法直接從輸出類別去擬合類別輸出的誤差。為了解決這個問題,主要有兩個方法,一個是用指數損失函數,此時GBDT退化為Adaboost算法。另一種方法是用類似於邏輯回歸的對數似然損失函數的方法。也就是說,我們用的是類別的預測概率值和真實概率值的差來擬合損失。本文僅討論用對數似然損失函數的GBDT分類。而對於對數似然損失函數,我們又有二元分類和多元分類的區別。
四、二元GBDT分類算法
上式比較難優化,一般使用近似值代替
多元GBDT分類算法
https://blog.csdn.net/On_theway10/article/details/83576715
五、重要參數的意義及設置
以下摘自知乎上的一個問答,問題和回復都很好的闡述了這個參數設置的數學原理。
【問】xgboost/gbdt在調參時為什么樹的深度很少就能達到很高的精度?
用xgboost/gbdt在在調參的時候把樹的最大深度調成6就有很高的精度了。但是用DecisionTree/RandomForest的時候需要把樹的深度調到15或更高。用RandomForest所需要的樹的深度和DecisionTree一樣我能理解,因為它是用bagging的方法把DecisionTree組合在一起,相當於做了多次DecisionTree一樣。但是xgboost/gbdt僅僅用梯度上升法就能用6個節點的深度達到很高的預測精度,使我驚訝到懷疑它是黑科技了。請問下xgboost/gbdt是怎么做到的?它的節點和一般的DecisionTree不同嗎?
【答】
這是一個非常好的問題,題主對各算法的學習非常細致透徹,問的問題也關系到這兩個算法的本質。這個問題其實並不是一個很簡單的問題,我嘗試用我淺薄的機器學習知識對這個問題進行回答。
一句話的解釋,來自周志華老師的機器學習教科書( 機器學習-周志華):Boosting主要關注降低偏差,因此Boosting能基於泛化性能相當弱的學習器構建出很強的集成;Bagging主要關注降低方差,因此它在不剪枝的決策樹、神經網絡等學習器上效用更為明顯。
隨機森林(random forest)和GBDT都是屬於集成學習(ensemble learning)的范疇。集成學習下有兩個重要的策略Bagging和Boosting。
Bagging算法是這樣做的:每個分類器都隨機從原樣本中做有放回的采樣,然后分別在這些采樣后的樣本上訓練分類器,然后再把這些分類器組合起來。簡單的多數投票一般就可以。其代表算法是隨機森林。Boosting的意思是這樣,他通過迭代地訓練一系列的分類器,每個分類器采用的樣本分布都和上一輪的學習結果有關。其代表算法是AdaBoost, GBDT。
其實就機器學習算法來說,其泛化誤差可以分解為兩部分,偏差(bias)和方差(variance)。這個可由下圖的式子導出(這里用到了概率論公式D(X)=E(X2)-[E(X)]2)。偏差指的是算法的期望預測與真實預測之間的偏差程度,反應了模型本身的擬合能力;方差度量了同等大小的訓練集的變動導致學習性能的變化,刻畫了數據擾動所導致的影響。這個有點兒繞,不過你一定知道過擬合。
如下圖所示,當模型越復雜時,擬合的程度就越高,模型的訓練偏差就越小。但此時如果換一組數據可能模型的變化就會很大,即模型的方差很大。所以模型過於復雜的時候會導致過擬合。
當模型越簡單時,即使我們再換一組數據,最后得出的學習器和之前的學習器的差別就不那么大,模型的方差很小。還是因為模型簡單,所以偏差會很大。
模型復雜度與偏差方差的關系圖
也就是說,當我們訓練一個模型時,偏差和方差都得照顧到,漏掉一個都不行。
對於Bagging算法來說,由於我們會並行地訓練很多不同的分類器的目的就是降低這個方差(variance) ,因為采用了相互獨立的基分類器多了以后,h的值自然就會靠近.所以對於每個基分類器來說,目標就是如何降低這個偏差(bias),所以我們會采用深度很深甚至不剪枝的決策樹。
對於Boosting來說,每一步我們都會在上一輪的基礎上更加擬合原數據,所以可以保證偏差(bias),所以對於每個基分類器來說,問題就在於如何選擇variance更小的分類器,即更簡單的分類器,所以我們選擇了深度很淺的決策樹。