一、常用的決策樹節點枝剪的衡量指標:
熵:
如果一件事有k種可的結果,每種結果的概率為 pi(i=1…k)
該事情的信息量:
熵越大,隨機變量的不確定性越大。
信息增益:
特征A對訓練數據集D的信息增益g(D,A),定義為集合D的經驗熵H(D)與特征A給定條件下的經驗條件熵H(D|A)之差
換句話說,就是原信息集下的信息量-在A特征條件下的信息集的信息量
信息增益越大,信息增多,不確定性減小
信息增益率:
信息增益率定義:特征A對訓練數據集D的信息增益比定義為其信息增益與訓練數據D關于特征A的值的熵HA(D)之比
注:p:每個唯獨上,每個變量的個數/總變量個數
二、常用的決策樹介紹:
ID3算法:
ID3算法的核心是在決策樹各個子節點上應用信息增益準則選擇特征,遞歸的構建決策樹,具體方法是:從根節點開始,對節點計算所有可能的特征的信息增益,選擇信息增益最大的特征作為節點的特征,由該特征的不同取值建立子節點;再對子節點遞歸調用以上方法,構建決策樹。
解釋:在做每次選擇差分枝的時候,以不確定性最小點作為loss fuction,直到無法細分
缺點:
1.ID3算法只有樹的生成,所以該算法生成的樹容易產生過擬合,分得太細,考慮條件太多。
2.不能處理連續屬性
3.選擇具有較多分枝的屬性,而分枝多的屬性不一定是最優的選擇。
4.局部最優化,整體熵值最小,貪心算法算子節點的分支
C4.5算法:
基于ID3算法,用信息增益比來選擇屬性,對非離散數據也能處理,能夠對不完整數據進行處理。
采用增益率(GainRate)來選擇分裂屬性。計算方式如下:
CART算法:
CART算法選擇分裂屬性的方式是比較有意思的,首先計算不純度,然后利用不純度計算Gini指標。
計算每個子集最小的Gini指標作為分裂指標。
不純度的計算方式為:
pi表示按某個變量劃分中,目標變量不同類別的概率。
某個自變量的Gini指標的計算方式如下:
計算出每個每個子集的Gini指標,選取其中最小的Gini指標作為樹的分支(Gini(D)越小,則數據集D的純度越高)。連續型變量的離散方式與信息增益中的離散方式相同。
三、基于決策樹的一些集成算法:
隨機森林:
隨機生成n顆樹,樹之間不存在關聯,取結果的時候,以眾數衡量分類結果;除了分類,變量分析,無監督學習,離群點分析也可以。
生成過程:
1.n個樣本,隨機選擇n個樣本(有放回),訓練一顆樹
從原始訓練數據集中,應用bootstrap方法有放回地隨機抽取 K個新的自助樣本集,并由此構建 K棵分類回歸樹,每次未被抽到的樣本組成了 K個袋外數據(Out-of-bag,OOB)
2.每個樣本有M個屬性,隨機選m個,采取校驗函數(比如信息增益、熵啊之類的),選擇最佳分類點
3.注意,每個樹不存在枝剪
4.將生成的多棵樹組成隨機森林,用隨機森林對新的數據進行分類,分類結果按樹分類器的投票多少而定
樹的個數隨機選取,一般500,看三個誤差函數是否收斂;變量的個數一般取均方作為mtry
GBDT:
DT步驟:
GBDT里面的樹是回歸樹!
GBDT做每個節點上的分支的時候,都會以最小均方誤差作為衡量(真實值-預測值)的平方和/N,換句話說,就是存在真實線l1,預測線l2,兩條線之間的間距越小越好。
BT步驟:
GBDT的核心就在于,每一棵樹學的是之前所有樹結論和的殘差,這個殘差就是一個加預測值后能得真實值的累加量。
換句話說,就是第一次預測的差值記為下一次預測的初始值,一直到某一次計算出的差值為0,把前n次的結果相加,就是一個真實預測。
Adaboost:
步驟:
1.初始化所有訓練樣例的權重為1 / N,其中N是樣本數
2.對其中第1~m個樣本:
a.訓練m個弱分類器,使其最小化bias:
b.接下來計算該弱分類器的權重α,降低錯判的分類器的權重,:
c.更新權重:
3.最后得到組合分類器:
核心的思想如下圖:
全量數據集在若干次訓練后,降低訓練正確的樣本的權重,提高訓練錯誤樣本的權重,得到若干個Y對應的分類器,在組合投票得到最終的分類器