02決策樹-初識與構建

白爾摩斯發表於2018-10-30

在講決策樹之前補充了一些基本概念:位元化、資訊熵、條件熵,重點理解熵的概念。本章開始正式進入機器學習模型-決策樹。
01 決策樹 – 數學理論概述

決策樹 Decision Tree: 在已知各種情況發生概率的基礎上,通過構建決策樹來進行分析的一種方式,是一種__運用概率分析的圖解法__。

決策樹是一個預測模型,代表物件屬性和物件值的對映關係;每個葉子節點都代表一種類別;

決策樹分為:決策樹可用於__有監督__的分類和迴歸演算法,迴歸用於預測連續值,常用演算法:ID3、C4.5、CART等。

一、決策樹構建過程

決策樹演算法的重點是決策樹的構造,構造過程是進行屬性選擇度量,確定各個特徵屬性之間的樹形關係。

構建決策樹步驟是分裂屬性,分裂屬性是指在某個節點按照某一類特徵屬性的不同劃分,構建不同的分支。目的在於:讓各個分裂子集儘可能$color{red}{純}$。即讓一個分裂子類中,待分類的項儘可能的屬於同一類別。

比如:根據一個人有沒有喉結來判斷是男是女。
通過“是否有喉結”這一屬性分類出的兩個子類:“男”,“女” 。這是一個比較$color{red}{純}$的分類。原來人的分類是男是女不確定性很高,但根據上述分類之後,男和女的分類相當清晰,此時該系統的不穩定性會比較低。

但是:如果根據一個人 “是否帶眼鏡” 來判斷是男是女,顯然分類的結果不如根據 “是否有喉結” 進行分類效果好。

此時理解:__構造過程是進行屬性選擇度量,確定各個特徵屬性之間的樹形關係。__ 這句話的含義是不是就清晰多了。

二、構建步驟如下

1、將所有特徵看成一個一個的節點。
2、遍歷每個特徵的每一種分割方式,找到最好的分割點;將資料劃分為不同的子節點,N1、N2、…、Nm,計算劃分之後所有子節點的$color{red}{純度}$資訊。
3、對於第2步產生的分割,選擇出最優的特徵以及最優的劃分方式;得出最終的子節點:N1、N2、…、Nm;
4、對於子節點N1、N2、…、Nm分別繼續執行2~3步,直到每個最終子節點都足夠$color{red}{純}$。

思考決策樹和KD樹的區別:
01 KNN演算法 – 概述
02 KNN演算法 – KD Tree
KD樹是一個二叉樹,而決策樹每一層的葉子節點可以有多個。


步驟分析:現在有若干特徵x1、x2、… 、xn

__假設1:__特徵x為是否有喉結。
那麼對於特徵值的劃分必然是(0-有,1-沒有),特徵劃分方式只有一種。二叉樹。

__假設2:__特徵x有三種取值:(0,1,2) 那麼分類方式有幾種?
第1種:(0,1,2);三個葉子節點。
第2種:屬於0類,不屬於0類;二叉樹。
第3種:屬於1類,不屬於1類;二叉樹。
第4種:屬於2類,不屬於2類;二叉樹。
在這4中分類方式中,我們可以找到一個對系統穩定性最佳的分類方式。

然後對於若干特徵x1、x2、… 、xn,我們需要遍歷出每一種特徵__所有__的分類方式,並找到一個對系統穩定性最佳的分類方式。

再針對上一步已選出的特徵x1、x2、… 、xn中的最佳的分類方式,我們再從這n個分類方式中再找到一個最佳的分類方式,做為決策樹第一次分裂。這次的分裂是所有選擇中最$color{red}{純}$的分割方式,是整個系統中的最優分割方式。

得到第一個最$color{red}{純}$的分割方式即生成了第1組子節點,我們還可以繼續往下劃分,以此類推。

注意:
1、一切劃分的標準都是基於目標值Y的,一個理想的演算法結果是:每一次分割後的子節點,都更夠更好得體現目標值。

2、如果一次分裂將子節點分割得太細,如動物分類,我們不是分割到狗就結束,而是一次細分到狗的每一個品種(金毛、泰迪)。分得太細可能會引起過擬合的問題。

3、針對連續值的劃分:確定一個值s作為分裂點,將大於s的值作為一條分支,小於等於s的值作為另一條分支。

三、決策樹分割屬性的選擇

決策樹演算法是一種 “貪心演算法” ,我們只可能考慮到每一次分裂的最優分割情況,但是無法找出全域性的最優劃分情況。

對於整體資料而言,按照所擁有特徵屬性進行劃分操作,對所有劃分操作的結果集$color{red}{純度}$進行比較,選擇$color{red}{純度}$越高的屬性作為當前需要分割的資料集進行分割操作。持續迭代,直到得到最終結果。

決策樹是通過$color{red}{純度}$來選擇分割特徵屬性點的。

PS:在本文中,唯一沒有深入解釋的術語是$color{red}{純度}$,文章中統一使用紅色標註。$color{red}{純度}$是非常重要的一個知識點,會在下一章深入描述。本章中,請先充分認識到$color{red}{純度}$在決策樹中的作用和意義。

03 決策樹 – 量化純度、資訊增益度、停止條件、評估


相關文章