決策樹雜記

2021-09-11 06:04:37 字數 1586 閱讀 1359

首先,我先以自己的理解對決策樹做乙個簡單的解釋定義:

決策樹是乙個分類演算法,它是根據已知的資料集來歸納出乙個分類規則,對未知資料進行分類的方法。其具體操作是,根據原訓練集,遞迴的選取最優特徵,然後根據最優特徵的取值,對相應的資料集進行劃分歸類。

一般而言,決策樹的具體實現分為三個過程:

a.特徵選擇              b.決策樹生成             c.決策樹剪枝

其中,在進行特徵選擇時,會有乙個衡量特徵的標準,這個標準不唯一,但較為常見的是資訊增益、資訊增益比及gini指數。

這三個標準的區別是,gini指數是cart決策樹的特徵衡量標準,資訊增益比與資訊增益較為通用,但相比與資訊增益,資訊增益比會比資訊增益較為準確,這是因為資訊增益會比較偏向於取值較多的特徵,而資訊增益比避免了這種情況(具體原因可通過資訊增益與資訊增益比的數學表示式證明得出)

對於決策樹的生成,先考慮普通的決策樹.......

普通決策樹的生成過程大致是一樣的,不同的就是特徵選取規則那一塊,根據資訊增益與資訊增益比兩種規則,有較為常見的兩種決策樹生成過程,分別是id3演算法和c4.5演算法

input:資料集d,特徵集a,停止閾值e

output:決策樹t

def maketree(d):

if 資料集d中的例項屬於同乙個類:

print('t為單節點樹,將該類作為結點的類標記')

return t

elif 特徵集a為空:

print('t為單節點樹,將d中歸屬某類例項數最多的類作為該結點的類標記')

return t

else:

list =

for a in a:

if max(list) < e:

print('t為單節點樹,將d中例項數最大的類標記為結點的類標記')

return t

sa = arg max(list) #sa為資訊增益最大的特徵

print('根據最優特徵sa的取值將資料集d劃分為d1、d2……dn,將其最為子結點,並將di中例項數最大的類作為該結點的類標記')

return t

#對每乙個子結點,以di為資料集,a-sa為特徵集,遞迴呼叫maketree()函式,最終返回t

接下來,考慮普通決策樹的剪枝........

由於決策樹生成的時候,是遞迴地產生的決策樹,只到不能繼續進行為止,所以,其會帶來過擬合的影響,所以我們要對其剪枝。

剪枝的具體操作,顧名思義,就是在已經生成的決策樹上剪掉一些葉結點或者子樹。

剪枝通過極小化正則化的loss函式來實現。

正則化的lossfunction=對訓練書的效果+a*決策樹的葉結點個數

最後,來看一下cart,也就是分類回歸樹,其中分類樹與回歸樹是倆種不同的樹,,,這裡簡略介紹一下這兩種樹

首先我們得有乙個概念,那就是cart樹是乙個二叉樹,也就是說,特徵集中的特徵取值只有兩個取值。

先看回歸樹:

乙個回歸樹其實就是對輸入空間的乙個劃分及在劃分上的輸出值。在構建回歸樹的過程中對原資料集的**誤差衡量方法選用的是平方誤差最小。

再看分類樹:

分類樹用基尼指數選擇最優特徵,同時決定該特徵的最優二值切分點。

決策樹和CART決策樹

首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...

決策樹(二)決策樹回歸

回歸 決策樹也可以用於執行回歸任務。我們首先用sk learn的decisiontreeregressor類構造一顆回歸決策樹,並在乙個帶雜訊的二次方資料集上進行訓練,指定max depth 2 import numpy as np quadratic training set noise np.r...

決策樹01 決策樹的原理

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