天天看點

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

Decision Tree 決策樹:

決策樹是屬于機器學習監督學習分類算法中比較簡單的一種,決策樹是一個預測模型;他代表的是對象屬性與對象值之間的一種映射關系。樹中每個節點表示某個對象,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則對應從根節點到該葉節點所經曆的路徑所表示的對象的值。決策樹僅有單一輸出,若欲有複數輸出,可以建立獨立的決策樹以處理不同輸出。  下面來看個範例,就能很快了解了。

範例:

假設,我們有以下資料,表示當天是否回去玩高爾夫:

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

用決策樹建立起來後,能得到這樣的模型:

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

至此可以看出,說白了,決策樹就是If()語句的層層嵌套,知道最後能總結出點什麼。(原諒我實在不會描述點什麼,不過看了這圖應該對決策樹有個大緻的了解了吧。)

決策樹中的元素:

決策樹中的元素基本和樹中的差不多。 最上面的一個稱為根節點,如上圖的Outlook,用資料中的屬性作為根節點或是節點,如Humidity,Windy等。 分支使用的是節點屬性中的離散型資料,如果資料是連續型的,也需要轉化成離散型資料才能在決策樹中展示,如上圖将Outlook屬性作為根節點,sunny,overcast,rain作為該節點的三個分支。

資訊熵 Entropy:

現在,問題來了,在算法中如何确定使用資料的哪個屬性作為根節點或是節點。當然不能随便選,我們追求的一直都是最優解,即使是局部最優。是以我們需要引入資訊熵這個概念。 1948年,香農提出了“資訊熵”概念。一條資訊的資訊量大小和它的不确定性有直接的關系。我們對一樣東西越是一無所知,想要了解它就需要越多的資訊。 舉個栗子,如果我随機一個1-8之間的數字,給你猜,隻回答你是或否。那最好的猜測方式應該是,“是不是在1-4之間?”,如果得到否,我們就知道在5-8之間,如果得到是,我們繼續猜“是否在1-2之間?”。這樣的話,我們隻需要猜3次就能知道這個數到底是幾。轉化為資訊熵公式就是:

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

根據這公式和例子,我們能得到結果是3,這是因為我們對1-8數字可能被選取的機率一無所知,如果比如說1-8選取機率并不是均勻分布的,我們就能更快的找到相應的數字,是以資訊熵也會相應的變小。 總結下,如果一個變量的不确定越大,熵值也越大。

決策樹歸納算法 ID3:

Information Gain:

又稱資訊擷取量或是資訊增益,将樣本的所有屬性分割開,分别計算,熵之和,資訊增益就是二者的內插補點。

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

簡單了解就是,沒有屬性A時候的資訊量-有A時候的資訊量。

舉個栗子,假設我們有以下資料,買電腦的人與不買電腦的人:

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

可以看出,在此資料中,總資料量14個,買電腦的人9個,不買電腦的人5個,是以,Info(D)計算方式如下:

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

然後,我們想計算下age屬性的資訊量,<30的5人,<30并買電腦的2人,不買的3人,其餘31-40,>40方法同理,是以計算方式如下:

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

是以Gain(age) = 0.940-0.694 = 0.246 再對比下其餘屬性Gain(Income)=0.029,Gain(Student)=0.151,Gain(Credit_rating)=0.048,是以可以看出,age屬性資訊量最大,是以選擇age屬性作為根節點。計算節點方法同理。

C4.5算法:

ID3算法存在一個問題,就是偏向于多值屬性,例如,如果存在唯一辨別屬性ID,則ID3會選擇它作為分裂屬性,這樣雖然使得劃分充分純淨,但這種劃分對分類幾乎毫無用處。ID3的後繼算法C4.5使用增益率(gain ratio)的資訊增益擴充,試圖克服這個偏倚。

C4.5算法首先定義了“分裂資訊”,其定義可以表示成:

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

其中各符号意義與ID3算法相同,然後,增益率被定義為:

決策樹 (Decision Tree) 原理簡述及相關算法(ID3,C4.5)Decision Tree 決策樹:

C4.5選擇具有最大增益率的屬性,ID3選擇最大資訊擷取量的屬性,其餘沒啥差别,也就不贅述了

決策樹其餘算法:

決策樹其餘算法還有C4.5,CART算法,共同點為都是貪心算法,差別為度量方式不同,就比如ID3使用了資訊擷取量作為度量方式,而C4.5使用最大增益率。

如果屬性用完了怎麼辦:

如果屬性全部用完,但是資料還不是純淨集怎麼辦,即集合内的元素不屬于同一類别。就比如上述買電腦的例子中,如果age,Credit_rating,Student,Income都相等,但是有人買電腦,有人不買電腦,那決策樹怎麼決策?在這種情況下,由于沒有更多資訊可以使用了,一般對這些子集進行“多數表決”,即使用此子集中出現次數最多的類别作為此節點類别,然後将此節點作為葉子節點。

剪枝:

作為決策樹中一種放置Overfitting過拟合的手段,分為預剪枝和後剪枝兩種。 預剪枝:當決策樹在生成時當達到該名額時就停止生長,比如小于一定的資訊擷取量或是一定的深度,就停止生長。 後剪枝:當決策樹生成完後,再進行剪枝操作。優點是克服了“視界局限”效應,但是計算量代價較大。

決策樹優點:

直覺,便于了解,在相對短的時間内能夠對大型資料源做出可行且效果良好的結果,能夠同時處理資料型和正常型屬性。

決策樹缺點:

可規模性一般,連續變量需要劃分成離散變量,容易過拟合。

繼續閱讀