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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

决策树之 C4.5 算法

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

前言

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


版權(quán)說明

著作權(quán)歸作者所有。
商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
本文作者:Q-WHai
發(fā)表日期: 2016年7月6日
本文鏈接:https://qwhai.blog.csdn.net/article/details/51840361
來源:CSDN
更多內(nèi)容:分類 >> 數(shù)據(jù)挖掘


C4.5

決策樹構(gòu)建分析

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

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

    上一篇說 ID3 算法時(shí),了解到 IG 是描述某一個(gè)特征屬性的存在與否,對(duì)總體信息熵的變化量影響。通過 IG 的公式(如果你不記得 IG 的公式,歡迎移步至《決策樹之 ID3 算法》),可以推測出,當(dāng)某一個(gè)時(shí)刻總的信息熵固定時(shí),只要條件熵(就是某一特征屬性的信息熵) Entropy(S|T) 越小,那么 IG 的值就越大。通過條件熵的計(jì)算公式,又可以推測出,如果某一個(gè)特性屬性的取值越多,那么這個(gè)條件熵的值就會(huì)越小。從而,采用 IG 最大法選擇構(gòu)建決策,在某一程度上可以理解成選擇多取值的特征屬性。對(duì)于這個(gè)問題,C4.5 的做法是引入分裂信息,然后計(jì)算信息增益率(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 個(gè)分支屬性)

    連續(xù)變量問題

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

    訓(xùn)練數(shù)據(jù)集

    假設(shè)我們?nèi)缦掠?xùn)練數(shù)據(jù)集

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

    決策樹構(gòu)建過程

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

    計(jì)算步驟

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

    IV(T) & IGR(T)

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

    SunnyOvercastRainy
    結(jié)果總數(shù)545

    那么 OutLook 的分裂信息 IV(OutLook) 就可以這樣來計(jì)算:
    $ {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} $

    連續(xù)變量的域值

    上面說的都是針對(duì)離散變量問題的解決思路及過程,如果某一個(gè)特征屬性的變量值不能或是不合適使用離散變量來處理,又該怎么做呢?比如在之前 ID3 算法的文章中使用的溫度屬性,這個(gè)屬性的變量值使用連續(xù)變量應(yīng)該更合適一些,最基本的邏輯就是溫度達(dá)到多少算是 Hot,達(dá)到多少算是 Cool 呢?這個(gè)不好衡量,可是如果使用連續(xù)變量就要合理得多。
    可是 ID3 算法在對(duì)連續(xù)變量的處理上,表現(xiàn)很糟糕。在 C4.5 中是通過如下方法解決的。
    假設(shè)我們選擇了溫度屬性,則被提取的關(guān)鍵數(shù)據(jù)為:[[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]]
    現(xiàn)在我們對(duì)這批數(shù)據(jù)進(jìn)行從小到大進(jìn)行排序,排序后數(shù)據(jù)集就變成:
    [[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]]
    繪制成如下圖例:

    當(dāng)我們拿到一個(gè)已經(jīng)排好序的(溫度,結(jié)果)的列表之后,分別計(jì)算被某個(gè)單元分隔的左邊和右邊的分裂信息,計(jì)算結(jié)果如下:
    比如現(xiàn)在計(jì)算 index = 4 時(shí)的分裂信息。則:
    $ {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} $


    這時(shí)就可以選取最大分裂信息的位置當(dāng)成此時(shí)的域值,也就是 68。
    然后,此時(shí)溫度的分裂就是按照小于等于 68 和大于 68 進(jìn)行劃分。

    決策樹構(gòu)建結(jié)果

    通過上面的訓(xùn)練數(shù)據(jù)集及 C4.5 構(gòu)建算法,我們構(gòu)建了一棵如下的 C4.5 決策樹。


    Ref

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

    GitHub download

    此處為本文的算法實(shí)現(xiàn),采用的編程語言為 Java。算法也是在不斷重構(gòu)及優(yōu)化,如果你對(duì)此感興趣,歡迎 star.

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

    征集

    如果你也需要使用ProcessOn這款在線繪圖工具,可以使用如下邀請(qǐng)鏈接進(jìn)行注冊(cè):
    https://www.processon.com/i/56205c2ee4b0f6ed10838a6d

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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。