Brett Lantz在R中使用C5.0算法實現(xiàn)決策樹

Brett Lantz在R中使用C5.0算法實現(xiàn)決策樹

image
  • 來源 | 愿碼(ChainDesk.CN)內容編輯
  • 愿碼Slogan | 連接每個程序員的故事
  • 網(wǎng)站 | http://chaindesk.cn
  • 愿碼愿景 | 打造全學科IT系統(tǒng)免費課程村刨,助力小白用戶告抄、初級工程師0成本免費系統(tǒng)學習、低成本進階嵌牺,幫助BAT一線資深工程師成長并利用自身優(yōu)勢創(chuàng)造睡后收入打洼。
  • 官方公眾號 | 愿碼 | 愿碼服務號 | 區(qū)塊鏈部落
  • 免費加入愿碼全思維工程師社群 | 任一公眾號回復“愿碼”兩個字獲取入群二維碼

本文閱讀時長:9min

決策樹學習者是強大的分類器,它利用樹結構來模擬特征和潛在結果之間的關系逆粹。這種結構之所以得名募疮,是因為它反映了文字樹在寬闊的樹干上開始的方式,并且當它向上延伸時分裂成更窄的樹枝僻弹。以同樣的方式阿浓,決策樹分類器使用分支決策的結構,其將示例引導到最終預測的類值蹋绽。

決策樹有很多實現(xiàn)芭毙,但最著名的是C5.0算法。該算法由計算機科學家J. Ross Quinlan開發(fā)卸耘,作為其先前算法C4.5的改進版本(C4.5本身是對其迭代二分法3(ID3)算法的改進)退敦。雖然Quinlan向商業(yè)客戶銷售C5.0,但該算法的單線程版本的源代碼已公開蚣抗,因此已被納入諸如R等程序中侈百。

C5.0決策樹算法


C5.0算法已經(jīng)成為生成決策樹的行業(yè)標準,因為它可以直接開箱即用地解決大多數(shù)類型的問題翰铡。與其他高級機器學習模型相比 设哗,C5.0構建的決策樹通常表現(xiàn)得差不多但更容易理解和部署。此外两蟀,如下表所示网梢,算法的弱點相對較小,可以在很大程度上避免赂毯。

優(yōu)勢

  • 一種通用分類器战虏,可以很好地解決許多類型的問題。
  • 高度自動化的學習過程党涕,可以處理數(shù)字或名義特征烦感,以及缺少數(shù)據(jù)。
  • 不包括不重要的功能膛堤。
  • 可以在小型和大型數(shù)據(jù)集上使用手趣。
  • 在沒有數(shù)學背景的情況下可以解釋的模型中的結果(對于相對較小的樹)。
  • 比其他復雜模型更有效。

弱點

  • 決策樹模型通常偏向于具有大量級別的特征的分裂绿渣。
  • 很容易過度裝配或不適合模型朝群。
  • 由于依賴于軸并行分割,可能無法對某些關系建模中符。
  • 訓練數(shù)據(jù)的微小變化可能導致決策邏輯發(fā)生很大變化姜胖。
  • 大樹很難解釋,他們做出的決定似乎違反直覺淀散。

為了簡單起見右莱,我們早期的決策樹示例忽略了機器如何采用分而治之策略所涉及的數(shù)學問題。讓我們更詳細地探討這一點档插,以研究這種啟發(fā)式方法在實踐中如何運作慢蜓。

選擇最佳分割


決策樹將面臨的第一個挑戰(zhàn)是確定要拆分的特征。在前面的示例中郭膛,我們尋找一種分割數(shù)據(jù)的方法胀瞪,使得生成的分區(qū)包含主要包含單個類的示例。示例子集僅包含單個類的程度稱為純度饲鄙,而僅由單個類組成的任何子集稱為凄诞。

可以使用各種純度測量來識別最佳決策樹分裂候選者。C5.0使用忍级,這是一種借鑒信息理論的概念帆谍,用于量化一組類值中的隨機性或無序性。具有高熵的集合非常多樣化轴咱,并且提供關于可能也屬于集合的其他項目的很少信息汛蝙,因為沒有明顯的共性。決策樹希望找到減少熵的分裂朴肺,最終增加組內的同質性窖剑。

通常,熵以比特來度量戈稿。如果只有兩個可能的類西土,則熵值的范圍可以從0到1.對于n個類,熵范圍從0到log 2 (n)鞍盗。在每種情況下需了,最小值表示樣本是完全同質的,而最大值表示數(shù)據(jù)盡可能多樣化般甲,并且沒有組具有甚至小的多個肋乍。
在數(shù)學概念中,熵被指定為:

image

在該公式中敷存,對于給定的數(shù)據(jù)段(S)墓造,術語c指的是類級別的數(shù)量,并且p i 指的是落入級別級別i的值的比例。例如觅闽,假設我們有兩個類的數(shù)據(jù)分區(qū):紅色(60%)和白色(40%)帝雇。我們可以將熵計算為:

> -0.60 * log2(0.60) - 0.40 * log2(0.40)

[1] 0.9709506

我們可以想象所有可能的兩級安排的熵。如果我們知道一個類中的例子的比例是x谱煤,那么另一個類中的比例是(1-x)摊求。使用curve()函數(shù)禽拔,我們可以繪制x的所有可能值的熵:

> curve(-x * log2(x) - (1 - x) * log2(1 - x),

    col = "red", xlab = "x", ylab = "Entropy", lwd = 4)

如下圖:

總熵作為一個類別的比例在兩級結果中有所不同

如在x = 0.50處的熵峰值所示刘离,50-50分裂導致最大熵。隨著一個類越來越主導另一個類睹栖,熵減少到零硫惕。

為了使用熵來確定要分割的最佳特征,該算法計算由于對每個可能特征的分割而導致的同質性變化野来,該度量被稱為信息增益恼除。特征F的信息增益被計算為分割(S 1)之前的片段中的熵與分割(S 2)產生的分區(qū)之間的差異:

image

一個復雜的問題是,在拆分之后曼氛,數(shù)據(jù)被分成多個分區(qū)豁辉。因此,計算熵(S 2 )的函數(shù)需要考慮所有分區(qū)的總熵舀患。它通過根據(jù)落入該分區(qū)的所有記錄的比例對每個分區(qū)的熵進行加權來實現(xiàn)此目的徽级。這可以在公式中說明如下:

image

簡單來說,由分割產生的總熵是n個分區(qū)中的每一個的熵的總和聊浅,其由落入分區(qū)(w i)中的示例的比例加權餐抢。

信息增益越高,在對該特征進行拆分后創(chuàng)建同類組的功能就越好低匙。如果信息增益為零旷痕,則不會減少用于分割此特征的熵。另一方面顽冶,最大信息增益等于分割之前的熵欺抗。這意味著拆分后的熵為零,這意味著拆分產生完全同質的組强重。

以前的公式假設名義特征佩迟,但決策樹也使用信息增益來分割數(shù)字特征。為此竿屹,通常的做法是測試將值劃分為大于或小于閾值的組的各種拆分报强。這會將數(shù)字特征縮減為兩級分類功能,以便像往常一樣計算信息增益拱燃。為分割選擇產生最大信息增益的數(shù)字切割點秉溉。

注意:盡管它被C5.0使用,但信息增益并不是可用于構建決策樹的唯一分裂標準。其他常用標準是基尼指數(shù)召嘶,卡方統(tǒng)計量和增益比父晶。

修剪決策樹


如前所述,決策樹可以繼續(xù)無限增長弄跌,選擇拆分功能并劃分為更小和更小的分區(qū)甲喝,直到每個示例完全分類或算法耗盡要分離的功能。但是铛只,如果樹長得過大埠胖,那么它做出的許多決定將過于具體,模型將過度擬合到訓練數(shù)據(jù)中淳玩。修剪決策樹的過程涉及減小其大小直撤,以便更好地概括為看不見的數(shù)據(jù)。

該問題的一個解決方案是在樹達到一定數(shù)量的決策時或當決策節(jié)點僅包含少量示例時阻止樹增長蜕着。這稱為提前停止預先確定決策樹谋竖。由于樹避免做不必要的工作,這是一個吸引人的策略承匣。然而蓖乘,這種方法的一個缺點是,無法知道樹是否會錯過細微但重要的模式韧骗,如果它變得更大嘉抒,它將會學到它。

另一種稱為后修剪的方法涉及種植有意過大的樹并修剪葉節(jié)點以將樹的大小減小到更合適的水平宽闲。這通常是比預執(zhí)行更有效的方法众眨,因為在不首先增加決策樹的情況下確定決策樹的最佳深度是相當困難的。稍后修剪樹允許算法確定發(fā)現(xiàn)了所有重要的數(shù)據(jù)結構容诬。

C5.0算法的一個好處是娩梨,它是關于修剪的看法 - 它使用相當合理的默認值自動處理許多決策。它的總體策略是對樹進行后修剪览徒。它首先會生成一個超級訓練數(shù)據(jù)的大樹狈定。之后,刪除對分類錯誤影響很小的節(jié)點和分支习蓬。在某些情況下纽什,整個分支在樹上向上移動或由更簡單的決策取代。這些移植分支的過程分別稱為子樹提升子樹替換躲叼。

在過度擬合和欠擬合之間取得適當?shù)钠胶馐且患囆g芦缰,但如果模型準確性至關重要,那么可能需要花一些時間使用各種修剪選項來查看它是否能提高測試數(shù)據(jù)集的性能枫慷。

總而言之让蕾,決策樹由于其高準確性和用簡單語言制定統(tǒng)計模型的能力而被廣泛使用浪规。在這里,我們研究了一種非常流行且易于配置的決策樹算法C5.0探孝。與其他決策樹實現(xiàn)相比笋婿,C5.0算法的主要優(yōu)勢在于可以非常輕松地調整訓練選項。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末顿颅,一起剝皮案震驚了整個濱河市缸濒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粱腻,老刑警劉巖庇配,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異栖疑,居然都是意外死亡讨永,警方通過查閱死者的電腦和手機滔驶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門遇革,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人揭糕,你說我怎么就攤上這事萝快。” “怎么了著角?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵揪漩,是天一觀的道長。 經(jīng)常有香客問我吏口,道長奄容,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任产徊,我火速辦了婚禮昂勒,結果婚禮上,老公的妹妹穿的比我還像新娘舟铜。我一直安慰自己戈盈,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布谆刨。 她就那樣靜靜地躺著塘娶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痊夭。 梳的紋絲不亂的頭發(fā)上刁岸,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音她我,去河邊找鬼虹曙。 笑死膝宁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的根吁。 我是一名探鬼主播员淫,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼击敌!你這毒婦竟也來了介返?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沃斤,失蹤者是張志新(化名)和其女友劉穎圣蝎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衡瓶,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡徘公,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哮针。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片关面。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖十厢,靈堂內的尸體忽然破棺而出等太,到底是詐尸還是另有隱情,我是刑警寧澤蛮放,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布缩抡,位于F島的核電站,受9級特大地震影響包颁,放射性物質發(fā)生泄漏瞻想。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一娩嚼、第九天 我趴在偏房一處隱蔽的房頂上張望蘑险。 院中可真熱鬧,春花似錦待锈、人聲如沸漠其。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽和屎。三九已至,卻和暖如春春瞬,著一層夾襖步出監(jiān)牢的瞬間柴信,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工宽气, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留随常,地道東北人潜沦。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像绪氛,于是被迫代替她去往敵國和親唆鸡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容