決策樹的概念,分類和初步的建樹過程

2021-09-11 20:37:19 字數 2645 閱讀 7982

決策樹,顧名思義就是用樹形結構來做決策。

直接上例子,圖源來自維基百科(titanic dataset):

決策樹其實就是乙個根據條件從上往下的判斷流程,根據條件的是或否,分支成下一層的判斷與決策。如果分支不再是乙個判斷條件,那麼它就是乙個決策

從這個圖我們可以看出feature(在這裡面就是判斷條件啦)的重要性,直接決定了你會走往哪個決策,性別,年齡,是否是sibsp,這些features共同決定了給定資料會通往哪個決策,survived or died。

根據決策樹給出的結果,我們可以把決策樹分成分類決策樹和回歸決策樹。

分類決策樹:決策樹得出的結果是不同的類別,比如可貸款和不可貸款

回歸決策樹:決策是對連續變數的**,如**房價

使用哪類決策樹看你想解決什麼樣的問題,是分類還是回歸。

決策樹的構建演算法有三種:

id3c4.5

cart

構建演算法名字有些奇怪,會在下篇文章介紹這三種構建演算法,id3是基本演算法,後兩種都是在id3的基礎上優化後的演算法。

我們接下來舉的例子都是用cart。

主要有三個問題:

選什麼特徵來當條件

條件判斷的屬性值是什麼?年齡 > 10? 還是年齡 > 15?

什麼時候停止**,達到我們需要的決策

我們有一堆特徵,最直接的想法就是,我們都試一下然後看看誰效果好就選誰嘛。這裡看誰效果好是用的損失函式來判斷的。為什麼這個方法的名字前面有遞迴二字呢,因為選好最好的特徵進行二叉**後,對**的結果可以再進行相同的辦法進行**(用損失函式判斷哪個特徵最適用)。

這其實就是貪心的思想,我們每一步都力求最好,讓損失函式達到最低。

從上面的遞迴二叉**方法可以看出,損失函式在這個方法中起到了至關重要的作用。

首先明確乙個想法,損失函式是想把差不多屬性的資料弄到乙個結點裡的,換言之,就是我進行**之後,**出來的兩個結點,我們希望他們的決策有比較鮮明的差異。比如決策結果為患病和不患病,選擇特徵進行**後,我們希望一邊集中的是患病的結果,一邊集中的是不患病的結果,這才是乙個好的分類決策樹。如果**完,你兩邊患病不患病都是五五開,那跟我們自己閉著眼睛進行分類有什麼區別呢?

明確損失函式想幹什麼後,我們就可以來看看分類決策樹和回歸決策樹的損失函式具體長什麼樣了。

g =∑

i(ps

∗(1−

ps))

g = \sum_ i (ps*(1-ps))

g=i∑​(

ps∗(

1−ps

))在以上公式中,g是損失函式,i代表**出的不同的組,ps是在這個組裡有相同結果的資料佔總資料的比例。

比如我的結果是患病和不患病,我用年齡當我的特徵將訓練集**成了兩個結點,每個結點都是100個資料。我是知道訓練集資料的label的,第乙個結點資料中結果是患病的有70個,不患病30個。第二個結點資料中結果是患病的有10個,不患病90個。我的損失函式計算就是:

0.7

∗0.3

+0.1

∗0.9

=0.3

0.7*0.3+0.1*0.9 =0.3

0.7∗0.

3+0.

1∗0.

9=0.

3最糟糕的情況就是分出來的兩個結點裡,每個結點患病不患病都是各佔一半,那這個**毫無作用,損失函式也會達到最大值:

0.5

∗0.5

+0.5

∗0.5

=0.5

0.5*0.5+0.5*0.5 =0.5

0.5∗0.

5+0.

5∗0.

5=0.

5回歸的話,損失函式度量的就是**值和真實值的偏差了,在這裡用殘差的平方和來衡量:

g =∑

i(yp

−y)2

g = \sum_ i (y_p-y)^2

g=i∑​(

yp​−

y)2yp是y prediction,是我們通過回歸決策樹回歸出來的**值,y是實際的真值,損失函式用**值和真值差的平方和來表示。

到這已經解決了1、2兩個問題了。選擇特徵是把全部特徵都試一遍,選擇邊界是把屬性值都試一遍(連續型的變數衍生出多個條件比如小於20歲,20-40歲,40-60歲),衡量的標準是損失函式。那麼什麼時候出決策的結果呢,即什麼時候停止**?

如果我們把所有特徵都用上,讓他瘋狂**,那麼他最後就是乙個很複雜的樹,並且有非常嚴重的過擬合。所以我們需要設定乙個讓樹停止生長**的條件,一般有兩種:

葉結點包含的最小資料量,一旦小與這個值,就停止**。(比如你**出來的乙個結點只有8個資料,你設定的最小資料量是10,那麼這個結點就不要再**了!)

樹的最大深度,一旦你的樹**到了最大深度,那麼不要再讓處於這個深度的結點繼續**下去了!

決策樹是使用樹形結構,從上而下根據條件判斷,最後得出決策的一種演算法

根據輸出的決策結果是為了解決分類還是回歸問題,決策樹可分為分類決策樹和回歸決策樹

建樹需要解決三個問題:選擇特徵,選擇判斷條件的屬性值,確定停止**的情況。

解決前兩個問題用的是損失函式,選擇損失函式最小的特徵和其**條件。解決第三個問題是設立一些**的門檻如葉節點最小資料量和決策樹最大深度。

決策樹 決策樹引數介紹(分類和回歸)

前面總結了資訊熵,資訊增益和基尼資訊的定義,以及決策樹三大演算法的原理及迭代過程,今天介紹下python中機器學習sklearn庫中決策樹的使用引數 決策樹既可以做分類,也可以做回歸,兩者引數大體相近,下面會先介紹分類,再對回歸不一樣的引數做單獨說明 1 criterion 特徵選取方法,可以是gi...

資料分析 決策樹演算法 決策樹的概念

顧名思義,決策樹將以樹狀結構表現出來,被用來輔助作出決策。具體結合例子來說,我們平時做決策時大多會伴隨著層層的選擇,比如找房子的時候,會考慮離工作 上課地點的距離 大小和 光照等等因素。如果乙個房子通勤快 低 光照好 空間大 雖然不太可能存在,但是只要存在這種房子 我們一定會作出 買 租 的決策。將...

決策樹01 決策樹的原理

此筆記根據 machine learning in action 和周志華教授的 機器學習 所作。缺點 可能會產生過度匹配問題。適用資料型別 數值型和標稱型 machine learning in action if so return 類標籤 else 尋找劃分資料集的最好特徵 劃分資料集 建立分...