1. 程式人生 > >機器學習--決策樹演算法學習筆記

機器學習--決策樹演算法學習筆記

一、演算法表述

決策樹學習的目的是為了產生一顆泛化能力強的數。

一般來說,一顆決策樹包含一個根節點,若干個內部節點和若干個葉節點。

葉節點對應決策結果,其他每個節點對應一個屬性測試。

每個節點包含的樣本集合根據屬性測試的結果被劃分到子節點中,根節點包含樣本全集。

從根節點到每個葉節點的路徑就對應一個判定測試序列。

決策樹的基本流程遵循“分而治之”策略。

生成決策樹是一個遞迴的過程,有三種情況會導致遞迴返回:

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.後剪枝是先從訓練集生成一顆完整的決策樹,然後自底向上對非葉節點進行考察,若將該節點對應的子樹替換為葉節點能帶來決策樹泛化效能提升,則將該子樹替換為葉節點。