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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

决策树算法

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 决策树算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 ? 決策樹的一般表示

  • 數據為m個樣本,d個屬性(特征)
  • 遞歸構建
  • 葉子結點表示 結果分類
  • 根結點 表示全部樣本
  • 從樣本空間D中選擇一個最優屬性a*,然后依照屬性a*將樣本空間D劃分為不同樣本子集D1,D2 等
  • 然后對子集Di找到 一個最優屬性,進行下一次劃分
  • 直到子集為空,屬性為空,或者子集中樣本取值相同(分類相同)
  • 代碼line2,當子集為中樣本取值相同,如取值為類別C ?遞歸結束,此取值為樣本分類C
  • 代碼line5,當屬性為空,樣本無法進一步挑選最優屬性,以分類最多的為最終分類
  • 代碼line5,當樣本在屬性集中取值相同,即取值均勻分布,無法找到最優屬性,以分類最多的為最終分類
  • 代碼line12,當樣本子集為空,取父結點分類最多的類別,將父結點的樣本分布當做此結點的先驗分布
  • 二 信息增益法

    ?

    ID3決策樹算法使用信息增益作為準則劃分屬性

    ?

    ?

    ?

  • Ent(D)當前樣本集信息熵
  • Gain(D,a)當前樣本集在屬性a下的信息增益
  • |Dv|為樣本集D中屬性a對應第v個取值,所占的樣本個數,|D|為樣本集總個數
  • 默認認為屬性a將整個樣本D劃分,即無缺省值
  •  算法的過程為:

        1)初始化信息增益的閾值??

        2)判斷樣本是否為同一類輸出DiDi,如果是則返回單節點樹T。標記類別為DiDi

        3) 判斷特征是否為空,如果是則返回單節點樹T,標記類別為樣本中輸出類別D實例數最多的類別。

        4)計算A中的各個特征(一共n個)對輸出D的信息增益,選擇信息增益最大的特征AgAg

        5) 如果AgAg的信息增益小于閾值??,則返回單節點樹T,標記類別為樣本中輸出類別D實例數最多的類別。

        6)否則,按特征AgAg的不同取值AgiAgi將對應的樣本輸出D分成不同的類別DiDi。每個類別產生一個子節點。對應特征值為AgiAgi。返回增加了節點的數T。

        7)對于所有的子節點,令D=Di,A=A?{Ag}D=Di,A=A?{Ag}遞歸調用2-6步,得到子樹TiTi并返回。

    ID3算法值得改進的地方。  

        a)ID3沒有考慮連續特征,比如長度,密度都是連續值,無法在ID3運用。這大大限制了ID3的用途。

        b)ID3采用信息增益大的特征優先建立決策樹的節點。很快就被人發現,在相同條件下,取值比較多的特征比取值少的特征信息增益大。比如一個變量有2個值,各為1/2,另一個變量為3個值,各為1/3,其實他們都是完全不確定的變量,但是取3個值的比取2個值的信息增益大。如果校正這個問題呢?

        c) ID3算法對于缺失值的情況沒有做考慮

        d) 沒有考慮過擬合的問題

    ?

    三 增益率

    ?

    信息增益對屬性值較多的屬性具有偏好,例如增加一個id編號作為屬性,1000個樣本對應1000個id,每個ip只有唯一的一個樣本。明顯無法達到泛化目的,且毫無意義。

    ?

    C4.5決策樹算法:先從候選屬性中找出信息增益高于平均水平的屬性,然后選擇增益率最高的

    對ID3的優化:

    對于連續特征 ? C4.5的思路是將連續的特征離散化。比如m個樣本的連續特征A有m個,從小到大排列為a1,a2,...,ama1,a2,...,am,則C4.5取相鄰兩樣本值的平均數,一共取得m-1個劃分點,其中第i個劃分點Ti表示Ti表示為:Ti=ai+ai+12Ti=ai+ai+12。對于這m-1個點,分別計算以該點作為二元分類點時的信息增益。選擇信息增益最大的點作為該連續特征的二元離散分類點。比如取到的增益最大的點為atat,則小于atat的值為類別1,大于atat的值為類別2,這樣我們就做到了連續特征的離散化。要注意的是,與離散屬性不同的是,如果當前節點為連續屬性,則該屬性后面還可以參與子節點的產生選擇過程。

    缺失值問題 ? 主要需要解決的是兩個問題,一是在樣本某些特征缺失的情況下選擇劃分的屬性,二是選定了劃分屬性,對于在該屬性上缺失特征的樣本的處理?

    對于第一個子問題,對于某一個有缺失特征值的特征A。C4.5的思路是將數據分成兩部分,對每個樣本設置一個權重(初始可以都為1),然后劃分數據,一部分是有特征值A的數據D1,另一部分是沒有特征A的數據D2. 然后對于沒有缺失特征A的數據集D1來和對應的A特征的各個特征值一起計算加權重后的信息增益比,最后乘上一個系數,這個系數是無特征A缺失的樣本加權后所占加權總樣本的比例。

    對于第二個子問題,可以將缺失特征的樣本同時劃分入所有的子節點,不過將該樣本的權重按各個子節點樣本的數量比例來分配。比如缺失特征A的樣本a之前權重為1,特征A有3個特征值A1,A2,A3。 3個特征值對應的無缺失A特征的樣本個數為2,3,4.則a同時劃分入A1,A2,A3。對應權重調節為2/9,3/9, 4/9。

    缺點:

    模型是用較為復雜的熵來度量

    使用了相對較為復雜的多叉樹

    只能處理分類不能處理回歸等

  • 由于決策樹算法非常容易過擬合,因此對于生成的決策樹必須要進行剪枝。剪枝的算法有非常多,C4.5的剪枝方法有優化的空間。思路主要是兩種,一種是預剪枝,即在生成決策樹的時候就決定是否剪枝。另一個是后剪枝,即先生成決策樹,再通過交叉驗證來剪枝。
  • C4.5生成的是多叉樹,即一個父節點可以有多個節點。很多時候,在計算機中二叉樹模型會比多叉樹運算效率高。如果采用二叉樹,可以提高效率。
  • C4.5只能用于分類,如果能將決策樹用于回歸的話可以擴大它的使用范圍。
  • C4.5由于使用了熵模型,里面有大量的耗時的對數運算,如果是連續值還有大量的排序運算。如果能夠加以模型簡化可以減少運算強度但又不犧牲太多準確性的話,那就更好了。
  • ?

    ?

    四 基尼指數

    ?

    CART決策樹算法使用此法,只用構建二叉樹,計算只有2次項

    CART分類樹算法對于連續特征和離散特征處理的改進

    對于CART分類樹連續值的處理問題,其思想和C4.5是相同的,都是將連續的特征離散化。唯一的區別在于在選擇劃分點時的度量方式不同,C4.5使用的是信息增益比,則CART分類樹使用的是基尼系數。

  • 將連續特征 以某個基點劃分重兩部分,構建2叉樹
  • 此特征在一次劃分后可繼續參與劃分
  • 離散特征同樣
  •     具體的思路如下,比如m個樣本的連續特征A有m個,從小到大排列為a1,a2,...,ama1,a2,...,am,則CART算法取相鄰兩樣本值的平均數,一共取得m-1個劃分點,其中第i個劃分點Ti表示Ti表示為:Ti=ai+ai+12Ti=ai+ai+12。對于這m-1個點,分別計算以該點作為二元分類點時的基尼系數。選擇基尼系數最小的點作為該連續特征的二元離散分類點。比如取到的基尼系數最小的點為atat,則小于atat的值為類別1,大于atat的值為類別2,這樣我們就做到了連續特征的離散化。要注意的是,與ID3或者C4.5處理離散屬性不同的是,如果當前節點為連續屬性,則該屬性后面還可以參與子節點的產生選擇過程。

        對于CART分類樹離散值的處理問題,采用的思路是不停的二分離散特征。

        回憶下ID3或者C4.5,如果某個特征A被選取建立決策樹節點,如果它有A1,A2,A3三種類別,我們會在決策樹上一下建立一個三叉的節點。這樣導致決策樹是多叉樹。但是CART分類樹使用的方法不同,他采用的是不停的二分,還是這個例子,CART分類樹會考慮把A分成{A1}和{A2,A3}{A1}和{A2,A3},?{A2}和{A1,A3}{A2}和{A1,A3},?{A3}和{A1,A2}{A3}和{A1,A2}三種情況,找到基尼系數最小的組合,比如{A2}和{A1,A3}{A2}和{A1,A3},然后建立二叉樹節點,一個節點是A2對應的樣本,另一個節點是{A1,A3}對應的節點。同時,由于這次沒有把特征A的取值完全分開,后面我們還有機會在子節點繼續選擇到特征A來劃分A1和A3。這和ID3或者C4.5不同,在ID3或者C4.5的一棵子樹中,離散特征只會參與一次節點的建立。

    算法一般步驟:

    算法輸入是訓練集D,基尼系數的閾值,樣本個數閾值。

        輸出是決策樹T。

        我們的算法從根節點開始,用訓練集遞歸的建立CART樹。

        1) 對于當前節點的數據集為D,如果樣本個數小于閾值或者沒有特征,則返回決策子樹,當前節點停止遞歸。

        2) 計算樣本集D的基尼系數,如果基尼系數小于閾值,則返回決策樹子樹,當前節點停止遞歸。

        3) 計算當前節點現有的各個特征的各個特征值對數據集D的基尼系數,對于離散值和連續值的處理方法和基尼系數的計算見第二節。缺失值的處理方法和C4.5算法里描述的相同。

        4) 在計算出來的各個特征的各個特征值對數據集D的基尼系數中,選擇基尼系數最小的特征A和對應的特征值a。根據這個最優特征和最優特征值,把數據集劃分成兩部分D1和D2,同時建立當前節點的左右節點,做節點的數據集D為D1,右節點的數據集D為D2.

        5) 對左右的子節點遞歸的調用1-4步,生成決策樹。

    ?

    五 優缺點:

    首先我們看看決策樹算法的優點:

        1)簡單直觀,生成的決策樹很直觀。

        2)基本不需要預處理,不需要提前歸一化,處理缺失值。

        3)使用決策樹預測的代價是O(log2m)O(log2m)。 m為樣本數。

        4)既可以處理離散值也可以處理連續值。很多算法只是專注于離散值或者連續值。

        5)可以處理多維度輸出的分類問題。

        6)相比于神經網絡之類的黑盒分類模型,決策樹在邏輯上可以得到很好的解釋

        7)可以交叉驗證的剪枝來選擇模型,從而提高泛化能力。

        8) 對于異常點的容錯能力好,健壯性高。

        我們再看看決策樹算法的缺點:

        1)決策樹算法非常容易過擬合,導致泛化能力不強。可以通過設置節點最少樣本數量和限制決策樹深度來改進。

        2)決策樹會因為樣本發生一點點的改動,就會導致樹結構的劇烈改變。這個可以通過集成學習之類的方法解決。

        3)尋找最優的決策樹是一個NP難的問題,我們一般是通過啟發式方法,容易陷入局部最優。可以通過集成學習之類的方法來改善。

        4)有些比較復雜的關系,決策樹很難學習,比如異或。這個就沒有辦法了,一般這種關系可以換神經網絡分類方法來解決。

        5)如果某些特征的樣本比例過大,生成決策樹容易偏向于這些特征。這個可以通過調節樣本權重來改善。

    ?

    參考:

    1 《機器學習》? 周志華

    2??https://www.cnblogs.com/pinard/p/6053344.html

    3??http://www.cnblogs.com/pinard/p/6050306.html

    總結

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

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