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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2.1.决策树和随机森林

發布時間:2024/9/27 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.1.决策树和随机森林 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.1.決策樹和隨機森林

決策樹(Decision Tree)是在已知各種情況發生概率的基礎上,通過構成決策樹來求取凈現值的期望值大于等于零的概率,評價項目風險,判斷其可行性的決策分析方法,是直觀運用概率分析的一種圖解法。由于這種決策分支畫成圖形很像一棵樹的枝干,故稱決策樹。決策樹是一種基本的分類和回歸方法,學習通常包含三個步驟:特征選擇、決策樹的生成和決策樹的剪枝。在機器學習中,決策樹是一個預測模型,他代表的是對象屬性與對象值之間的一種映射關系。分類樹(決策樹)是一種十分常用的分類方法。數據挖掘中決策樹是一種經常要用到的技術,可以用于分析數據,同樣也可以用來做預測。

一個簡單的決策樹分類模型:紅色框出的是特征。

在機器學習中,隨機森林是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數而定。Leo Breiman和Adele Cutler發展出推論出隨機森林的算法。隨機森林在過去幾年一直是新興的機器學習技術。它是基于非線性的決策樹模型,通常能夠提供準確的結果。然而,隨機森林大多是黑盒子,經常難以解讀和充分理解。

2.1.1.預備知識

2.1.1.1.條件熵

在信息論中,條件熵描述了在已知第二個隨機變量X的前提下,隨機變量Y的信息熵還剩多少。基于X條件的Y的信息熵,用H(Y|X)表示。
如果H(Y|X=x)為變數Y在變數X取特定值x條件下的熵,那么H(Y|X)就是H(Y|X=x)在X取遍所有可能的x后取平均的結果。

我們可以借助上圖來幫助理解熵和條件熵:紅色的整個圓表示變量X的熵,藍色的整個圓表示變量Y的熵。
首先,熵可以理解為事件的不確定性,聯系到上面的X, Y就是H(X)表示的是未知的不確定的X(也即紅色的圓),而藍色的則表示未知不確定的Y,而條件熵表示的是在知道某一事件后對另一事件未知性的減少(前提是這兩個事件有交集)。放在上面則是知道確定了X后Y的不確定性還剩多少,也就是右側藍色的圓減去兩個圓交叉的部分后剩余的,這就是條件熵H(Y|X)。
現在理解了條件熵,那么兩事件X, Y中間的交集互信息該如何理解呢?既然條件熵是知曉了X后Y未知性還剩余的多少,那么互信息就可以理解為知曉了事件X后Y事件有多少也是可以確定的,也即X對Y造成的干擾部分,即為互信息I(X; Y)。
而聯合熵就比較好理解了,就是事件X未知性和事件Y的未知性之和減去他們的交集部分。

首先需要知道的是熵的公式:
對上式做簡單的說明:
(1)P(xi)表示事件xi的概率;
(2)-P(xi)logP(xi)表示事件xi的熵;

2.1.2.決策樹生成算法

決策樹分類從根節點開始,對實例的某一特征進行測試,根據測試結果將實例分配到其子節點。每一個子節點對應著該特征的一個取值。如此遞歸地對實例進行測試并分配,直至達到葉節點,最后將實例分配到葉節點的類中。

決策樹學習的算法通常是一個遞歸地選擇最優特征,并根據該特征對訓練數據進行劃分。如果利用一個特征進行分類的結果與隨機分類的結果沒有很大差別,則稱這個特征是沒有分類能力的。通常特征選擇的準則是信息增益或信息增益比,特征選擇的常用算法有ID3,C4.5,CART。

2.1.3.信息增益

信息增益表示得知特征A的信息而使得數據X的信息的不確定性的程度。
信息增益定義:特征A對訓練數據集D的信息增益g(D, A)定義為集合D的經驗熵H(D)與給定特征A的條件下D的經驗條件熵H(D|A)之差,即:

(信息增益,也叫作互信息)

根據信息增益選擇特征的方法是:對于給定數據集D,計算其每個特征的信息增益,并比較他們的大小,選擇信息增益最大的特征。使用信息增益選擇特征的算法稱為C3算法。

基本記號:

信息增益的計算方法:

2.1.3.1.信息增益比

信息增益值的大小是相對于訓練數據集而言的,并沒有絕對意義。在分類為題困難時,也就是說在訓練數據集的經驗熵大的時候,信息增益值會偏大。反之,信息增益值會偏小。因此,使用信息增益比可以對這一問題進行校正,這是另一種特征選擇算法,也即C4.5算法。

2.1.4.基尼系數

基尼指數是CART分類樹用來選擇最優特征的算法,同時決定了該特征的最優二值切分點。


對于給定的樣本集合D,其基尼指數為:


一個特征的信息增益/基尼系數越大,表明特征對樣本的熵減少的能力更強,這個特征使得數據由不確定性變成確定性的能力越強。

2.1.5.決策樹的剪枝

決策樹生成算法產生的決策樹對于訓練數據的分類往往很準確,但對于未知數據的分類卻沒有這么準確,即容易出現過擬合情況。解決的辦法便是考慮樹的復雜度,對已生成的樹進行剪枝簡化。

決策樹的剪枝往往通過極小化決策樹整體的損失函數來實現。


其中經驗熵為:

在損失函數式子中,等式右端第一項記作:

最后,損失函數表示為:





2.1.6.Bootstraping



2.2.課程資料

決策樹(decision tree)是一種基本的分類與回歸方法,本文主要討論用于分類的決策樹。決策樹模型呈樹形結構,在分類問題中,表示基于特征對實例進行分類的過程。它可以認為是if-then規則的集合,也可以認為是定義在特征空間與類空間上的條件概率分布,其主要優點是模型具有可讀性,分類速度快。決策樹學習通常包括三個步驟:特征選擇,決策樹的生成和決策樹的修剪。而隨機森林則是由多個決策樹所構成的一種分類器,更準確的說,隨機森林是由多個弱分類器組合形成的強分類器。

樹模型

  • 決策樹:從根節點開始一步步走到葉子節點(決策)。
  • 所有的數據最終都會落到葉子節點,既可以做分類也可以做回歸。

    樹的組成
  • 根節點:第一個選擇點
  • 非葉子節點與分支:中間過程。
  • 葉子節點:最終的決策結果

    決策樹的訓練與測試
  • 訓練階段:從給定的訓練集構造出來一棵樹(從根節點開始選擇特征,如何進行特征切分)
  • 測試階段:根據構造出來的樹模型從上到下去走一遍就好了。
  • 一旦構造好了決策樹,那么分類或者預測任務就很簡單了,只需要走一遍就可以了,那么難點就在于如何構造出來一顆樹,這就沒那么容易了,需要考慮的問題還有很多的!

如何切分特征(選擇節點)

  • 問題:根節點的選擇該用哪個特征呢?接下來呢?如何切分呢?
  • 想象一下:我們的目標應該是根節點就像是老大似的能更好的切分數據(分類的效果更好),根節點下面的節點自然就是二當家了。
  • 目標:通過一種衡量標準,來計算通過不同特征進行分支選擇后的分類情況,找出最好的那個當成根節點,以此類推。

衡量標準-熵

  • 熵:熵是表示隨機變量不確定性的度量
    (解釋:說白了就是物體內部的混亂程度,比如雜貨市場里什么都有那肯定混亂呀,專賣店里面只賣一個牌子的那就穩定多了)
  • 一個例子:
    A集合:[1,1,1,1,1,1,1,1,2,2]
    B集合:[1,2,3,4,5,6,7,8.9,1]

顯然A集合的熵值要低,因為A里面只有兩種類別,相對穩定一些,而B中類別太多了,熵值就會大很多(在分類任務中我們希望通過節點分支后數據類別的熵值大還是小呢?)

衡量標準-熵

  • 熵:不確定性越大,得到的熵值也就越大。
    當p=0或p=1時,H§=0,隨機變量完全沒有不確定性。
    當p=0.5時,H§=1,此時隨機變量的不確定性最大。

  • 如何決策一個節點的選擇呢?
    信息增益:表示特征X使得類Y的不確定性減少的程度。(分類后的專一性,希望分類后的結果是同類在一起)

    決策樹構造實例

  • 數據:14天打球情況

  • 特征:4中環境變換

  • 目標:構造決策樹


決策樹構造實例
劃分方式:4種
問題:誰當根節點呢?
依據:信息增益

決策樹構造實例

  • 在歷史數據中(14天)有9天打球,5天不打球,所以此時的熵應為:
  • 4個特征逐一分析,先從outlook特征開始:

    Outlook = sunny時,熵值為0.971
    Outlook = overcast時,熵值為0
    Outlook = rainy時,熵值為0.971

決策樹構造實例

  • 根據數據統計,outlook取值分別為sunny,overcast,rainy的概率分別為:
    5/14, 4/14, 5/14

  • 熵值計算:5/14 * 0.971 + 4/14 * 0 + 5/14 * 0.971 = 0.693
    (gain(temperature)=0.029 gain(humidity)=0.152 gain(windy)=0.048)

  • 信息增益:系統的熵值從原始的0.940下降到了0.693,增益為0.247

  • 同樣的方式可以計算出其他特征的信息增益,那么我們選擇最大的那個就可以啦,相當于是遍歷了一遍特征,找出來了大當家,然后再其余的中繼續通過信息增益找二當家!

決策樹算法

  • ID3: 信息增益(有什么問題呢?)
  • C4.5: 信息增益率(解決ID3問題,考慮自身熵)
  • CART: 使用GINI系數來當做衡量標準。
  • GINI系數:
    (和熵的衡量標準類似,計算方式不相同)

連續值怎么辦?
選取(連續值的)哪個分界點?

  • 貪婪算法!
    排序
    60 70 75 85 90 95 100 120 125 220
    若進行”二分”,則可能有9個分界點(上面數據中的9個空格部分)。
  • 實際上,這就是”離散化”過程

決策樹剪枝策略

  • 為什么要剪枝:決策樹過擬合風險很大,理論上可以完全分得開數據。
    (想象一下,如果樹足夠龐大,每個葉子節點不就一個數據了嘛)
  • 剪枝策略:預剪枝,后剪枝
  • 預剪枝:邊建立決策樹邊進行剪枝的操作(更實用)
  • 后剪枝:當建立完決策樹后來進行剪枝操作。

決策樹剪枝策略

  • 預剪枝:限制深度,葉子節點個數,葉子節點樣本數,信息增益量等。
  • 后剪枝:通過一定的衡量標準

    (葉子節點越多,損失越大)

Ensemble learning

  • 目標:讓機器學習效果更好,單個不行,群毆走起
  • Bagging: 訓練多個分類器取平均
  • Boosting: 從弱學習器開始加強,通過加權來進行訓練。
    (加入一棵樹,要比原來強)
  • Stacking: 聚合多個分類或回歸模型(可以分階段來做)

Bagging模型
?全稱:bootstrap aggregation(說白了就是并行訓練一堆分類器)
?最典型的代表就是隨機深林啦
?隨機:數據采樣隨機,特征選擇隨機
?森林:很多決策樹并行放在一起

隨機森林

  • 構造樹模型:
  • 由于二重隨機性,使得每個樹基本上都不會一樣,最終的結果也會不一樣。

Bagging模型

  • 樹模型:
  • 之所以要進行隨機,是要保證泛化能力,如果樹都一樣,那就沒意義了!

隨機森林優勢

  • 它能夠處理很高維度(feature很多)的數據,并且不用做特征選擇
  • 在訓練完后,它能夠給出哪些feature比較重要。
  • 容易做成并行化方法,速度比較快。
  • 可以進行可視化展示,便于分析。

    Bagging模型
  • KNN模型:
  • KNN就不太適合,因為很難去隨機讓泛化能力變強!

Bagging模型

  • 樹模型:
  • 理論上越多的樹效果會越好,但實際上基本超過一定數量就差不多上下浮動了。

Boosting算法

  • 典型代表:AdaBoost, Xgboost
  • Adaboost會根據前一次的分類效果調整數據權重。
  • 解釋:如果某一個數據在這次分錯了,那么在下一次我就會給它更大的權重。
  • 最終的結果:每個分類器根據自身的準確性來確定各自的權重,再合體。

Adaboost工作流程

  • 每一次切一刀。
  • 最終合在一起。
  • 弱分類器這就升級了。

    Stacking模型
  • 堆疊:很暴力,拿來一堆直接上(各種分類器都來了)
  • 可以堆疊各種各樣的分類器(KNN,SVM,RF等等)
  • 分階段:第一階段得出各自結果,第二階段再用前一階段結果訓練。
  • 為了刷結果,不擇手段。

Stacking模型

  • 堆疊在一起確實能使得準確率提升,但是速度是問題
    集成算法是競賽與論文神器,當我們更關注與結果時不妨來實時。

總結

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

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