最常用的决策树算法(一):ID3、C4.5、CART
決策樹是一個(gè)非常常見并且優(yōu)秀的機(jī)器學(xué)習(xí)算法,它易于理解、可解釋性強(qiáng),其可作為分類算法,也可用于回歸模型。本文將分三篇介紹決策樹,第一篇介紹基本樹(包括 ID3、C4.5、CART),第二篇介紹 Random Forest、Adaboost、GBDT,第三篇介紹 Xgboost 和 LightGBM。
第一篇:基本樹(包括 ID3、C4.5、CART)
對于基本樹我將大致從以下四個(gè)方面介紹每一個(gè)算法:思想、劃分標(biāo)準(zhǔn)、剪枝策略,優(yōu)缺點(diǎn)。
ID3
ID3 算法是建立在奧卡姆剃刀(用較少的東西,同樣可以做好事情)的基礎(chǔ)上:越是小型的決策樹越優(yōu)于大的決策樹。
1.1 思想
從信息論的知識中我們知道:期望信息越小,信息熵越大,從而樣本純度越低。ID3 算法的核心思想就是以信息增益來度量特征選擇,選擇信息增益最大的特征進(jìn)行分裂。算法采用自頂向下的貪婪搜索遍歷可能的決策樹空間(C4.5 也是貪婪搜索)。
其大致步驟為:
初始化特征集合和數(shù)據(jù)集合;
計(jì)算數(shù)據(jù)集合信息熵和所有特征的條件熵,選擇信息增益最大的特征作為當(dāng)前決策節(jié)點(diǎn);
更新數(shù)據(jù)集合和特征集合(刪除上一步使用的特征,并按照特征值來劃分不同分支的數(shù)據(jù)集合);
重復(fù) 2,3 兩步,若子集值包含單一特征,則為分支葉子節(jié)點(diǎn)。
1.2 劃分標(biāo)準(zhǔn)
ID3 使用的分類標(biāo)準(zhǔn)是信息增益,它表示得知特征 A 的信息而使得樣本集合不確定性減少的程度。
數(shù)據(jù)集的信息熵:
其中??表示集合 D 中屬于第 k 類樣本的樣本子集。
針對某個(gè)特征 A,對于數(shù)據(jù)集 D 的條件熵 H(D|A) 為:
其中??表示 D 中特征 A 取第 i 個(gè)值的樣本子集,?表示??中屬于第 k 類的樣本子集。
信息增益 = 信息熵 - 條件熵:
信息增益越大表示使用特征 A 來劃分所獲得的“純度提升越大”。
1.3 缺點(diǎn)
ID3 沒有剪枝策略,容易過擬合;
信息增益準(zhǔn)則對可取值數(shù)目較多的特征有所偏好,類似“編號”的特征其信息增益接近于 1;
只能用于處理離散分布的特征;
沒有考慮缺失值。
C4.5
C4.5 算法最大的特點(diǎn)是克服了 ID3 對特征數(shù)目的偏重這一缺點(diǎn),引入信息增益率來作為分類標(biāo)準(zhǔn)。
2.1 思想
C4.5 相對于 ID3 的缺點(diǎn)對應(yīng)有以下改進(jìn)方式:
引入悲觀剪枝策略進(jìn)行后剪枝;
引入信息增益率作為劃分標(biāo)準(zhǔn);
將連續(xù)特征離散化,假設(shè) n 個(gè)樣本的連續(xù)特征 A 有 m 個(gè)取值,C4.5 將其排序并取相鄰兩樣本值的平均數(shù)共 m-1 個(gè)劃分點(diǎn),分別計(jì)算以該劃分點(diǎn)作為二元分類點(diǎn)時(shí)的信息增益,并選擇信息增益最大的點(diǎn)作為該連續(xù)特征的二元離散分類點(diǎn);
對于缺失值的處理可以分為兩個(gè)子問題:1. 在特征值缺失的情況下進(jìn)行劃分特征的選擇?(即如何計(jì)算特征的信息增益率)2. 選定該劃分特征,對于缺失該特征值的樣本如何處理?(即到底把這個(gè)樣本劃分到哪個(gè)結(jié)點(diǎn)里)
針對問題一,C4.5 的做法是:對于具有缺失值特征,用沒有缺失的樣本子集所占比重來折算;
針對問題二,C4.5 的做法是:將樣本同時(shí)劃分到所有子節(jié)點(diǎn),不過要調(diào)整樣本的權(quán)重值,其實(shí)也就是以不同概率劃分到不同節(jié)點(diǎn)中。
2.2 劃分標(biāo)準(zhǔn)
利用信息增益率可以克服信息增益的缺點(diǎn),其公式為
?稱為特征 A 的固有值。
這里需要注意,信息增益率對可取值較少的特征有所偏好(分母越小,整體越大),因此 C4.5 并不是直接用增益率最大的特征進(jìn)行劃分,而是使用一個(gè)啟發(fā)式方法:先從候選劃分特征中找到信息增益高于平均值的特征,再從中選擇增益率最高的。
2.3 剪枝策略
為什么要剪枝:過擬合的樹在泛化能力的表現(xiàn)非常差。
2.3.1 預(yù)剪枝
在節(jié)點(diǎn)劃分前來確定是否繼續(xù)增長,及早停止增長的主要方法有:
節(jié)點(diǎn)內(nèi)數(shù)據(jù)樣本低于某一閾值;
所有節(jié)點(diǎn)特征都已分裂;
節(jié)點(diǎn)劃分前準(zhǔn)確率比劃分后準(zhǔn)確率高。
預(yù)剪枝不僅可以降低過擬合的風(fēng)險(xiǎn)而且還可以減少訓(xùn)練時(shí)間,但另一方面它是基于“貪心”策略,會(huì)帶來欠擬合風(fēng)險(xiǎn)。
2.3.2 后剪枝
在已經(jīng)生成的決策樹上進(jìn)行剪枝,從而得到簡化版的剪枝決策樹。
C4.5 采用的悲觀剪枝方法,用遞歸的方式從低往上針對每一個(gè)非葉子節(jié)點(diǎn),評估用一個(gè)最佳葉子節(jié)點(diǎn)去代替這課子樹是否有益。如果剪枝后與剪枝前相比其錯(cuò)誤率是保持或者下降,則這棵子樹就可以被替換掉。C4.5 通過訓(xùn)練數(shù)據(jù)集上的錯(cuò)誤分類數(shù)量來估算未知樣本上的錯(cuò)誤率。
后剪枝決策樹的欠擬合風(fēng)險(xiǎn)很小,泛化性能往往優(yōu)于預(yù)剪枝決策樹。但同時(shí)其訓(xùn)練時(shí)間會(huì)大的多。
2.4 缺點(diǎn)
剪枝策略可以再優(yōu)化;
C4.5 用的是多叉樹,用二叉樹效率更高;
C4.5 只能用于分類;
C4.5 使用的熵模型擁有大量耗時(shí)的對數(shù)運(yùn)算,連續(xù)值還有排序運(yùn)算;
C4.5 在構(gòu)造樹的過程中,對數(shù)值屬性值需要按照其大小進(jìn)行排序,從中選擇一個(gè)分割點(diǎn),所以只適合于能夠駐留于內(nèi)存的數(shù)據(jù)集,當(dāng)訓(xùn)練集大得無法在內(nèi)存容納時(shí),程序無法運(yùn)行。
CART
ID3 和 C4.5 雖然在對訓(xùn)練樣本集的學(xué)習(xí)中可以盡可能多地挖掘信息,但是其生成的決策樹分支、規(guī)模都比較大,CART 算法的二分法可以簡化決策樹的規(guī)模,提高生成決策樹的效率。
3.1 思想
CART 包含的基本過程有分裂,剪枝和樹選擇。
分裂:分裂過程是一個(gè)二叉遞歸劃分過程,其輸入和預(yù)測特征既可以是連續(xù)型的也可以是離散型的,CART 沒有停止準(zhǔn)則,會(huì)一直生長下去;
剪枝:采用代價(jià)復(fù)雜度剪枝,從最大樹開始,每次選擇訓(xùn)練數(shù)據(jù)熵對整體性能貢獻(xiàn)最小的那個(gè)分裂節(jié)點(diǎn)作為下一個(gè)剪枝對象,直到只剩下根節(jié)點(diǎn)。CART 會(huì)產(chǎn)生一系列嵌套的剪枝樹,需要從中選出一顆最優(yōu)的決策樹;
樹選擇:用單獨(dú)的測試集評估每棵剪枝樹的預(yù)測性能(也可以用交叉驗(yàn)證)。
CART 在 C4.5 的基礎(chǔ)上進(jìn)行了很多提升。
C4.5 為多叉樹,運(yùn)算速度慢,CART 為二叉樹,運(yùn)算速度快;
C4.5 只能分類,CART 既可以分類也可以回歸;
CART 使用 Gini 系數(shù)作為變量的不純度量,減少了大量的對數(shù)運(yùn)算;
CART 采用代理測試來估計(jì)缺失值,而 C4.5 以不同概率劃分到不同節(jié)點(diǎn)中;
CART 采用“基于代價(jià)復(fù)雜度剪枝”方法進(jìn)行剪枝,而 C4.5 采用悲觀剪枝方法。
3.2 劃分標(biāo)準(zhǔn)
熵模型擁有大量耗時(shí)的對數(shù)運(yùn)算,基尼指數(shù)在簡化模型的同時(shí)還保留了熵模型的優(yōu)點(diǎn)。基尼指數(shù)代表了模型的不純度,基尼系數(shù)越小,不純度越低,特征越好。這和信息增益(率)正好相反。
其中 k 代表類別。
基尼指數(shù)反映了從數(shù)據(jù)集中隨機(jī)抽取兩個(gè)樣本,其類別標(biāo)記不一致的概率。因此基尼指數(shù)越小,則數(shù)據(jù)集純度越高。基尼指數(shù)偏向于特征值較多的特征,類似信息增益。基尼指數(shù)可以用來度量任何不均勻分布,是介于 0~1 之間的數(shù),0 是完全相等,1 是完全不相等,
此外,當(dāng) CART 為二分類,其表達(dá)式為:
我們可以看到在平方運(yùn)算和二分類的情況下,其運(yùn)算更加簡單。當(dāng)然其性能也與熵模型非常接近。
3.3 缺失值處理
上文說到,模型對于缺失值的處理會(huì)分為兩個(gè)子問題:1. 在特征值缺失的情況下進(jìn)行劃分特征的選擇?2. 選定該劃分特征,對于缺失該特征值的樣本如何處理?
對于問題 1,CART 一開始嚴(yán)格要求分裂特征評估時(shí)只能使用在該特征上沒有缺失值的那部分?jǐn)?shù)據(jù),在后續(xù)版本中,CART 算法使用了一種懲罰機(jī)制來抑制提升值,從而反映出缺失值的影響(例如,如果一個(gè)特征在節(jié)點(diǎn)的 20% 的記錄是缺失的,那么這個(gè)特征就會(huì)減少 20% 或者其他數(shù)值)。
對于問題 2,CART 算法的機(jī)制是為樹的每個(gè)節(jié)點(diǎn)都找到代理分裂器,無論在訓(xùn)練數(shù)據(jù)上得到的樹是否有缺失值都會(huì)這樣做。在代理分裂器中,特征的分值必須超過默認(rèn)規(guī)則的性能才有資格作為代理(即代理就是代替缺失值特征作為劃分特征的特征),當(dāng) CART 樹中遇到缺失值時(shí),這個(gè)實(shí)例劃分到左邊還是右邊是決定于其排名最高的代理,如果這個(gè)代理的值也缺失了,那么就使用排名第二的代理,以此類推,如果所有代理值都缺失,那么默認(rèn)規(guī)則就是把樣本劃分到較大的那個(gè)子節(jié)點(diǎn)。代理分裂器可以確保無缺失訓(xùn)練數(shù)據(jù)上得到的樹可以用來處理包含確實(shí)值的新數(shù)據(jù)。
3.4 剪枝策略
采用一種“基于代價(jià)復(fù)雜度的剪枝”方法進(jìn)行后剪枝,這種方法會(huì)生成一系列樹,每個(gè)樹都是通過將前面的樹的某個(gè)或某些子樹替換成一個(gè)葉節(jié)點(diǎn)而得到的,這一系列樹中的最后一棵樹僅含一個(gè)用來預(yù)測類別的葉節(jié)點(diǎn)。然后用一種成本復(fù)雜度的度量準(zhǔn)則來判斷哪棵子樹應(yīng)該被一個(gè)預(yù)測類別值的葉節(jié)點(diǎn)所代替。這種方法需要使用一個(gè)單獨(dú)的測試數(shù)據(jù)集來評估所有的樹,根據(jù)它們在測試數(shù)據(jù)集熵的分類性能選出最佳的樹。
我們來看具體看一下代價(jià)復(fù)雜度剪枝算法:
首先我們將最大樹稱為?,我們希望減少樹的大小來防止過擬合,但又擔(dān)心去掉節(jié)點(diǎn)后預(yù)測誤差會(huì)增大,所以我們定義了一個(gè)損失函數(shù)來達(dá)到這兩個(gè)變量之間的平衡。損失函數(shù)定義如下:
T 為任意子樹,?為預(yù)測誤差,?為子樹 T 的葉子節(jié)點(diǎn)個(gè)數(shù),?是參數(shù),?衡量訓(xùn)練數(shù)據(jù)的擬合程度,?衡量樹的復(fù)雜度,?權(quán)衡擬合程度與樹的復(fù)雜度。
那么如何找到合適的??來使得復(fù)雜度和擬合度達(dá)到最好的平衡點(diǎn)呢,最好的辦法就是另??從 0 取到正無窮,對于每一個(gè)固定的?,我們都可以找到使得??最小的最優(yōu)子樹?。當(dāng)??很小的時(shí)候,?是最優(yōu)子樹;當(dāng)??最大時(shí),單獨(dú)的根節(jié)點(diǎn)是這樣的最優(yōu)子樹。隨著??增大,我們可以得到一個(gè)這樣的子樹序列:,這里的子樹??生成是根據(jù)前一個(gè)子樹??剪掉某一個(gè)內(nèi)部節(jié)點(diǎn)生成的。
Breiman 證明:將??從小增大,,在每個(gè)區(qū)間?中,子樹??是這個(gè)區(qū)間里最優(yōu)的。
這是代價(jià)復(fù)雜度剪枝的核心思想。
我們每次剪枝都是針對某個(gè)非葉節(jié)點(diǎn),其他節(jié)點(diǎn)不變,所以我們只需要計(jì)算該節(jié)點(diǎn)剪枝前和剪枝后的損失函數(shù)即可。
對于任意內(nèi)部節(jié)點(diǎn) t,剪枝前的狀態(tài),有??個(gè)葉子節(jié)點(diǎn),預(yù)測誤差是?;剪枝后的狀態(tài):只有本身一個(gè)葉子節(jié)點(diǎn),預(yù)測誤差是?。
因此剪枝前以 t 節(jié)點(diǎn)為根節(jié)點(diǎn)的子樹的損失函數(shù)是:
剪枝后的損失函數(shù)是
通過 Breiman 證明我們知道一定存在一個(gè)??使得?,使得這個(gè)值為;
?的意義在于,?中,子樹??是這個(gè)區(qū)間里最優(yōu)的。當(dāng)??大于這個(gè)值是,一定有?,也就是剪掉這個(gè)節(jié)點(diǎn)后都比不剪掉要更優(yōu)。所以每個(gè)最優(yōu)子樹對應(yīng)的是一個(gè)區(qū)間,在這個(gè)區(qū)間內(nèi)都是最優(yōu)的。
然后我們對??中的每個(gè)內(nèi)部節(jié)點(diǎn) t 都計(jì)算:
?表示閾值,故我們每次都會(huì)減去最小的?。
3.5 類別不平衡
CART 的一大優(yōu)勢在于:無論訓(xùn)練數(shù)據(jù)集有多失衡,它都可以將其子凍消除不需要建模人員采取其他操作。
CART 使用了一種先驗(yàn)機(jī)制,其作用相當(dāng)于對類別進(jìn)行加權(quán)。這種先驗(yàn)機(jī)制嵌入于 CART 算法判斷分裂優(yōu)劣的運(yùn)算里,在 CART 默認(rèn)的分類模式中,總是要計(jì)算每個(gè)節(jié)點(diǎn)關(guān)于根節(jié)點(diǎn)的類別頻率的比值,這就相當(dāng)于對數(shù)據(jù)自動(dòng)重加權(quán),對類別進(jìn)行均衡。
對于一個(gè)二分類問題,節(jié)點(diǎn) node 被分成類別 1 當(dāng)且僅當(dāng):
比如二分類,根節(jié)點(diǎn)屬于 1 類和 0 類的分別有 20 和 80 個(gè)。在子節(jié)點(diǎn)上有 30 個(gè)樣本,其中屬于 1 類和 0 類的分別是 10 和 20 個(gè)。如果 10/20>20/80,該節(jié)點(diǎn)就屬于 1 類。
通過這種計(jì)算方式就無需管理數(shù)據(jù)真實(shí)的類別分布。假設(shè)有 K 個(gè)目標(biāo)類別,就可以確保根節(jié)點(diǎn)中每個(gè)類別的概率都是 1/K。這種默認(rèn)的模式被稱為“先驗(yàn)相等”。
先驗(yàn)設(shè)置和加權(quán)不同之處在于先驗(yàn)不影響每個(gè)節(jié)點(diǎn)中的各類別樣本的數(shù)量或者份額。先驗(yàn)影響的是每個(gè)節(jié)點(diǎn)的類別賦值和樹生長過程中分裂的選擇。
3.6 回歸樹
CART(Classification and Regression Tree,分類回歸樹),從名字就可以看出其不僅可以用于分類,也可以應(yīng)用于回歸。其回歸樹的建立算法上與分類樹部分相似,這里簡單介紹下不同之處。
3.6.1 連續(xù)值處理
對于連續(xù)值的處理,CART 分類樹采用基尼系數(shù)的大小來度量特征的各個(gè)劃分點(diǎn)。在回歸模型中,我們使用常見的和方差度量方式,對于任意劃分特征 A,對應(yīng)的任意劃分點(diǎn) s 兩邊劃分成的數(shù)據(jù)集??和?,求出使??和??各自集合的均方差最小,同時(shí)??和 ??的均方差之和最小所對應(yīng)的特征和特征值劃分點(diǎn)。表達(dá)式為:
其中,?為??數(shù)據(jù)集的樣本輸出均值,?為 ??數(shù)據(jù)集的樣本輸出均值。
3.6.2 預(yù)測方式
對于決策樹建立后做預(yù)測的方式,上面講到了 CART 分類樹采用葉子節(jié)點(diǎn)里概率最大的類別作為當(dāng)前節(jié)點(diǎn)的預(yù)測類別。而回歸樹輸出不是類別,它采用的是用最終葉子的均值或者中位數(shù)來預(yù)測輸出結(jié)果。
總結(jié)
最后通過總結(jié)的方式對比下 ID3、C4.5 和 CART 三者之間的差異。
除了之前列出來的劃分標(biāo)準(zhǔn)、剪枝策略、連續(xù)值確實(shí)值處理方式等之外,我再介紹一些其他差異:
劃分標(biāo)準(zhǔn)的差異:ID3 使用信息增益偏向特征值多的特征,C4.5 使用信息增益率克服信息增益的缺點(diǎn),偏向于特征值小的特征,CART 使用基尼指數(shù)克服 C4.5 需要求 log 的巨大計(jì)算量,偏向于特征值較多的特征。
使用場景的差異:ID3 和 C4.5 都只能用于分類問題,CART 可以用于分類和回歸問題;ID3 和 C4.5 是多叉樹,速度較慢,CART 是二叉樹,計(jì)算速度很快;
樣本數(shù)據(jù)的差異:ID3 只能處理離散數(shù)據(jù)且缺失值敏感,C4.5 和 CART 可以處理連續(xù)性數(shù)據(jù)且有多種方式處理缺失值;從樣本量考慮的話,小樣本建議 C4.5、大樣本建議 CART。C4.5 處理過程中需對數(shù)據(jù)集進(jìn)行多次掃描排序,處理成本耗時(shí)較高,而 CART 本身是一種大樣本的統(tǒng)計(jì)方法,小樣本處理下泛化誤差較大 ;
樣本特征的差異:ID3 和 C4.5 層級之間只使用一次特征,CART 可多次重復(fù)使用特征;
剪枝策略的差異:ID3 沒有剪枝策略,C4.5 是通過悲觀剪枝策略來修正樹的準(zhǔn)確性,而 CART 是通過代價(jià)復(fù)雜度剪枝。
參考
《機(jī)器學(xué)習(xí)》周志華
《數(shù)據(jù)挖掘十大算法》吳信東
CART 樹怎么進(jìn)行剪枝?
附錄:決策樹算法十問及經(jīng)典面試問題
決策樹是機(jī)器學(xué)習(xí)最常用的算法之一,它將算法組織成一顆樹的形式。其實(shí)這就是將平時(shí)所說的if-then語句構(gòu)建成了樹的形式。這個(gè)決策樹主要包括三個(gè)部分:內(nèi)部節(jié)點(diǎn)、葉節(jié)點(diǎn)和邊。內(nèi)部節(jié)點(diǎn)是劃分的屬性,邊代表劃分的條件,葉節(jié)點(diǎn)表示類別。構(gòu)建決策樹 就是一個(gè)遞歸的選擇內(nèi)部節(jié)點(diǎn),計(jì)算劃分條件的邊,最后到達(dá)葉子節(jié)點(diǎn)的過程。
偽代碼: 輸入: 訓(xùn)練數(shù)據(jù)集D,特征集A,閾值. 輸出: 決策樹T.
如果D中所有實(shí)例屬于同一類,則置T為單結(jié)點(diǎn)樹,并將作為該結(jié)點(diǎn)的類,返回T.
如果, 則置T為單結(jié)點(diǎn)樹,并將D中最多的類作為該節(jié)點(diǎn)的類,返回T.
否則,根據(jù)相應(yīng)公式計(jì)算A中各個(gè)特征對D的(信息增益、信息增益比、基尼指數(shù)等),選擇最合適的特征.
如果的得分小于,則置T為單結(jié)點(diǎn)樹,并將作為該結(jié)點(diǎn)的類,返回T.
否則,根據(jù)特征取值,對數(shù)據(jù)D進(jìn)行劃分,繼續(xù)遞歸構(gòu)造決策樹, 返回T.
核心公式
信息熵:
則隨機(jī)變量X的熵定義為:熵越大,隨機(jī)變量的不確定性就越大,當(dāng)時(shí),隨機(jī)變量的熵最大等于logn,故. 常見的決策樹由三種: ID3、C4.5、CART.其中,?,?,?.| ID3 | {分類:信息增益} | 多叉樹 |
| C4.5 | {分類:信息增益比} | 多叉樹 |
| CART | {分類:基尼指數(shù)} | 二叉樹 |
| CART | {回歸:平方誤差} | 二叉樹 |
算法十問
1.決策樹和條件概率分布的關(guān)系?
決策樹可以表示成給定條件下類的條件概率分布. 決策樹中的每一條路徑都對應(yīng)是劃分的一個(gè)條件概率分布. 每一個(gè)葉子節(jié)點(diǎn)都是通過多個(gè)條件之后的劃分空間,在葉子節(jié)點(diǎn)中計(jì)算每個(gè)類的條件概率,必然會(huì)傾向于某一個(gè)類,即這個(gè)類的概率最大.
2.ID3和C4.5算法可以處理實(shí)數(shù)特征嗎?如果可以應(yīng)該怎么處理?如果不可以請給出理由?
ID3和C4.5使用劃分節(jié)點(diǎn)的方法分別是信息增益和信息增益比,從這個(gè)公式中我們可以看到 這是處理類別特征的方法,實(shí)數(shù)特征能夠計(jì)算信息增益嗎?我們可以定義X是實(shí)數(shù)特征的信息增益是,.其中,則. 對于每一個(gè)實(shí)數(shù)可以使用這種方式進(jìn)行分割. 除此之外,我們還可以使用特征的分桶,將實(shí)數(shù)特征映射到有限個(gè)桶中,可以直接使用ID3和C4.5算法.
3.既然信息增益可以計(jì)算,為什么C4.5還使用信息增益比?
在使用信息增益的時(shí)候,如果某個(gè)特征有很多取值,使用這個(gè)取值多的特征會(huì)的大的信息增益,這個(gè)問題是出現(xiàn)很多分支,將數(shù)據(jù)劃分更細(xì),模型復(fù)雜度高,出現(xiàn)過擬合的機(jī)率更大。使用信息增益比就是為了解決偏向于選擇取值較多的特征的問題. 使用信息增益比對取值多的特征加上的懲罰,對這個(gè)問題進(jìn)行了校正.
4.基尼指數(shù)可以表示數(shù)據(jù)不確定性,信息熵也可以表示數(shù)據(jù)的不確定性. 為什么CART使用基尼指數(shù)?
信息熵0, logK都是值越大,數(shù)據(jù)的不確定性越大. 信息熵需要計(jì)算對數(shù),計(jì)算量大;信息熵是可以處理多個(gè)類別,基尼指數(shù)就是針對兩個(gè)類計(jì)算的,由于CART樹是一個(gè)二叉樹,每次都是選擇yes or no進(jìn)行劃分,從這個(gè)角度也是應(yīng)該選擇簡單的基尼指數(shù)進(jìn)行計(jì)算.
5.決策樹怎么剪枝?
一般算法在構(gòu)造決策樹的都是盡可能的細(xì)分,直到數(shù)據(jù)不可劃分才會(huì)到達(dá)葉子節(jié)點(diǎn),停止劃分. 因?yàn)榻o訓(xùn)練數(shù)據(jù)巨大的信任,這種形式形式很容易造成過擬合,為了防止過擬合需要進(jìn)行決策樹剪枝. 一般分為預(yù)剪枝和后剪枝,預(yù)剪枝是在決策樹的構(gòu)建過程中加入限制,比如控制葉子節(jié)點(diǎn)最少的樣本個(gè)數(shù),提前停止. 后剪枝是在決策樹構(gòu)建完成之后,根據(jù)加上正則項(xiàng)的結(jié)構(gòu)風(fēng)險(xiǎn)最小化自下向上進(jìn)行的剪枝操作. 剪枝的目的就是防止過擬合,是模型在測試數(shù)據(jù)上變現(xiàn)良好,更加魯棒.
6.ID3算法,為什么不選擇具有最高預(yù)測精度的屬性特征,而不是使用信息增益?
7.為什么使用貪心和其發(fā)生搜索建立決策樹,為什么不直接使用暴力搜索建立最優(yōu)的決策樹?
決策樹目的是構(gòu)建一個(gè)與訓(xùn)練數(shù)據(jù)擬合很好,并且復(fù)雜度小的決策樹. 因?yàn)閺乃锌赡艿臎Q策樹中直接選擇最優(yōu)的決策樹是NP完全問題,在使用中一般使用啟發(fā)式方法學(xué)習(xí)相對最優(yōu)的決策樹.
8.如果特征很多,決策樹中最后沒有用到的特征一定是無用嗎?
不是無用的,從兩個(gè)角度考慮,一是特征替代性,如果可以已經(jīng)使用的特征A和特征B可以提點(diǎn)特征C,特征C可能就沒有被使用,但是如果把特征C單獨(dú)拿出來進(jìn)行訓(xùn)練,依然有效. 其二,決策樹的每一條路徑就是計(jì)算條件概率的條件,前面的條件如果包含了后面的條件,只是這個(gè)條件在這棵樹中是無用的,如果把這個(gè)條件拿出來也是可以幫助分析數(shù)據(jù).
9.決策樹的優(yōu)點(diǎn)?
優(yōu)點(diǎn): 決策樹模型可讀性好,具有描述性,有助于人工分析;效率高,決策樹只需要一次性構(gòu)建,反復(fù)使用,每一次預(yù)測的最大計(jì)算次數(shù)不超過決策樹的深度。缺點(diǎn): 對中間值的缺失敏感;可能產(chǎn)生過度匹配的問題,即過擬合。
10.基尼系數(shù)存在的問題?
基尼指數(shù)偏向于多值屬性;當(dāng)類數(shù)較大時(shí),基尼指數(shù)求解比較困難;基尼指數(shù)傾向于支持在兩個(gè)分區(qū)中生成大小相同的測試。
面試真題
決策樹如何防止過擬合?
信息增益比相對信息增益有什么好處?
如果由異常值或者數(shù)據(jù)分布不均勻,會(huì)對決策樹有什么影響?
手動(dòng)構(gòu)建CART的回歸樹的前兩個(gè)節(jié)點(diǎn),給出公式每一步的公式推到?
決策樹和其他模型相比有什么優(yōu)點(diǎn)?
決策樹的目標(biāo)函數(shù)是什么?
往期精彩回顧
那些年做的學(xué)術(shù)公益-你不是一個(gè)人在戰(zhàn)斗
適合初學(xué)者入門人工智能的路線及資料下載
吳恩達(dá)機(jī)器學(xué)習(xí)課程筆記及資源(github標(biāo)星12000+,提供百度云鏡像)
吳恩達(dá)深度學(xué)習(xí)筆記及視頻等資源(github標(biāo)星8500+,提供百度云鏡像)
《統(tǒng)計(jì)學(xué)習(xí)方法》的python代碼實(shí)現(xiàn)(github標(biāo)星7200+)
機(jī)器學(xué)習(xí)的數(shù)學(xué)精華(在線閱讀版)
備注:加入本站微信群或者qq群,請回復(fù)“加群”
加入知識星球(4300+用戶,ID:92416895),請回復(fù)“知識星球”
總結(jié)
以上是生活随笔為你收集整理的最常用的决策树算法(一):ID3、C4.5、CART的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最常用的决策树算法(二)Random F
- 下一篇: 经典复现:《统计学习方法》的代码实现(在