日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

决策树基本原理与sklearn应用

發布時間:2024/1/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 决策树基本原理与sklearn应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

# 決策樹算法

    • 1 決策樹算法的引入
      • 1.1樹的概念
      • 1.2算法思路
      • 1.3構建決策樹的三個步驟
    • 2 特征分類的評價指標
      • 2.1熵的概念
      • 2.2信息熵的概念
      • 2.3Gini系數
    • 3 ID3算法
    • 4 C4.5
      • 4.1決策樹對連續屬性的處理
      • 4.2決策樹對離散屬性的處理
    • 5 CART分類回歸樹
      • 5.1CART分類回歸樹簡介
      • 5.2CART分類樹---待預測結果為離散型數據
      • 5.3CART回歸樹--待預測結果為連續型數據
      • 5.4CART回歸樹示例
      • 5.5 CART樹與GBDT的區別
    • 6 sklearn庫的應用

1 決策樹算法的引入

決策樹算法:非參數(不限制接收數據的結構和類型)的監督模型,可決策分類與回歸的問題.

1.1樹的概念

樹分為根節點,分支節點,葉子節點.
根節點:存儲著所有樣本數據
分支節點:決策樹算法會利用當前節點中的樣本來決策選擇哪個特征做分支
葉子節點:最后不再分支的節點
分支節點與葉子節點都有其所屬的類別標簽,當類別標簽是離散的(分類問題),節點的label標簽為當前節點中樣本所屬label最多的作為當前節點的label.當類別標簽是連續的(回歸問題),節點的label標簽為當前節點中所有樣本label的均值.

對樣本特征的幾種編碼思路
LabelEncoder編碼:對樣本中特征的取值的編碼(如對年齡特征的取值為青年,中年,老年,編碼為0,1,2)

one-hot編碼:也是對樣本中的特征的取值編碼

機器學習的處理問題流程:
1.數據角度—有標簽數據(無監督,有監督)
2.業務角度—是否有預測—有預測—>監督學習—>根據預測值是否連續或離散—>分類或回歸
—無預測—>非監督學習

1.2算法思路

利用樹的結構,將數據集根據樣本中的特征(屬性)劃分為樹中的分支節點,并最終分到葉子節點

決策樹算法的核心是要解決兩個問題:
1.如何從數據集表中找到最佳節點和最佳分支
2.如何讓決策樹停止生長,防止過擬合

1.3構建決策樹的三個步驟

1.特征選擇:選取有較強分類能力的特征
通過信息熵增益/信息熵增益率/gini系數/分類錯誤率來判斷特征的分類能力
2.決策樹生成
典型算法:ID3,C4.5,他們生成決策樹過程相似, ID3采用信息熵增益作為特征選擇度量,C4.5采用信息熵增益比率,CART樹采用gini系數
3.決策樹剪枝
決策樹產生了過擬合現象(模型對訓練集效果很好,對位置數據效果很差)
注意:決策樹構建直到沒有特征可選或者信息增益很小時停止,這就導致了構建的決策樹模型過于復雜.
發生過擬合是由于決策樹太復雜,解決辦法是控制模型的復雜度對于決策樹來說就是簡化模型:剪枝(又分為先剪枝與后剪枝)

2 特征分類的評價指標

2.1熵的概念

信息:信息就是對不確定性的消除(把信息理解為一種不確定性)
熵定義為信息(不確定性)的期望值
一個可以分類為n個label的數據集S,它的信息熵為隨機得到的一個label包含的信息量(不確定性)的期望值.
不確定性公式:I(X)=-log( p )
信息熵公式:E(S)=

上述若對數的底數取值為2,就是我們平常所說的信息單位bit(比特)

pi為取得對應label的概率.
數據集的信息熵代表了這個數據集的混亂程度,信息熵越大,越混亂.

2.2信息熵的概念

若按照某種特定方式,例如按照某一屬性的值對S進行劃分,得到n個子集,新的子集們都有自己的信息熵(子集內部討論),屬性所有子集的(子集所占比例*子集的信息熵)的和與原S的熵的差值就是這個劃分操作帶來的信息熵增益.

總結:
變量的不確定性越大,熵也就越大.熵越小,信息的純度越高.在構建我們的決策樹的過程中,希望選擇信息熵比較小的,因為信息熵小對應的信息純度越高

基于信息熵和信息增益來建立決策樹
如何根據熵建立一顆決策樹?
選擇熵比較小的特征或者屬性作為分支節點
原因:因為熵小,信息純度越高

2.3Gini系數

Gini系數是一種與信息熵類似的做特征選擇的方式,可以用來表征數據集樣本的不純度.在CART(Classifier and Regression Tree)算法中利用Gini系數構造二叉分類回歸樹.
Gini系數的計算方式如下:

其中,D表示數據集全體樣本,pi表示每種類別出現的概率,取個極端情況,如果數據集中所有的樣本都為同一類,那么有p0=1,Gini(D)=0,顯然此時數據的不純度最低.
如果樣本集合D根據某個特征A被分割為D1,D2兩個部分,那么在特征A作為劃分的條件下,集合D的Gini系數定義為:

Gini(D,A)表示特征A不同分組的數據集D的不確定性,Gini指數越大,樣本集合的不確定性也就越大,這一點與熵的概念比較類似.
Gini(D1)/Gini(D2)的解釋:
特征A有兩個取值,根據取值可以把數據集D分為兩個子集D1,D2.在子集中討論各自的Gini系數.
所以數據不純度減小程度:
△Gini(A)=Gini(D)-Gini(D,A)
顯然,在做特征選擇的時候,我們選取△Gini(A)最大的那個

Gini系數相對于信息熵增益率的優勢:
熵的計算用到了大量的對數運算,計算機中對數運算相對于基本運算需要的時間成本更多,這在模型較為復雜時會嚴重拖慢計算速度.所有采用Gini系數作為判斷標準可以在保證準確率的同時加快計算速度.

3 ID3算法

信息增益概念的含義與本質
含義:劃分訓練數據集前后信息發生的變化
本質:衡量給定屬性對訓練數據集的劃分能力.

我們使用信息增益來作為決策樹分支的劃分依據,它也是決策樹分支上整個數據集信息熵與當前節點(劃分節點)信息熵的差值,通常用Gain(A)表示
Gain(A)=H(總) -H(A)
H(總)=

其中pi是類別標簽i的概率,所以H(總)計算的是類別標簽的不確定性的期望
H(A):以A為劃分條件的所有子集信息熵之和.
信息增益:總體的信息熵-以某個特征作為劃分標準的信息熵

假設在某個分支節點中:Gain(age)>Gian(income)>Gain(“sex”) --這里對所有特征的信息熵有一個排序的過程
那么在建立決策樹選擇特征age分支
ID3算法原理:
輸入:數據集
輸出:決策樹
算法:
1.計算所有特征的信息增益,選擇信息增益最大的特征作為劃分節點
2.把劃分節點從當前特征集合中去除
TA=T-{a}
3.在特征集合中重新選擇信息增益最大的特征作為劃分節點
4.直到所有的樣本都劃分為葉子節點

注意:計算信息增益的時候,將所有特征或屬性的信息增益計算出來了,只需要排序和選擇就可以了

4 C4.5

和ID3算法類似,只是在以下幾個點做了改進
1.用信息增益率選擇屬性,避免了ID3偏向于選擇取值多的屬性 這一不足點

2.在樹構造過程中進行了剪枝
3.能夠完成連續屬性的離散化處理
4.能夠對不完整數據進行處理

4.1決策樹對連續屬性的處理


具體的劃分規則:采用的是一種遍歷的方式,找出所有已知連續值中最適合當前屬性分裂的值作為二分類值.
CART樹中也是用的這種方式處理連續屬性

4.2決策樹對離散屬性的處理

決策樹與CART分類回歸樹對于屬性離散值的處理區別:與CART樹都是二叉樹不同,決策樹是可以有多分叉的,所以對屬性離散值不做處理.CART樹對屬性離散值的處理為雙化策略,生成多顆CART樹,選擇效果最好的一顆.

5 CART分類回歸樹

5.1CART分類回歸樹簡介

CART分類回歸樹是一種典型的二叉決策樹,可以做分類或者回歸.如果待預測結果是離散型數據,則CART生成分類決策樹;如果待預測結果是連續性數據,則CART生成回歸決策樹.數據對象的屬性特征為離散型或連續型,并不是區別分類樹與回歸樹的標準.例如表1中,數據對象xi的屬性A,B為離散型/連續型并不是區分分類樹與回歸樹的標準.作為分類決策樹時,待預測樣本落至某一葉子節點,則輸出該葉子節點中所有樣本所屬類別最多的那一類(即葉子節點中的樣本可能不是屬于同一類別,則多數為主);作為回歸決策樹時,待預測樣本落至某一葉子節點,則輸出該葉子節點中所有樣本的均值.

5.2CART分類樹—待預測結果為離散型數據

選擇具有最大Gain_Gini的屬性及其屬性值,作為最優分裂屬性以及最優分裂屬性值.Gain_Gini值越大,說明二分之后的子樣本集的”純凈度”越高,即說明選擇該屬性(值)作為分裂屬性(值)的效果越好.
此處要選的有兩個:最優分裂屬性以及其對應的屬性值
對于樣本集S,GINI計算如下:

其中,樣本集S中,Pk表示分類結果中第k個類別出現的頻率
對于含有N個樣本的樣本集S,根據屬性A的第i個屬性值,將數據集S劃分為兩部分,則劃分成兩部分之后,Gain_Gini計算如下:

其中,n1,n2分別為樣本S1,S2的樣本個數
對于屬性A,分別計算任意屬性值將數據集劃分成兩部分(是二叉樹,這也是為什么CART樹對離散屬性(非數值型 )采取雙化的原因,而對于連續屬性,采用遍歷所有已知連續值找到最好的劃分值)之后的Gain_Gini,選取其中的最小值,作為屬性A得到的最優二分方案:

所以分類決策樹對于選取最優分裂屬性值的方式是遍歷.(后面的回歸決策樹也是采用的這種方式)
對于樣本集S,計算所有屬性的最優二分方案,選取其中的最小值,作為樣本集S的最優二分方案.

所得到的屬性A及其第i屬性值,即為樣本集S的最優分裂屬性以及最優分裂屬性值

5.3CART回歸樹–待預測結果為連續型數據

區別于分類樹,回歸樹的預測結果為連續型數據.同時,區別于分類樹選取Gain_Gini為評價分裂屬性的指標,回歸樹選取Gain_σ為評價分裂屬性的指標.選擇具有最小Gain_σ的屬性及其屬性值,作為最優分裂屬性以及最優分裂屬性值.Gain_σ值越小,說明二分之后的子樣本集的”差異性”越小,說明選擇該屬性(值)作為分裂屬性(值)的效果越好.
針對含有連續型預測結果的樣本集S(理解成一個子節點),總方差計算如下:

其中,μ表示樣本集S(理解成一個子節點)中預測結果(預測結果就是當前子節點中所有樣本實際值的均值),yk表示第k個樣本預測結果
對于含有N個樣本的樣本集S,根據屬性A的第i個屬性值,將數據集S劃分為兩部分,則劃分成兩部分之后,Gain_σ計算如下:

對于屬性A,分別計算任意屬性值將數據集劃分成兩部分之后Gain_σ,選取其中的最小值,作為屬性A得到的最優二分方案:

對于數據集S,計算所有屬性的最優二分方案,選取其中的最小值,作為樣本集S的最優二分方案:

所得到的屬性A及其第i屬性值,即為樣本集S的最優分裂屬性以及最優分裂屬性值.感覺CART分類樹與回歸樹的區別就在分裂的評價指標,一個是Gain_Gini/Gain_σ

5.4CART回歸樹示例


圖1,圖2其實描述是都是屬性j的Gain_σ.區別在于圖2計算的是將數據集S用最優分裂屬性值s劃分為R1(j,s),R2(j,s)兩個子樣本集之后計算的Gain_σ.所以圖2是Gain_σ更為詳細的定義.c1,c2分別為R1,R2子樣本集中所有label的均值.

N1,N2為子樣本集中樣本的個數
具體示例:
訓練數據如下表,屬性x的取值范圍[0.5,10.5],y的取值范圍[5.0,10.0]學習這個回歸問題的最小二叉回歸樹

求解訓練數據的切分點s

容易求得在R1,R2內部使得平方損失誤差達到最小值的c1,c2為:

求訓練數據的切分點,根據所給數據,考慮如下切分點:
1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5
對各切分點,不難求出相應的R1,R2,c1,c2及
例如:當s=1.5時,R1={1},R2={2,3…10},c1=5.56,c2=7.50
現將s及m(s)的計算結果列表如下:
由上表知,當x=6.5的時候達到最小值,此時R1={1,2…6},R2={7,8,9,10},c1=6.24,c2=8.91,所以回歸樹T1(x)為:


所以用的是均值作為預測結果

5.5 CART樹與GBDT的區別

CART:樹的根節點分成2支后,在分別在這2支上做分支,以此遞推,最終生成一顆完整的決策樹;后續再剪枝等;
GBDT:獲得一顆二叉樹后,利用殘差,再在完整的數據集上生成一顆二叉樹,最終將多顆二叉樹加權累加組成一個最終的函數

下面將用上述數據集詳解GBDT的過程:
用f1(x)擬合訓練數據的殘差見下表,表中r2i=yi-f1(xi),i=1,2…10 ,r2=∑r2i,表示為第二顆決策樹要擬合的殘差.
第二步求T2(x)方法與T1(x)一樣,只是擬合的數據是上表的殘差,可以得到:


繼續求得:

可以用擬合訓練數據的平方損失等來作為結束條件.此時

假設此時已經滿足誤差要求,那么f(x)=f6(x)即為所求回歸樹

6 sklearn庫的應用

此處代碼都是用的jupyter lab
這玩意代碼上傳屬實麻煩.留意一下別人代碼是怎么排版的

總結

以上是生活随笔為你收集整理的决策树基本原理与sklearn应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。