大白話決策樹分類

2021-10-12 21:40:40 字數 2958 閱讀 2404

3 決策樹的減枝處理

4 決策樹中的連續值和缺失值

5 多變數的決策樹

6 sklearn中的決策樹

總結決策樹(decision tree):是一種基本的分類與回歸方法,此處主要討論分類的決策樹。

但是對於決策樹回歸,跟決策樹分類差不多,是在決策樹分類的基礎下,獲取各各葉子結點(類)的均值。

1) 構建根節點,將所有訓練資料都放在根節點,根據某種演算法選擇乙個最優特徵,按著這一特徵將訓練資料集分割成子集,使得各個子集有乙個在當前條件下最好的分類。

2) 如果這些子集已經能夠被基本正確分類,那麼構建葉節點,並將這些子集分到所對應的葉節點去。

3)如果還有子集不能夠被正確的分類,選取子集選擇新的最優特徵,繼續對其進行分割,構建相應的節點,如此遞迴,直至所有訓練資料子集被基本正確的分類,或者沒有合適的特徵為止。

4)每個子集都被分到葉節點上,即都有了明確的類,這樣就生成了一顆決策樹。

簡單一句話就是:劃分前的資訊熵–劃分後的資訊熵。表示的是向純度方向邁出的「步長」。

舉個例子

**資訊

資訊增益率

舉個例子:

計算income的增益率

由上面gain(income)=0.029。因此gainratio(income)= 0.029/1.557 = 0.019

分為預減枝和後減枝

預減枝:在劃分前計算該劃分前後的驗證精度(通過驗證集對該樹進行驗證),若精度不提公升則減枝,否者不減枝

後減枝:在樹生成後進行減枝,計算減枝後的驗證精度是否提公升,來判斷減不減枝

開始之前先思考第乙個為問題?當樣本資料**現連續值和缺失值,決策樹是怎麼處理的?

對於特徵(列)中的連續值處理:

1)對該連續值按小到大排序

2)依次選取左右兩個點的中間值,形成n-1個劃分結點

3)在這些劃分結點中選擇最有效的劃分結點

首先讓我們看看,正常的決策樹是長這樣

多變數決策樹長這樣

對比前後,實際上原來的化分類別的是關於軸(x和y)平行的,現在變為線/曲線

這線是怎麼出來的?實質上在各各變數間建立了乙個關係函式,再以此分類

思考第二個問題,若資料集**現缺失值,決策樹又是怎麼處理的?

由上面可以看出,對於缺失值的處理就是在原資訊增益的基礎上進行推廣,計算含缺失值的資訊增益。

對於sklearn中的模型基本上就分為以下3步驟:

第1步:匯入模型,並確定模型引數

第2步:新增訓練模型

第3步:對訓練後的模型進行樣本**/平均精度

為了方便理解,這裡使用sklearn中的load_iris資料集舉例,模型3步驟:

### 虹膜資料集構建樹

from sklearn.datasets import load_iris

from sklearn import tree

x, y = load_iris(return_x_y=true)

## 第1步:匯入模型,並確定模型引數

clf = tree.decisiontreeclassifier(

)## 第2步:新增資料訓練模型

clf = clf.fit(x, y)

## 第3步:對訓練後的模型進行樣本**/平均精度

#這裡可以呼叫函式檢視模型的屬性,或者**樣本型別等

print(

"訓練集樣本平均精度"+str(clf.score(x,y))

)

對於屬性劃分:

資訊增益:

缺點:如果考慮編號為一屬性,每個分支節點僅包含乙個樣本,這些分支節點的純度已經最大,然而,這樣的決策樹顯然不具有泛化能力,無法對新樣本進行有效**。

資訊增益比:

是資訊增益上的改進,採用資訊增益率替代資訊增益。

基尼係數:

以基尼係數替代熵,最小化不純度,而不是最大化資訊增益。

對於樹減枝:

預剪枝基於"貪心"本質禁止這些分支展開,給預剪枝決策樹帶來欠擬合的風險.

後剪枝決策樹欠擬合風險很小,泛化效能往往優於預剪枝決策樹,但是訓練時間開銷比未剪枝決策樹

和預剪枝決策樹都要大得多

參考文獻

《機器學習》 --周志華

《資料探勘概念與技術》 中文版的

白話決策樹

有一天,小明無聊,對宿舍玩cs的舍友進行統計,結果剛記下四行,被舍友認為影響發揮,給踢到床下去了,讓我們看看可憐的小明的記錄 子彈數量 血 行為 機槍 多 少 戰鬥 機槍 少 多 逃跑 小刀 少 多 戰鬥 小刀 少 少 逃跑 為了對得起小明記錄的這四條記錄,我們對其進行決策樹分析,從資料中看 1.如...

mysql用大白話解釋 大白話說說mysql索引

前面其實寫了好幾篇關於 mysql 索引的文章了,文章中有具體的例項和 sql 語句,這篇文章我想再用純大白話講講 mysql 索引,文中不涉及具體 sql 我之前甚至想過為啥要用資料庫來儲存資料,用普通的 txt 或者 word 這類檔案不行麼,這個問題其實可以從幾個方面來看,乙個是併發訪問資料加...

快速排序(大白話)

假設我們現在對 6 1 2 7 9 3 4 5 10 8 這個10個數進行排序。首先在這個序列中隨便找乙個數作為基準數 不要被這個名詞嚇到了,就是乙個用來參照的數,待會你就知道它用來做啥的了 為了方便,就讓第乙個數6作為基準數吧。接下來,需要將這個序列中所有比基準數大的數放在6的右邊,比基準數小的數...