決策樹學習

2022-09-20 06:33:13 字數 2129 閱讀 5092

決策樹 = 決策 + 樹。

其核心思想是程式選擇語句if else。

定義:先計算整體資訊熵, 再去找資訊增益最大的作為根/子節點,以此反覆,直到屬性窮盡。

如下圖:判斷是否賴床的dtree模型。

避免過擬合現象,追求普適性。

剪枝,即減少樹的高度就是為了解決過擬合,

過擬合的情況下,決策樹是能夠對給定樣本中的每乙個屬性有乙個精準的分類的,但太過精準就會導致上面圖中的那種情況,喪失了普適性。

而剪枝又分兩種方法,預剪枝幹,和後剪枝。這兩種方法其實還是蠻好理解的,一種是自頂向下,一種是自底向上。我們分別來看看。

預剪枝其實你可以想象成是一種自頂向下的方法。在構建過程中,我們會設定乙個高度,當達構建的樹達到那個高度的時候呢,我們就停止建立決策樹,這就是預剪枝的基本原理。

後剪枝呢,其實就是一種自底向上的方法。它會先任由決策樹構建完成,構建完成後呢,就會從底部開始,判斷哪些枝幹是應該剪掉的。

注意到預剪枝和後剪枝的最大區別沒有,預剪枝是提前停止,而後剪枝是讓決策樹構建完成的,所以從效能上說,預剪枝是會更塊一些,後剪枝呢則可以更加精確。

用id3演算法來構建決策樹固然比較簡單,但這個演算法卻有乙個問題,id3構建的決策樹會偏袒取值較多的屬性。為什麼會有這種現象呢?還是舉上面的例子,假如我們加入了乙個屬性,日期。一年有365天,如果我們真的以這個屬性作為劃分依據的話,那麼每一天會不會賴床的結果就會很清晰,因為每一天的樣本很少,會顯得一目了然。這樣一來資訊增益會很大,但會出現上面說的過擬合情況,你覺得這種情況可以泛化到其他情況嗎?顯然是不行的!

針對id3決策樹的這個問題,提出了另一種演算法c4.5構建決策樹。

c4.5決策樹中引入了乙個新的概念,之前不是用資訊增益來選哪個屬性來作為枝幹嘛,現在我們用增益率來選!

這裡面,iv(a)這個,當屬性可選的值越多(比如一年可取365個日期)的時候,它的值越大。

而iv(a)值越大,增益率顯然更小,這就出現新問題了。c4.5決策樹跟id3決策樹反過來,它更偏袒屬性可選值少的屬性。這就很麻煩了,那麼有沒有一種更加公正客觀的決策樹演算法呢?有的!!

上面說到,id3決策樹用資訊增益作為屬性選取,c4.5用增益率作為屬性選取。但它們都有各自的缺陷,所以最終提出了cart,目前sklearn中用到的決策樹演算法也是cart。cart決策樹用的是另乙個東西作為屬性選取的標準,那就是基尼係數

第一條公式中pk表示的是每個屬性的可選值,將這些可選值計算後累加。這條公式和資訊增益的結果其實是類似的,當屬性分布越平均,也就是資訊越模糊的時候,基尼係數值會更大,反之則更小。但這種計算方法,每次都只用二分分類的方式進行計算。比如說上面例子中的季節屬性,有春夏秋冬四個可選值(春,夏,秋,冬)。那麼計算春季的時候就會按二分的方式計算(春,(夏,秋,冬))。而後面其他步驟與id3類似。通過這種計算,可以較好得規避id3決策樹的缺陷。

使用cart決策樹的好處是可以用它來進行回歸和分類處理

利用sklearn例項化乙個決策樹,調參決策樹模型的各個引數,並且使用sklearn模型對上一節中的例子訓練出乙個決策樹模型,然後用graphviz讓決策樹模型視覺化

dataset如圖

**處理如圖:

得到最後視覺化的dtree.

(部分轉錄,fyi)

決策樹學習

決策樹學習是一種逼近離散值目標函式的方法,在這種方法中學習到的函式被表示為一棵決策樹。決策樹通過把例項從艮節點排列到某個葉子結點來分類例項,葉子結點即為例項所屬的分類。樹上的每乙個結點指定了對例項的某個屬性的測試,並且該結點的每乙個後繼分支對應於該屬性的乙個可能值。分類例項的方法是從這棵樹的根節點開...

決策樹學習

決策樹是一種在機器學習中常見的學習演算法。決策樹是一種基於樹結構來進行決策分類和回歸的,在每一步的決策過程中根據屬性值來進行劃分,決策過程中提出的每個判定問題就是對某乙個屬性的測試。一般的,乙個決策樹通常包含乙個根節點,若干的葉子節點和內部節點,葉子節點對應於最後的決策結果,其他每一節點對應於每乙個...

決策樹學習

決策樹是以例項為基礎的歸納學習。該類方法從一類無序,無規則的事物中推理出決策樹表示的分類規則。不論哪種決策樹學習演算法,其基本思想是一致的,即以資訊熵為度量構造一棵 熵值下降最快的樹,到葉子節點處的熵值為零。此時每個葉子結點的例項都屬於同一類。決策樹學習採用自頂向下的遞迴方法,決策樹的每一層結點依靠...