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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

决策树之 C4.5 算法

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

前言

由于 C4.5 算法是建立在 ID3 算法基礎之上的,所以在講解 C4.5 的時候,會有很多與 ID3 重合的內容,這里就不過多冗余地說明了。本文旨在闡明 ID3 存在的問題,以及 C4.5 的改進方案。如果你對于 ID3 中的相關數學公式及概念還有些迷惑,歡迎移步至《決策樹之 ID3 算法》。


版權說明

著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
本文作者:Q-WHai
發表日期: 2016年7月6日
本文鏈接:https://qwhai.blog.csdn.net/article/details/51840361
來源:CSDN
更多內容:分類 >> 數據挖掘


C4.5

決策樹構建分析

我們說 C4.5 算法是對 ID3 算法的改進,既然是改進,那么必然是解決了一些問題,而且這些問題還是比較突出的。

  • 解決了信息增益(IG)的缺點
  • 解決了連續變量問題
  • IG 的缺點及解決方案

    上一篇說 ID3 算法時,了解到 IG 是描述某一個特征屬性的存在與否,對總體信息熵的變化量影響。通過 IG 的公式(如果你不記得 IG 的公式,歡迎移步至《決策樹之 ID3 算法》),可以推測出,當某一個時刻總的信息熵固定時,只要條件熵(就是某一特征屬性的信息熵) Entropy(S|T) 越小,那么 IG 的值就越大。通過條件熵的計算公式,又可以推測出,如果某一個特性屬性的取值越多,那么這個條件熵的值就會越小。從而,采用 IG 最大法選擇構建決策,在某一程度上可以理解成選擇多取值的特征屬性。對于這個問題,C4.5 的做法是引入分裂信息,然后計算信息增益率(IGR)。
    IGR=IGIV{IGR = \frac{IG}{IV}} IGR=IVIG? (其中,IG 為信息增益,IV 為分裂信息)
    IV=?∑ip(vi)log2p(vi){IV = -\sum_i{p(v_i)}log_2{p(v_i)}} IV=?i?p(vi?)log2?p(vi?) (其中,vi{v_i}vi? 為某一特征屬性下的第 i 個分支屬性)

    連續變量問題

    在 ID3 中,我們不能解決連續變量問題,比如把之前的溫度屬性的值修改成一些整數類型的變量時,ID3 的做法就是對每一個不同值的變量進行分開計算,這樣就出現了一個問題,ID3 構建的決策樹中產生了過多的分支。這個時候,你可能會想說,如果把這些值修改成某一個域值,讓小于等于這個域值的數據放在決策樹的左邊,大于這個域值的數據放在決策樹的右邊。C4.5 中就是這么干的,只是 C4.5 在尋找這個域值時,更加合理。

    訓練數據集

    假設我們如下訓練數據集

    DayOutLookTemperatureHumidityWindPlayGolf
    1Sunny8585FalseNo
    2Sunny8090TrueNo
    3Overcast8378FalseYes
    4Rainy7096FalseYes
    5Rainy6880FalseYes
    6Rainy6570TrueNo
    7Overcast6465TrueYes
    8Sunny7295FalseNo
    9Sunny6970FalseYes
    10Rainy7580FalseYes
    11Sunny7570TrueYes
    12Overcast7290TrueYes
    13Overcast8175FalseYes
    14Rainy7180TrueNo

    決策樹構建過程

    根據 C4.5 算法的原理及步驟繪制出如下過程圖:

    計算步驟

    雖然上圖中需要計算的量有很多,但是,有很量的計算在《決策樹之 ID3 算法》一文中,講解得也很詳細了,所以這里我不再說明。需要說明的只有兩個地方:IV 和 連續變量的域值計算。

    IV(T) & IGR(T)

    從上面的分裂信息的計算公式中,可以看到分裂信息的計算是針對某一個特征屬性內部而言的。比如現在針對特征屬性 OutLook 這一特征屬性而言有如下分裂信息的分布情況:

    SunnyOvercastRainy
    結果總數545

    那么 OutLook 的分裂信息 IV(OutLook) 就可以這樣來計算:
    $ {IV(OutLook) = -\frac{5}{14}log_2{\frac{5}{14}} - \frac{4}{14}log_2{\frac{4}{14}} - \frac{5}{14}log_2{\frac{5}{14}} = 1.577406}$
    于是,再有
    $ {IGR(OutLook) = \frac{IG}{IV} = \frac{0.24675}{1.577406} = 0.156428} $

    連續變量的域值

    上面說的都是針對離散變量問題的解決思路及過程,如果某一個特征屬性的變量值不能或是不合適使用離散變量來處理,又該怎么做呢?比如在之前 ID3 算法的文章中使用的溫度屬性,這個屬性的變量值使用連續變量應該更合適一些,最基本的邏輯就是溫度達到多少算是 Hot,達到多少算是 Cool 呢?這個不好衡量,可是如果使用連續變量就要合理得多。
    可是 ID3 算法在對連續變量的處理上,表現很糟糕。在 C4.5 中是通過如下方法解決的。
    假設我們選擇了溫度屬性,則被提取的關鍵數據為:[[85, No], [80, No], [83, Yes], [70, Yes], [68, Yes], [65, No], [64, Yes], [72, No], [69, Yes], [75, Yes], [75, Yes], [72, Yes], [81, Yes], [71, No]]
    現在我們對這批數據進行從小到大進行排序,排序后數據集就變成:
    [[64, Yes], [65, No], [68, Yes], [69, Yes], [70, Yes], [71, No], [72, No], [72, Yes], [75, Yes], [75, Yes], [80, No], [81, Yes], [83, Yes], [85, No]]
    繪制成如下圖例:

    當我們拿到一個已經排好序的(溫度,結果)的列表之后,分別計算被某個單元分隔的左邊和右邊的分裂信息,計算結果如下:
    比如現在計算 index = 4 時的分裂信息。則:
    $ {IV(v_4) = IV([4, 1], [5, 4]) = \frac{5}{14}{IV([4, 1])} + \frac{9}{14}{IV([5, 4])}} $
    $ {IV(v_4) = \frac{5}{14}{(-\frac{4}{5}log_2\frac{4}{5} - \frac{1}{5}log_2\frac{1}{5})} + \frac{9}{14}{(-\frac{5}{9}log_2\frac{5}{9} - \frac{4}{9}log_2\frac{4}{9})} = 0.89} $


    這時就可以選取最大分裂信息的位置當成此時的域值,也就是 68。
    然后,此時溫度的分裂就是按照小于等于 68 和大于 68 進行劃分。

    決策樹構建結果

    通過上面的訓練數據集及 C4.5 構建算法,我們構建了一棵如下的 C4.5 決策樹。


    Ref

    • http://blog.csdn.net/acdreamers/article/details/44664571
    • 《數據挖掘十大算法》

    GitHub download

    此處為本文的算法實現,采用的編程語言為 Java。算法也是在不斷重構及優化,如果你對此感興趣,歡迎 star.

    • https://github.com/MachineLeanring/MachineLearningC4.5

    征集

    如果你也需要使用ProcessOn這款在線繪圖工具,可以使用如下邀請鏈接進行注冊:
    https://www.processon.com/i/56205c2ee4b0f6ed10838a6d

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

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

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