演算法總結2 決策樹分類器

2022-07-19 03:06:11 字數 2524 閱讀 9610

數學基礎:

樹:樹是一種資料結構,它是由n(n>=1)個有限結點組成乙個具有層次關係的集合。把它叫做「樹」是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點:

每個結點有零個或多個子結點;

每乙個子結點只有乙個父結點;

沒有前驅的結點為根結點;

除了根結點外,每個子結點可以分為m個不相交的子樹;

沒有子節點的節點稱為葉節點。

決策樹分類器原理:

決策樹是一顆樹,要分類的樣本從樹根進入,在樹的每個節點通過對樣本的某種屬性的判斷選擇不同的路徑逐步下降到底,得出其所屬類別。

例圖:

為了建立一棵決策樹,我們首先應向程式輸入大量訓練資料(包含所屬類別的資料),程式將根據訓練資料按某一演算法自動生成決策樹。

決策樹生成演算法:

為了構造決策樹,演算法首先建立乙個根節點,然後通過分析訓練資料,逐步選出適合的變數對資料進行拆分(即逐步構造上圖中的非葉子節點。)

為了選擇適合的變數對資料進行拆分,我們需要乙個方法來評估一種拆分方案的好壞,其評估方法包括:

1)基尼不純度:

定義:基尼不存度是指來自集合的某種結果隨機應用於集合中某一資料的預期誤差。(如果集合中所有結果屬於同一類,則誤差為0)

使用:利用這一思想,我們可以將集合中每種類別的資料出現的次數除以資料總數計算相應概率,再將這些概率的乘積相加(所有概率兩兩相乘後在相加),這樣就會得到某一資料被隨機分配到錯誤結果的總概率。

偽**:

imp=0

for  k1 in kinds

p1=count(k1) / total

for k2 in counts

if (k1==k2)continue

p2=count(k2) / total

imp+=p1*p2

ans=imp

(p1*p2是乙個p1類別的資料被當作p2的概率)

2)熵:在資訊理論中,熵代表的是集合的無序程度-----基本上就相當於我們在此處所說的集合的混雜程度。

熵的值是遍歷所有結果後得到的pi*log2(pi)的和的絕對值

偽**:

ent=0.0

for k in kinds

p=count(k) / total

ent=ent – p*log2(p)     // 因為0ans=ent

有了上述評估方法後,我們就可以不斷嘗試各種拆分方法,然後選出最好的拆分方法構造樹中的節點了。我們將計算拆分前的熵(基尼不存度)值,與拆分後的熵(基尼不存度)的值的加權平均,將其差值作為資訊增益。最終對能得到最大資訊增益的屬性進行拆分。然後再分別對拆分後得集合選擇屬性進行拆分,直到最大資訊增益為非正時停止拆分,這時決策樹就構建完畢了。

優化:

為了防止決策樹變的過度擬合(過度針對訓練資料),我們可以在資訊增益小於某個值後就停止拆分。但是我們可能遇到這樣的資料―――某次拆分資訊增益很小,但下一次就會很大。為了防止這一狀況,我們可以在用先前的方法構造整棵樹後,在嘗試消除多餘的節點。這個過程就是剪枝

剪枝的過程就是對具有相同父節點的節點進行檢查,判斷將其合併後,資訊增益是否會小於某個指定發值。若是,則合併這些節點。合併後節點包括所有可能的結果值。

在處理數值型資料時,熵和基尼不存度並不是乙個好的選擇,因為有些數值相差很近,有些相差很遠,不能簡單用是否為同一類別進行判斷。所以我們可以用方差代替它們。

決策樹對缺失資料的處理:

當我們要判斷類別的樣本缺少某些決策樹作判斷時必須的資料時,我們可以選擇同時走兩個分支,不過我們不是平均統計各分支的結果值,而是進行加權統計。為了達到這一目標,決策樹中每個節點都有乙個值為1的權重,即觀測資料對於資料向是否屬於某個特定分類的概率具有100%的影響,而如果走多個分支,我們將給每個分支乙個權重,其值等於所有位於該分支的其他資料所佔的比重。

優點:

決策樹最大的優勢是它可以輕易對乙個受訓模型給予解釋。(解釋分類原理)

決策樹可以同時接受分型別和數值型資料。

比起貝葉斯分類器(參考《集體智慧型程式設計》演算法總結1—貝葉斯分類器)決策樹可以更好的處理變數間的相互影響。

缺點:

決策樹無法單獨對某一資料進行訓練。

面對有大量可能結果的資料集時,決策樹不夠有效。當可能的分類結果較多時,決策樹就會過度複雜,**效果也會較差。

另外,決策樹不適合處理大量的數值型輸入輸出,因為它只能建立一些簡單的》 ,

呼….這個寫的不怎麼累了….很多都是書上的原話哈,不像昨天那個幾乎都是自己寫的……

分類 決策樹演算法

匯入sklearn的內嵌鳶尾花資料集 from sklearn.datasets import load iris 匯入決策樹分類器,同時匯入計算交叉驗證值的函式cross val score from sklearn.tree import decisiontreeclassifier from ...

分類演算法 決策樹演算法

決策樹是一種對例項進行分類的樹形結構,也是一種基本的分類與回歸方法。決策樹由結點 node 和有向邊 directed edge 組成。結點又分為兩種型別 內部結點 internal node 和葉結點 leaf node 內部結點表示乙個特徵或屬性,葉結點表示乙個分類。如下圖所示為乙個決策樹模型 ...

2017 1 13 貝葉斯分類器,決策樹 總結

python 正則式部分參考 樸素貝葉斯分類利用貝葉斯概率以及貝葉斯準則提供了一種利用已知值來估計未知概率的有效方法,比硬規則 k近鄰和決策樹 下的分類更有效。決策樹利用資訊理論中的熵的原理自動將已知分類訓練集的特徵向量找到資訊增益最大的分類,具體是將訓練集中的所有特徵挨個測試,用遞迴,每次找到最好...