決策樹( Decision Tree )又稱為判定樹,是運用於分類的一種樹結構。其中的每個內部結點( internal node )代表對某個屬性的一次測試,每條邊代表一個測試結果,葉結點( leaf )代表某個類( class )或者類的分布( class distribution ),最上面的結點是根結點。決策樹分為分類樹和迴歸樹兩種,分類樹對離散變數做決策樹,迴歸樹對連續變數做決策樹。
構造決策樹是採用自上而下的遞迴構造方法。決策樹構造的結果是一棵二叉或多叉樹,它的輸入是一組帶有類別標記的訓練資料。二叉樹的內部結點(非葉結點)一般表示為一個邏輯判斷,如形式為 (a = b) 的邏輯判斷,其中 a 是屬性, b 是該屬性的某個屬性值;樹的邊是邏輯判斷的分支結果。多叉樹( ID3 )的內部結點是屬性,邊是該屬性的所有取值,有幾個屬性值,就有幾條邊。樹的葉結點都是類別標記。
使用決策樹進行分類分為兩步:
第 1 步:利用訓練集建立並精化一棵決策樹,建立決策樹模型。這個過程實際上是一個從資料中擷取知識,進行機器學習的過程。
第 2 步:利用產生完畢的決策樹對輸入資料進行分類。對輸入的記錄,從根結點依次測試記錄的屬性值,直到到達某個葉結點,從而找到該記錄所在的類。
問題的關鍵是建立一棵決策樹。這個過程通常分為兩個階段:
(1) 建樹( Tree Building ):決策樹建樹演算法見下,可以看得出,這是一個遞迴的過程,最終將得到一棵樹。
(2) 剪枝( Tree Pruning ):剪枝是目的是降低由於訓練集存在雜訊而產生的起伏。
決策樹方法的評價。
優點
與其他分類演算法相比決策樹有如下優點:
(1) 速度快:計算量相對較小,且容易轉化成分類規則。只要沿著樹根向下一直走到葉,沿途的分裂條件就能夠唯一確定一條分類的謂詞。
(2) 準確性高:挖掘出的分類規則準確性高,便於理解,決策樹可以清晰的顯示哪些欄位比較重要。
缺點
一般決策樹的劣勢:
(1) 缺乏伸縮性:由於進行深度優先搜尋,所以演算法受記憶體大小限制,難於處理大訓練集。一個例子:在 Irvine 機器學習知識庫中,最大可以允許的資料集僅僅為 700KB , 2000 條記錄。而現代的資料倉儲動輒儲存幾個 G-Bytes 的海量資料。用以前的方法是顯然不行的。
(2) 為了處理大資料集或連續量的種種改進演算法(離散化、取樣)不僅增加了分類演算法的額外開銷,而且降低了分類的準確性,對連續性的欄位比較難預測,當類別太多時,錯誤可能就會增加的比較快,對有時間順序的資料,需要很多預先處理的工作。
但是,所用的基於分類挖掘的決策樹演算法沒有考慮雜訊問題,產生的決策樹很完美,這隻不過是理論上的,在實際應用過程中,大量的現實世界中的資料都不是以的意願來定的,可能某些欄位上缺值( missing values );可能資料不準確含有雜訊或者是錯誤的;可能是缺少必須的資料造成了資料的不完整。
另外決策樹技術本身也存在一些不足的地方,例如當類別很多的時候,它的錯誤就可能出現甚至很多。而且它對連續性的欄位比較難作出準確的預測。而且一般演算法在分類的時候,只是根據一個屬性來分類的。
在有雜訊的情況下,完全擬合將導致過分擬合( overfitting ),即對訓練資料的完全擬合反而不具有很好的預測效能。剪枝是一種克服雜訊的技術,同時它也能使樹得到簡化而變得更容易理解。另外,決策樹技術也可能產生子樹複製和片段問題。