機器學習--決策樹演算法學習筆記
一、演算法表述
決策樹學習的目的是為了產生一顆泛化能力強的數。
一般來說,一顆決策樹包含一個根節點,若干個內部節點和若干個葉節點。
葉節點對應決策結果,其他每個節點對應一個屬性測試。
每個節點包含的樣本集合根據屬性測試的結果被劃分到子節點中,根節點包含樣本全集。
從根節點到每個葉節點的路徑就對應一個判定測試序列。
決策樹的基本流程遵循“分而治之”策略。
生成決策樹是一個遞迴的過程,有三種情況會導致遞迴返回:
1. 當前節點包含的樣本全屬於同一類別,無需劃分。
2. 當前屬性集為空,或者所有樣本在所有屬性上取值相同,無法劃分。把當前節點標記為葉節點,並將其類別設定為該節點所含樣本最多的類別。
3. 當前節點包含的樣本集合為空,不能劃分。把當前節點標記為葉節點,並將其類別設定為其父節點所含樣本最多的類別。
二、劃分選擇
“資訊熵”(information entropy)是度量樣本集合純度最常用的一種指標。
假設當前樣本集合D中第k類樣本所佔的比例為pk(k=1,2,3,...,|y|),則D的資訊熵定義為
Ent(D)的值越小,則D的純度越高。
假定離散屬性a有V個可能的取值{a1,a2,...,aV},若使用a來對樣本集D進行劃分,則會產生V個分支節點,其中第v個分支節點包含了D中所有在屬性a上取值為av的樣本,記為Dv,則用屬性a對樣本集D進行劃分所獲得的“資訊增益”(information gain):
資訊增益越大,則意味著使用屬性a來進行劃分所獲得的“純度提升”越大。我們可以選擇屬性
來進行決策樹的劃分屬性選擇。
然而,資訊增益準則對可取值數目較多的屬性有偏好,為減少這種偏好可能帶來的不利影響,可以使用“增益率”(gain ratio)來選擇最優劃分屬性,定義為:
其中
相反,增益率準則對可取值數目較少的屬性有所偏好。
所以可以先從候選劃分屬性中找出資訊增益高於平均水平的屬性,再從中選擇增益率最高的。
CART決策樹使用“基尼指數”(Gini index)來選擇劃分屬性。
Gini(D)越小,資料集D的純度越高。
屬性a的基尼指數定義為
所以可以選擇劃分後基尼指數最小的屬性作為最優劃分屬性。
三、剪枝處理
剪枝是為了抑制決策樹演算法過擬合。
決策樹剪枝的基本策略有“預剪枝”和“後剪枝”:
1.預剪枝是指在決策樹生成過程中,對每個節點在劃分前先進行估計,若當前節點的劃分不能帶來決策樹泛化效能提升,則停止劃分並將當前節點標記為葉節點。
2.後剪枝是先從訓練集生成一顆完整的決策樹,然後自底向上對非葉節點進行考察,若將該節點對應的子樹替換為葉節點能帶來決策樹泛化效能提升,則將該子樹替換為葉節點。