決策樹算法
決策樹模型的核心:
1.由節點與有向邊組成
2.節點分為內部節點和葉子節點
3.內部節點表示一個特征,葉子節點表示一個類
每個內部特征表示一個特征屬性上的測試,分支代表這個特征屬性在某個值域上的輸出
決策樹的關鍵步驟是分裂屬性,即按照一種特征屬性的不同划分(比如閾值),構造不同分支。目標上讓各個分裂自己盡可能地“純”,即屬於同一類別。
ID3算法[1]
“純度”度量指標:信息增益,表示得知a屬性的信息使得信息熵(復雜度)減少的程度。
信息熵:\(Entropy(S) \equiv \displaystyle\sum_{i=1}^c -p_i log_2p_i\),
其中,\(S\)為事件的集合,\(p_i\)為事件\(i\)發生的概率,\(c\)為特征總數。熵是以2進制位的個數來度量編碼長度的,因此熵的最大值是\(log_2 c\)。
信息增益:\(Gain(S,A) \equiv Entropy(S) - \displaystyle\sum_{v\in Values(A)} \frac{|S_v|}{|S|} Entropy(S_v)\),
其中,\(A\)表示一種屬性,\(v\)表示這個屬性上的划分值。
缺陷[1]
- ID3算法對可取值數目較多的屬性有所偏好。因為這樣的屬性會使得條件熵值較大。
- 沒有剪枝過程
- 只可以處理離散分布的數據特征
C4.5
改進[1]
C4.5算法繼承了ID3算法的優點,並在以下幾方面對ID3算法進行了改進:
- 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;
- 在樹構造過程中進行剪枝;
- 能夠完成對連續屬性的離散化處理;
- 能夠對不完整數據進行處理。
C4.5算法有如下優點:產生的分類規則易於理解,准確率較高。其缺點是:在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致算法的低效。此外,C4.5只適合於能夠駐留於內存的數據集,當訓練集大得無法在內存容納時程序無法運行。
“純度”度量指標:信息增益率
“純度”度量指標:信息增益率。
設樣本集\(S\)按離散屬性\(F\)的\(c\)個不同取值划分為\(c\)個子集,則它們的信息熵為:
\(SplitInformation(S,A)\equiv -\displaystyle\sum_{i=1}^c \frac{|S_i|}{|S|} log_2\frac{|S_i|}{|S|}\),可以看出這\(c\)個子集的信息熵是定值。
則信息增益率為:\(GainRatio(S,A)\equiv\frac{Gain(S,A)}{SplitInformation(S,A)}\)
但增益率又會對類比數目較小的特征有所偏好(分母小,信息增益率大)。故,C4.5算法先在划分屬性中,找出信息增益高於平均水平的那些划分屬性作為候選,再從候選中選擇增益率最大的.
離散化處理
將連續型的屬性變量進行離散化處理,形成決策樹的訓練集[2]:
- 將該屬性的所有連續值從大到小排序,去重
- 以相鄰兩個連續值的中點作為划分值,計算信息增益(信息熵-條件信息熵)
- 假設有n個不重復的連續值,我們需要計算n-1次
- 取增益最大的划分值,將連續值離散化
不完整數據處理[1]
處理缺少屬性值的一種策略是賦給該節點所有對應訓練實例中該屬性最常見的值,另一種復雜的情況是為該節點每個可能出現的值賦予一個概率。
CART(分類與回歸樹,二叉)
度量指標
回歸樹
“純度”度量指標:回歸方差
\(\sigma=\sqrt{\displaystyle\sum_{i\in I}(x_i-\mu)^2}=\sqrt{\displaystyle\sum_{i\in I}x_i^2-n\mu^2}\)
其中,\(I\)為,\(x_i\),\(\mu\)
回歸方差越大,節點數據越分散(不純)。故選擇划分的依據為,最小化:
\(Gain=\displaystyle\sum_{i \in I}\sigma_i\)
分類樹
“純度”度量指標:GINI系數
\(GINI=1-\displaystyle\sum_{j\in J}p_j^2\)
其中,\(J\)為類的個數,\(p_j\)為樣本屬於第\(j\)類的概率,舉個栗子,10個樣本中有7個樣本屬於A類,3個樣本屬於B類,那么
\(GINI=1-(\frac{7}{10})^2-(\frac{3}{10})^2=0.42\)
GINI系數越大,表示節點越不純。故選擇划分的依據為,最小化:
\(Gain=\displaystyle\sum_{i \in I}p_i\cdot GINI_i\)
\(Gain\)應該這么理解,在划分后一共有\(I\)類(二叉樹。。其實就兩類嘛),總樣本中被划分到第\(i\)類的樣本共占\(p_i\)(這里是頻率而不是概率),這些被划分到第\(i\)類的樣本中,GINI值為\(GINI_i\)。所以這個GINI值不是所有樣本的GINI值,更像是一個“條件概率”,在給定第\(i\)類樣本的條件下,計算樣本的純度。
舉個栗子,如圖[3]。
二值化處理
由於CART是一棵二叉樹,所以對於連續型或離散型的數據,需要進行二值化。
對連續型的處理與C4.5類似,只不過不用信息增益作評價指標,而是GINI值或樣本方差。
對離散型的處理,采用one-versus-rest的划分方法,划分為兩個類。
不完整數據處理
處理缺少屬性值的一種策略是賦給該節點所有對應訓練實例中該屬性最常見的值,另一種復雜的情況是為該節點每個可能出現的值賦予一個概率[1]。
CART生成算法[4]
輸入:訓練數據集\(D\),停止計算的條件。
輸出:CART決策樹。
根據訓練數據集,從根結點開始,遞歸地對每個結點進行以下操作,構建二叉決策樹:
- 設結點的訓練數據集為\(D\),對每一特征\(A\),“窮舉”可能取的每個值\(a\),根據樣本點對\(A=a\)的測試為“是”或“否”分割為\(D_1\)和\(D_2\)兩部分,計算\(A=a\)時的基尼指數。
- 在所有可能的特征\(A\)以及他們所有可能的切分點\(a\)中,選擇基尼系數最小的特征$A^* \(及其對應的切分點\)a^*\(作為最優特征與最優切分點。依最優特征與最優切分點,從現結點生成兩個子結點,將訓練數據集依特征分配到兩個子結點中去(根據\)A^*=a^*$)。
- 對兩個子結點遞歸地調用步驟1、2,直至滿足停止條件。
- 停止計算,生成CART決策樹。
算法停止計算的條件:一般是結點中的樣本個數小於預定閾值,或樣本集的基尼指數小於預定閾值(樣本基本屬於同一類),或者沒有更多特征。
CART剪枝[3]
決策樹優缺點
- 優點
- 白盒:決策樹算法中學習簡單的決策規則,建立決策樹模型的過程非常容易理解,決策樹模型可以可視化,非常直觀。
- 不需要對數據做先驗假設
- 速度快,准確性高
- 對數據要求相對低:
- 預處理往往更簡單,比如無需去掉空白值、無需歸一化等;
- 能同時處理數據型和常規型屬性(比如樣本可以是:男,30歲,醫生,結婚。這包含了數據、常規型屬性);
- 對缺失值不敏感(可賦予平均值、中位數、眾數等),可以處理不相關特征數據;
- 對異常值魯棒。
- 應用范圍廣,可用於分類和回歸,而且非常容易做多類別的分類。
- 可以做特征選擇、特征組合
- 缺點
- 很容易在訓練數據中生成復雜的樹結構,造成過擬合。剪枝可以緩解過擬合的負作用,常用方法是限制樹的高度、葉子結點中的最少樣本數量。
- 若數據集類別不平衡,生成的樹會存在偏見。
- 對時間序列數據,需要很多預處理的工作。
- 難以預測連續性的字段,即學習一棵最優的決策樹被認為是NP-Complete問題。實際中的決策樹是基於啟發式的貪心算法建立的,這種算法不能保證建立全局最優的決策樹。
- 回歸預測輸出值缺少平滑性,只會是有限的幾種數值。
- 不適合處理高維稀疏數據,不適合處理特征關聯性較強的數據。
參考文獻
[1] https://www.cnblogs.com/coder2012/p/4508602.html(附代碼)
[2] https://blog.csdn.net/u014514939/article/details/79299619
[3] https://www.cnblogs.com/yonghao/p/5135386.html
[4] https://blog.csdn.net/baimafujinji/article/details/53269040