Day4 《機器學習》第四章學習筆記

決策樹

  前幾天學習了《機器學習》的前三章,前三章介紹機器學習的基礎知識,接下來,第四章到第十章介紹一些經典而經常使用的機器學習方法,這部分算是具體的應用篇,第四章介紹了一類機器學習方法——決策樹。算法

3.1 基本流程

  決策樹(decision tree)是一類常見的機器學習方法。以二分類任務爲例,咱們但願從給定訓練數據集學得一個模型用以對新示例進行分類,這個把樣本分類的任務,可看做對「當前樣本屬於正類嘛?」這個問題的「決策」或「斷定」過程。顧名思義,決策樹,就是基於樹結構來進行決策的。例如咱們對一個好西瓜的斷定過程,以下圖:機器學習

  顯然,決策的最終結論是咱們的判斷結果:「是」或者「不是」好瓜。通常的,一、一顆決策樹包含一個根結點、若干個內部結點和若干個葉結點;二、葉結點對應決策結果,其餘每一個結點則對應一個屬性測試;三、每一個結點包含的樣本集合根據屬性測試的結果被劃分到子結點中;四、根結點包含樣本全集。 從根結點到每一個葉結點的路徑對應了一個斷定測試序列。決策樹學習,目的是產生一棵泛化能力強,即處理未見示例能力強的決策樹,其基本流程遵循簡單且直觀的「分而治之(divide-and-conquer)」策略,算法以下:ide

  顯然,決策樹的生成是一個遞歸過程。決策樹算法中,有三種情形會致使遞歸返回:(1)當前結點包含的樣本全屬於同一類別,無需劃分;(2)當前屬性集爲空,或者全部樣本在全部屬性上取值相同,沒法劃分;(3)當前結點包含樣本集合爲空,不能劃分。(在第(2)中情形下,把當前結點標記爲葉結點,並將其類別設定爲該結點所含樣本最多的類別;在第(3)中情形下,一樣把當前結點標記爲葉結點,但將其類別設定爲父結點所含樣本最多的類別。這兩種情形處理的實質是不一樣的,(2)是在利用當前結點的後驗分佈,而(3)則把父結點的樣本分佈做爲當前結點的先驗分佈。)post

4.2 劃分選擇

  有算法流程看出,決策樹學習關鍵在第8行,即如何選擇最優劃分屬性,通常而言,隨着劃分過程進行,咱們但願決策樹的分支結點所包含的樣本儘量屬於同一類別,即結點的「純度(purity)」愈來愈高。學習

  4.2.1 信息增益  

  「信息熵(information entropy)」是度量樣本集合純度最經常使用的一種指標。咱們假定當前樣本集合D中第k類樣本所佔的比例爲pk(k=1,2,…,|y|),則D的信息熵定義爲:測試

Ent(D)的值越小,D的純度越高(理想狀況就是Ent(D)的值小到0,至關於pk=1,這樣的話D中樣本就全屬於同一類)
  假定離散屬性a有V個可能的取值{a1, a2, …, aV},若使用a來樣本集D進行劃分,則產生V個分支結點,其中v個分支結點包含D中全部在屬性a上取值爲aV的樣本。根據信息熵定義式計算出Dv的信息熵,在考慮到不一樣的分支結點的樣本數不一樣,給分支結點賦予權重|Dv|/|D|,即樣本數越多的分支結點的影響越大,因而可計算出用屬性a對樣本集D進行劃分所取得的「信息增益(information gain)」:ui

  因此,信息增益越大,則意味着使用屬性a來進行劃分所得到的「純度提高」越大,所以,咱們可用信息增益來進行決策樹的劃分屬性選擇,即在算法流程4.2圖中第8行選擇屬性。著名的ID3(Iterative Dichotomiser迭代二分器)決策樹學習算法[Quinlan, 1986]就是以信息增益爲準則來選擇劃分屬性的。spa

  以表4.1中的西瓜數據集2.0爲例:3d

  該數據集包含17個訓練樣例,用以學習一棵可以預測沒剝開的是否是好瓜的決策樹。顯然,|y| = 2。在決策樹學習開始時,根結點包含D中的全部樣例,其中正例佔p1 = 8/17 ,反例佔p2 = 9/17。因而,根據信息熵定義式計算出根結點的信息熵爲:orm

  而後咱們計算出當前屬性集合{色澤,根蒂,敲聲,紋理,臍部,觸感}中每一個屬性的信息增益。以屬性「色澤」爲例,他有三個可能的取值:{青綠,烏黑,淺白}。若使用該屬性對D進行劃分,這能夠劃分爲三個子集,分別記爲:D1(色澤=青綠),D2(色澤=烏黑),D3(色澤=淺白)。子集D1包含編號{1,4,6,10,13,17}的樣例,其中正例佔p1 = 3/6 ,反例佔p2 = 3/6,同理寫出D二、D3的樣例編號,計算出對應正例,反例比例,就能夠根據信息熵定義式算出用「色澤」劃分以後所獲得的3個分支結點的信息熵:

  根據信息增益計算式算出各屬性信息增益:


  相似的咱們能夠計算出其餘屬性的信息增益:


  顯然,屬性「紋理」的信息熵最大,因而它被選爲劃分屬性。基於「紋理」對根結點進行劃分,進而繼續算出其餘各屬性信息增益:

可看出,「根蒂」、「臍部」、「觸感」3個屬性均取得了最大的信息增益,可任意選其中一個最爲下一步劃分屬性,相似的,對每一個分子結點進行上述操做,最終獲得決策樹如圖4.4所示:

  4.2.2 增益率

  在上面的劃分中嗎,咱們沒有將「編號」這一欄做爲劃分屬性,若是以編號做爲屬性劃分樣本,將產生17個分支,每一個分支結點僅含一個樣本,分支結點的純度最大。然而,這樣決策樹顯然不具備泛化能力,沒法對新樣本進行有效預測。
實際上,信息增益準則對可取值數目較多的屬性有所偏好,爲減小這種偏好可能帶來的不利影響,著名的C4.5決策樹算法[Quinlan, 1993]不直接使用信息增益,而是使用「增益率(gain ratio)」來選擇最優劃分屬性,增益率定義爲:

其中

稱爲屬性a的「固有值(intrinsic value)」[Quinlan, 1993].屬性a的可能取值數目越多(即V越大),則IV(a)的值越大。
  需注意的是,增益率準則對可取值數目較少的屬性有所偏好,所以,C4.5算法並非直接選擇增益率最大的候選劃分屬性,而是使用了一個啓發式[Quinlan, 1993]:先從候選劃分屬性中找出信息增益高於平均水平的屬性,再從中選擇增益率最高的。

  4.2.3 基尼指數

  CART(Classification and Rgression Tree)決策樹[Breiman et al. , 1984]使用「基尼指數(Gini index)」來選擇劃分屬性,與4.1採用相同的符號,數據集D的純度可用基尼值來度量:  Gini(D)反映了從數據集D中隨機抽取兩個樣本,其類別標記不一致的機率,所以,Gini(D)越小,則數據集D的純度越高。屬性a的基尼指數定義爲:

   因而,咱們在候選屬性集合A中,選擇那個使得劃分後基尼指數最小的屬性做爲最優劃分屬性,即

4.3 剪枝處理   

  剪枝(pruning)是決策樹學習算法對付「過擬合」的主要手段。在決策樹學習中,爲了儘量正確分類訓練樣本,結點劃分過程將不斷重複,有時會形成決策樹分支過多,這時就可能由於訓練樣本學得「太好了」,以致於把訓練樣本集自身的一些特色看成全部數據都具備的通常性質而致使過擬合,所以,可經過主動去掉一些分支來下降過擬合的風險。
決策樹剪枝的基本策略有「預剪枝(prepruning)」和「後剪枝(post-pruning)」[Quinlan, 1993]

  4.3.1 預剪枝

  4.3.2 後剪枝

4.4 連續與缺失值

  4.4.1 連續值處理
  4.4.2 缺失值處理

4.5 多變量決策樹

  (未完待續)

相關文章
相關標籤/搜索