鑑於最近面試總是被問到這類問題,所以這次就是想寫乙個從決策樹到gbdt這一系列的博文。一方面加深記憶,另一方面也供以後方便回頭看。再者若是能夠為也正在機器學習這條路上摸爬滾打的朋友有一點助益就更圓滿了。
本部落格是第一部分,主要介紹一下決策樹的基礎:特徵選擇。
決策樹演算法主要有三部分:
特徵選擇
決策樹的生成
決策樹的剪枝
而特徵選擇是決策樹最重要的部分也是最耗時的部分。這部分的主要作用是選擇出最有劃分特徵,使得資料集在劃分之後能夠有乙個很好的結果。比較常用決策樹特徵選擇演算法有:資訊增益、資訊增益率、基尼係數。下面會逐步介紹。
1,資訊熵
在資訊理論與概率統計學中,熵(entropy)是乙個很重要的概念。在機器學習與特徵工程中,熵的概念也用得非常多。而資訊熵也是特徵選擇演算法的基礎。
熵是度量乙個集合中隨機變數的不確定性(即純度)。
根據規矩咱們先從數學的角度介紹一下熵。
假設隨機變數x可能的取值為:這裡寫描述
對於每乙個可能的取值xi,其存在概率密度可以得到各個xi的概率:這裡寫描述
這樣就可以得到乙個樣本集d中根據x劃分之後的資訊熵了。
由式1.1可以得到以下資訊:若x1=1,而其他為0,那麼entropy(x)=0 (我們認為0*log(0)=0),此時表示很確定,沒有混亂;而當所有的xi等相等的時候entropy(x)=-nlog(1/n),此時表示分布的非常均勻且混亂。
所以我們期望entropy(x)能夠得到較小的值。
另外對於離散型的變數的話,是通過類別出現的頻率來表示概率的。假設樣本集d,隨機變數x的樣本類別有k個,而每個類別下面有ck個樣本,那麼每個類別的概率為:這裡寫描述
|ck|表示類別k的樣本數,|d|表示樣本總數
則樣本集d隨機變數x的資訊熵為:
這裡寫描述
2,資訊增益
資訊增益白話一點說,就是資訊熵的差值:在沒有**之前計算一下資訊熵然後根據隨機變數x計算一下資訊熵,兩者之間的差值就是資訊增益的多少。資訊增益越大表明該變數對於樣本集的貢獻越大,而劃分之後的集合也越穩定。公式為:
這裡寫描述
其中h(d|a)表示使用特徵a來劃分集合d之後得到的資訊熵,h(d)表示在使用特徵劃分之前的資訊熵。
實際上,樣本集d應該有很多個用於劃分的特徵,假設一共有q個特徵:
這裡寫描述
計算所有這些特徵劃分資料集d得到的資訊增益,去資訊增益最大的作為當前劃分所用的特徵。
3,資訊增益的例子
現在要決定去不去打球,打球受兩個因素決定天氣和風力。
y: 決定因素:
之前打球的記錄如下表所示:
這裡寫描述
根據上述條件計算資訊增益,選取最優的特徵。
上表中共有14個例項,包括9個正例,5個負例。
1,計算在加入特徵之前的資訊熵:
這裡寫描述
2,計算各個特徵下得到的資訊熵
a,計算天氣(weather)劃分之後的資訊增益
天氣劃分資料集如下所示:
這裡寫描述
在天氣特徵下將資料集劃分成兩個:晴天有7條記錄,陰天有7條記錄
計算**之後的資訊熵:
這裡寫描述
最後計算天氣特徵對打球的資訊增益:
這裡寫描述
b,計算風力(wind)劃分之後的資訊增益
風力特徵與資料集的關係如下所示;
這裡寫描述
通過計算得到:
en(wind=小) = 0.811
en(wind=大) = 0.1.0
這裡寫描述
3,比較各個特徵下的資訊增益
從資訊增益的大小中可以得到:weather的**效果要比wind的要好。所以應該優先選取weather作為特徵。
4,資訊增益率
資訊增益雖然好,但是它會偏向於取值較多的特徵。因為當特徵值取值較多時,劃分後的子集的數目較少且純度較高,得到的熵也更低,因此得到的資訊增益也較大。最極端的假設是**後得到的每個子集只有乙個樣本,有log(1)=0知,其資訊熵為0,那麼資訊增益就是最大的了。這樣是不可取的。
資訊增益率就是為了克服著方面的問題而提出的:資訊增益比 = 懲罰引數 * 資訊增益
其數學公式如下:
這裡寫描述
其中gain(d|a)為特徵a的資訊增益,en(d|a)為特徵a將集合d劃分之後的資訊熵,也就是考慮劃分之後的混亂程度,特徵a劃分的子集越多,en(d|a)就越大,那麼懲罰程度就越大。
從決策樹到GBDT
首先,決策樹分為分類樹和回歸樹。gbdt中的樹是回歸樹 不是分類樹 gbdt用來做回歸 調整後也可以用於分類。以下羅列了比較好的學習資源,看完就可以掌握gbdt了 決策樹參考 分類樹回歸樹區別參考 分類樹 以c4.5分類樹為例,c4.5分類樹在每次分枝時,是窮舉每乙個feature的每乙個閾值,找到...
GBDT 梯度提公升決策樹
gbdt gradient boosting decision tree 又叫 mart multiple additive regression tree 是一種迭代的決策樹演算法,該演算法由多棵決策樹組成,所有樹的結論累加起來做最終答案。它在被提出之初就和svm一起被認為是泛化能力較強的演算法。...
梯度提公升決策樹 GBDT
整合學習經典一類演算法,屬於個體學習器間存在較強依賴關係的一類,需以序列的序列化生成方法構建。原理 所有弱分類器結果相加等於 值,下乙個弱分類器去擬合誤差函式對 值的殘差 值與真實值的誤差 這裡的弱分類器是決策樹。舉例 用gbdt的方法 年齡 step1 在第乙個弱分類器中隨機選擇乙個數字擬合,發現...