決策樹與隨機森林(4)—— 決策樹C5.0算法

2021-02-13 醫學僧的科研日記
Question 1: C5.0是如何對C4.5進行改進的?C5.0算法通過加入自適應增強(Adaboost)算法對C4.5進行改進。這是許多決策樹構建的一個過程,然後這些決策樹通過投票表決的方法為每個案例選擇最優的分類。
Question 2: 什麼叫做 Adaboost ?簡單來說,對於一個數據集,我們通過某種算法建立了第一個分類器,若第一個分類器對樣本 x1, x2 的分類效果好,對 x3 的分類效果差,那麼第二個分類器通過一個神奇的公式,把對 x3 的權重增加,x1, x2的權重降低。為什麼呢?因為我們認為第一分類器已經能很好的分類 x1 和 x2, 對 x3 卻不行,所以我們不太需要讓第二分類器考慮 x1, x2了,因為咱有第一份類器去處理他們了,所以第二個分類器就是要互補第一分類器,讓它多多考慮第一分類器無法準確分類的數據。然後整很多這樣的分類器,每個分類器一般來說能分類一些數據不能分類一些數據,但是通過他們的基友來幫他們分類他們所不行的數據,最後大家集成在一起,形成一個超厲害的分類器。最後對每個分類器給一個權重,看看他們在大分類器的重要性,大體公式是H(x)=sign(sum(權重*分類器t)), t=1,2...,N  意思就是把所有分類器的輸出加起來,取正負號,得到最後的結果。博採眾長是 Adaboost 算法的核心。這就相當於老師布置了3道題的作業,A同學會做第一道題,B同學會做第二道題,C同學會做第三道題,我們讓ABC三位同學一塊寫作業,則他們結合起來很容易全做對。但是,Adaboost有一個前提,就是需要大多數的分類器表現都良好,你想想,如果AB同學都全不會做,C只會做一道題,那他們仨結合在一起只能讓結果更差。Question 3: 如何實現C5.0算法的 Adaboost ?C5.0函數可以很輕鬆地將Adaboost算法添加到C5.0決策樹中。我們只需要添加一個額外的參數trials,表示在模型增強團隊中使用的獨立決策樹的數量。參數trials設置了一個上限,如果該算法識別出額外的試驗似乎並沒有提高模型的準確性,那麼它將停止添加決策樹。

布雷特-蘭茨在其《機器學習與R語言》一書中講到,C5.0算法適用於大多數類型的問題,而且可以直接使用。與其他先進的機器學習模型相比(神經網絡和SVM),通過C5.0算法建立的決策樹一般都表現得與其它先進的模型幾乎一樣好,而且更容易理解和部署。

C5.0算法的優點之一就是它可以自動修剪,即它關注許多決策,能自動使用相當合理的默認值。該算法的總體策略就是事後修剪決策樹,它先生成一個過度擬合訓練數據的大決策樹,然後刪除對分類誤差影響不大的節點和分枝。

1.C5.0函數的語法C5.0(x,y,trials = 1,rules = FALSE,weights = NULL,control = C5.0Control(),costs = NULL,...)參數
解釋
x
所有預測變量的數據框或矩陣y
結果變量:具有2級或2級以上的因子向量trial
一個可選數值,用於控制自助法循環的次數,默認為1
rules
是否應該將樹分解為基於規則的模型(就是if-then)weights預測變量權重的可選數值向量。注意,給與權重的預測變量不會在模型中用作分割變量C5.0Control
類似於J48的Wake_control
cost
結果變量中每個因子水平的潛在錯誤成本矩陣
data訓練數據subset
訓練數據的子集
na.action
缺失值處理
2.C5.0Control的語法

C5.0Control(subset = TRUE, bands = 0, winnow = FALSE, noGlobalPruning = FALSE, CF = 0.25, minCases = 2, fuzzyThreshold = FALSE, sample = 0, seed = sample.int(4096, size = 1) - 1L, earlyStopping = TRUE, label = "outcome")

參數
解釋
subset
是否應該使用離散預測變量進行劃分分枝
bands
設置結果的輸出條帶:2-100(rule=T)
winnow
預測變量是否用來做變量選擇
noGlobalPruning最後是否對樹進行全局剪枝進行簡化樹
CF置信係數(0~1)
minCases內部節點和葉子節點的最小樣本量
fuzzyThreshold是否評估數據可能的高級分割sample抽取多少的樣本比例來作為訓練集,剩下的樣本作為測試集對訓練集的結果進行評估
seed隨機種子
earlyStopping是否提前停止,參考上面的Question 3
label設定一個結果輸出標籤
3.幾種算法的實例對比
library(C50)library(RWeka)library(rpart.plot)library(survival)data <- na.omit(lung[,-c(1:2)])data$status <- as.factor(ifelse(data$status==1,'Alive','Dead'))head(data)

ID3 <- rpart(status~.,data,parms = list(split='information'))summary(ID3)rpart.plot(ID3,branch=1,type=0,cex=0.8,extra = 1)

# 基尼係數算法:CARTCART <- rpart(status~.,data,parms = list(split='gini'))summary(CART)rpart.plot(CART,branch=1,type=0,cex=0.8,extra = 1)

C45 <- J48(status~.,data)summary(C45)plot(C45)

C50 <- C5.0(status~.,data,trails=10)summary(C50)plot(C50)

table(predict(ID3,newdata = data,type = 'class'),data$status)table(predict(CART,newdata = data,type = 'class'),data$status)table(predict(C45,newdata = data,type = 'class'),data$status)table(predict(C50,newdata = data,type = 'class'),data$status)

結合混淆矩陣中的真陽性和真陰性,在此數據集中可以看出C50算法的準確率最高,當然,我們只是簡單比較下,比如剪枝的操作我們在ID3和CART算法中都還未進行。

這期就到這裡,R包的學習本人只能給個引子,如若希望更詳細更系統的學習,建議翻閱R包英文幫助文檔和對應的參考文獻。

下期分享決策樹在醫學論文中的詳細應用。

相關焦點

  • 從決策樹到隨機森林:樹型算法的原理與實現
    基於樹(Tree based)的學習算法在數據科學競賽中是相當常見的。這些算法給預測模型賦予了準確性、穩定性以及易解釋性。和線性模型不同,它們對非線性關係也能進行很好的映射。常見的基於樹的模型有:決策樹(decision trees)、隨機森林(random forest)和提升樹(boosted trees)。
  • 獨家 | 決策樹VS隨機森林——應該使用哪種算法?(附代碼&連結)
    決策樹簡介隨機森林概覽隨機森林和決策樹的衝突(代碼)為什麼隨機森林優於決策樹?決策樹vs隨機森林——你應該在何時選擇何種算法?決策樹是一種有監督的機器學習算法,該方法可以用於解決分類和回歸問題。決策樹可以簡單地理解為達到某一特定結果的一系列決策。這裡是一幅決策樹的闡述圖(使用我們上面的案例):
  • IBM SPSS Modeler算法系列-----決策樹C5.0算法
    在之前的文章《IBM SPSS Modeler算法系列決策樹CHAID算法》,我們介紹是CHAID算法,今天我們介紹另外一種用得非常廣泛的決策樹算法
  • 關於「樹」的算法:現實生活中的決策樹
    樹的結構給了我們開發算法的靈感,並再將其反饋到機器,讓它們學習我們希望它們學習的東西,以解決現實生活中的問題。這些基於樹的學習算法被認為是最好和最常用的監督學習方法之一:決策樹、隨機森林、梯度提升等方法在各種數據科學問題中得到了廣泛應用。對於每一個機器學習的初學者來說,學習這些算法並將其用於建模非常重要。
  • 決策樹學習筆記(三):CART算法,決策樹總結
    4:在計算出來的各個特徵的各個特徵值對數據集D的基尼係數中,   選擇基尼係數最小的特徵A和對應的特徵值a。   根據這個最優特徵和最優特徵值,把數據集劃分成兩部分D1和D2,   同時建立當前節點的左右節點,做節點的數據集D為D1,右節點的數據集D為D2.5:對左右的子節點遞歸的調用1-4步,生成決策樹。
  • 【算法】決策樹與ID3算法
    2 決策樹適合解決什麼問題?1. 什麼是決策樹/判定樹(decision tree)?決策樹(Decision Tree)算法是機器學習(Machine Learning)中分類算法中的一個重要算法,屬於監督學習(Supervised Learning)算法。決策樹算法是一種逼近離散函數值的方法。它是一種典型的分類方法,首先對數據進行處理,利用歸納算法生成可讀的規則和決策樹,然後使用決策對新數據進行分析。
  • 【機器學習】決策樹總結|ID3 C4.5/C5.0 CHAID CART與QUEST
    ● 決策樹剪枝● 決策樹算法     ● ID3     ● C4.5/C5.0     ● CHAID     ● CART     ● QUEST概要決策樹作為一種基本的分類與回歸方法(更多時候指分類),是學習數據挖掘與機器學習的首要算法
  • 決策樹-ID3算法和C4.5算法
    它通過對已有樣本的學習生成一顆決策樹(可看成if-then規則集合),從而能對新樣本作出相應分類。本文重點闡述如何選擇特徵建立決策樹,並給出理解算法的具體實例。什麼是決策樹?ID3算法詳解2.1 什麼是熵2.2 ID3算法2.3 ID3算法的缺點C4.5算法詳解3.1 第一個問題的改進辦法3.2 第二個問題的改進辦法決策樹:通過對已知樣本的學習,一步一步將特徵進行分類,從而將整個特徵空間進行劃分,進而區分出不同類別的算法
  • 【分類算法】基於 R 語言決策樹算法介紹及應用
    常見的強化學習算法有時間差學習。算法類似性決策樹學習:根據數據的屬性採用樹狀結構建立決策模型。決策樹模型常常用來解決分類和回歸問題。常見的算法包括 CART (Classification And Regression Tree)、ID3、C4.5、隨機森林 (Random Forest) 等。
  • 決策樹
    決策樹簡介3.   構造決策樹的基本算法4.   決策樹的應用一、前言機器學習中分類和預測算法的評估:1.準確率:    算法達到的準確率是多少?2.速度    算法的速度怎麼樣?算法複雜度高不高?(3)剪枝函數決策樹生成算法得到的樹對訓練數據的分類很準確,但對未知數據的分類卻沒那麼準確,容易過擬合;因為決策樹考慮的特徵太多,構建得太複雜。 所以我們需要對決策樹進行剪枝:從已生成的樹上裁掉一些子樹或葉節點,並將其根節點或父節點作為新的葉節點,以此簡化樹。剪枝算法很多,這裡引入一種簡單的:極小化決策樹整體的損失函數。
  • 機器學習----回歸模型(決策樹)
    4、節點的樣本數量達到了人為設定的閾值:樣本數量 < min_samples_split ,則樹停止分裂;決策樹回歸器模型相關API:import sklearn.tree as st# 創建決策樹回歸器模型 決策樹的最大深度為4model = st.DecisionTreeRegressor
  • 機器學習中決策樹的原理與算法 | 科普
    從名字來看,決策的的意思就是在眾多類別中我們需要決策出我們分類的東西是屬於哪一個類別,決策離散型的值的叫決策樹,決策連續型值的叫回歸樹。用學術一點的語言就是決策樹的輸出是離散型隨機變量,回歸樹的輸出是連續型隨機變量,這篇文章的重點是講解輸出是離散型隨機變量的決策樹,當你明白決策樹的運行機理後,回歸樹也就觸類旁通了。
  • 機器學習 | 決策樹之分類樹
    今天推出機器學習系列筆記第1期,本期分享內容為:機器學習之決策樹中的分類樹。(筆者使用的是Mac系統)決策樹(Decision Tree):是一種非參數的有監督學習算法,在已知各種情況發生概率的基礎上,通過構成決策樹來取淨現值的期望值大於等於零的概率,是直觀運用概率分析的圖解法,以解決分類和回歸問題。分為分類樹和回歸樹。
  • 決策樹分類算法
    二、決策樹分類決策樹算法藉助於樹的分支結構實現分類。下圖是一個決策樹的示例,樹的內部結點表示對某個屬性的判斷,該結點的分支是對應的判斷結果;葉子結點代表一個類標。在第6步中,對應構建多叉決策樹時,離散的屬性在結點N及其子樹中只用一次,用過之後就從可用屬性列表中刪掉。比如前面的圖中,利用屬性選擇函數,確定的最佳分裂屬性是年齡,年齡有三個取值,每一個取值對應一個分支,後面不會再用到年齡這個屬性。算法的時間複雜度是O(k*|D|*log(|D|)),k為屬性個數,|D|為記錄集D的記錄數。
  • ​機器學習 | 決策樹之回歸樹
    今天推出機器學習系列筆記第2期,本期分享內容為:機器學習之決策樹中的回歸樹。①固定隨機,生成隨機數據rng = np.random.RandomState(1) #用np來生成一個隨機數種子,類似random_statenp.sort(5 * rng.rand(80,1), axis=0)#rand隨機生成0~1之間隨機數,若輸入數字,返回x個隨機數;若輸入(x,x),返回隨機數組;sort排序②畫圖
  • 手把手教你理解決策樹:從概念到應用
    目的是創建一個模型,該模型通過學習從數據特徵推斷出的簡單決策規則來預測目標變量的值。對於分類模型,目標值本質上是離散的,而對於回歸模型,目標值由連續值表示。與黑盒算法(例如神經網絡)不同,決策樹 比較容易理解,因為它共享內部決策邏輯(您將在下一節中找到詳細信息)。
  • 詳解決策樹 C4.5 算法
    決策樹(decision tree)算法基於特徵屬性進行分類,其主要的優點:模型具有可讀性,計算量小,分類速度快。上圖給出了(二叉)決策樹的示例。決策樹具有以下特點:1、對於二叉決策樹而言,可以看作是if-then規則集合,由決策樹的根節點到葉子節點對應於一條分類規則;2、分類規則是互斥並且完備的,所謂互斥即每一條樣本記錄不會同時匹配上兩條分類規則,所謂完備即每條樣本記錄都在決策樹中都能匹配上一條規則。
  • 【量化課堂】決策樹入門及Python應用
    我們知道決策樹是由根節點,分叉,葉組成的,決策樹的生成就是尋找根節點、節點和如何生成分叉了。決策樹生成的核心思想就是找出更加純淨的子集,最好每個子集裡都是結論極其單一的數據。判斷純度的方法不同決策樹的生成也不同,常用的判斷方法有:1、ID3算法使用信息增益作純度判斷;2、C4.5算法使用信息增益率作純度判斷;3、CART算法使用基尼係數作純度判斷。
  • 進化決策樹:當機器學習從生物學中汲取靈感時
    內容本文重點關注的一個例子是進化決策樹。這類分類器使用進化算法來構建魯棒性更強,性能更好的決策樹。進化算法依賴於生物進化啟發的機制。決策樹是什麼?如何根據進化算法搭建決策樹?與其它分類器相比,進化決策樹的表現如何?
  • Sklearn參數詳解--決策樹
    前言先來簡短的回顧一下決策樹原理:決策樹學習的算法通常是一個遞歸地(根據某一準則,信息增益或基尼係數)選擇最優切分點/特徵,並根據該特徵對訓練數據集進行分割,使得對各個子數據集有一個最好的分類過程,這一過程對應著對特徵空間的劃分,也對應著決策樹的構建,繼續在子數據集上循環這個切割的過程,直到所有的訓練數據子集被基本正確分類,或者沒有合適的特徵為止。