一、決策樹模型
決策樹(decision tree)是一種常用的機器學習方法,是一種描述對實例進行分類的樹形結構。
決策樹是一種常用的機器學習方法,以二分類為例,假設現在我們要對是否買西瓜進行判斷和決策,我們會問一些問題,根據回答,我們決斷是買還是不買,或者還拿補丁主意,這時會繼續問問題,直到可以確定為止。
決策樹基於“樹”結構進行決策:
(1)內部結點:屬性
(2)分支:屬性值
(3)p葉結點:分類結果
學習過程:通過對訓練樣本的分析來確定“划分屬性”(即內部結點所對應的屬性)
預測過程:將測試示例從根結點開始,沿着划分屬性所構成的“判定測試序列”下行,直到葉結點
學習的過程就是通過划分屬性構建決策樹的過程,預測過程就是將測試樣本從根節點開始,沿着划分屬性構成的“判定序列”下行,直到葉結點。
結構舉例:
從代碼角度來看,決策樹其實可以看成是一堆if-else語句的集合,例如引例中的決策樹完全可以看成是如下代碼:
if isRed: if isCold: if hasSeed: print("buy") else: print("don't buy") else: if isCheap: print("buy") else: print("don't buy") else: print("don't buy")
由決策樹的根結點(root node)到葉結點(leaf node)的每一條路徑構建一條規則:路徑上內部結點的特征對應着規則的條件,而葉結點的類對應着規則的結論。
決策樹的路徑或其對應的if-then規則集合具有一個重要的性質:互斥並且完備。這就是說,每一個實例都被一條路徑或一條規則所覆蓋,而且只被一條路徑或一條規則所覆蓋。從代碼角度來看,決策樹的判定過程比較簡單。
二、決策樹簡史
(1)第一個決策樹算法:CLS (Concept Learning System)
[E. B. Hunt, J. Marin, and P. T. Stone’s book “Experiments in Induction” published by Academic Press in 1966]
(2)使決策樹受到關注、成為機器學習主流技術的算法:ID3
[J. R. Quinlan’s paper in a book “Expert Systems in the Micro Electronic Age” edited by D. Michie, published by Edinburgh University Press in 1979]
(3)最常用的決策樹算法:C4.5
[J. R. Quinlan’s book “C4.5: Programs for Machine Learning” published by Morgan Kaufmann in 1993]
(4)可以用於回歸任務的決策樹算法:CART (Classification and Regression Tree)
[L. Breiman, J. H. Friedman, R. A. Olshen, and C. J. Stone’s book “Classification and Regression Trees” published by Wadsworth in 1984]
(5)基於決策樹的最強大算法:RF (Random Forest),這是一種“集成學習”方法。
[L. Breiman’s MLJ’01 paper “Random Forest]
最初的決策樹學習算法是心理學家兼計算機科學假hunt在研究概念學習過程中提出的CLS,這個算法確立了決策樹“分而治之”的學習策略。后來hunt的學生寫了一個類似於CLS的程序,其中最重要的改進是引入了信息增益准則,這就是ID3算法,現已經成為機器學習主流技術算法,ID3對於可能取值多的屬性有所偏好,后來引入了增益率准則,就是C4.5.ID3現在決策樹已經成為了一種主流的機器學習方法。
三、基本流程
策略:“分而治之”(divide-and-conquer)。
自根至葉的遞歸過程,在每個中間結點尋找一個“划分”(split or test)屬性。
決策樹算法采用分而治之的學習策略,決策樹的構造過程就是一個從根節點到葉結點的遞歸過程。首先根據一定的准則選取最優的屬性進行划分,根據屬性值得到若干個子集,然后在每個子集上利用同樣方法構造決策樹。當下面三個條件中一個條件滿足時,將含有較多樣本的類別作為葉結點中對應的類別標簽。
三種情形導致遞歸返回:
(1) 當前結點包含的樣本全屬於同一類別,無需划分。
(2) 當前屬性集為空, 或是所有樣本在所有屬性上取值相同,無法划分。
(3) 當前結點包含的樣本集合為空,不能划分。