决策树是如何选择特征和分裂点?
?PaperWeekly 原創(chuàng) ·?作者|賁忠奇
單位|便利蜂算法工程師
研究方向|推薦算法、反作弊
緣起
在解決回歸和分類(lèi)問(wèn)題的時(shí)候,一般會(huì)使用 Random Forest、GBDT、XGBoost、LightGBM 等算法,這類(lèi)算法因?yàn)樾阅芎?#xff0c;被業(yè)界廣泛采用。突然想到樹(shù)類(lèi)型的算法都需要明白一個(gè)基本問(wèn)題,樹(shù)是如何選擇特征和分裂點(diǎn)的?其根本要追溯到?jīng)Q策樹(shù)的種類(lèi),每種是如何劃分特征和分裂點(diǎn),以及如何剪枝的。
決策樹(shù)分為三類(lèi):ID3、C4.5、CART。提出時(shí)間卻是 1984 年提出 CART,1986年提出的 ID3,1993 年提出的 C4.5。在介紹決策樹(shù)之前需要了解一些信息論的知識(shí),信息、熵、條件熵、信息增益。決策樹(shù)中的 ID3 和 C4.5 與信息論息息相關(guān)。
信息論基礎(chǔ)
信息是雜亂無(wú)章數(shù)據(jù)的一種度量方式。在分類(lèi)問(wèn)題中,如果待分類(lèi)的事物可以劃分在多個(gè)分類(lèi)中,那么某個(gè)分類(lèi) 的信息定義為:
其中, 是某個(gè)分類(lèi)的信息; 是選擇該分類(lèi)的概率。
熵是信息的期望,也就是計(jì)算所有分類(lèi)包含信息的期望值:
其中,H(Y) 表示分類(lèi)數(shù)據(jù)集的熵。
條件熵是在特征 X 給定條件下,類(lèi)別 Y 的條件概率分布的熵對(duì)特征 X 的數(shù)學(xué)期望。
其中, 表示在特征 X 下的條件熵; 表示特征下 具體特征值的條件熵; 表示 x 和 y 的聯(lián)合概率分布。
在劃分?jǐn)?shù)據(jù)集之前之后信息發(fā)生的變化叫做信息增益,信息增益是熵的減少或者說(shuō)是數(shù)據(jù)無(wú)序程度的減少。熵減去條件熵就是信息增益。
其中, 表示信息增益。
數(shù)據(jù)說(shuō)明
在講完一些信息論的基礎(chǔ)知識(shí)的基礎(chǔ)上,由于原始論文中公式的表示不是同一個(gè)體系,為了更加方便理解這三者,因此下文中三個(gè)算法的介紹都以下面數(shù)據(jù)集為基礎(chǔ)。
訓(xùn)練數(shù)據(jù)集 , 表示訓(xùn)練樣本總數(shù),數(shù)據(jù)共有 個(gè)類(lèi)別,類(lèi)別 的樣本集合分別用 表示,那么 ,如果特征A有n個(gè)不同類(lèi)型的取值分別為 ,特征 A 可以將 D 劃分為 n 個(gè)子集,, 為 的樣本個(gè)數(shù),并且 ,子集 屬于類(lèi)別 的樣本集合為 , 即為子集 中屬于類(lèi)別 的樣本集合:。用 表示 集合樣本的個(gè)數(shù)。
ID3
4.1 算法思路
利用訓(xùn)練數(shù)據(jù)集 D 與特征 A 來(lái)表示信息增益的計(jì)算方式,那么需要以下幾個(gè)步驟:
1)計(jì)算訓(xùn)練集合 的熵 :
當(dāng) H(D) 的值越小,說(shuō)明樣本集合 D 的純度就越高。
2)選擇用樣本的某一個(gè)特征 A 來(lái)劃分樣本集合 D 時(shí),就可以得出特征 A 對(duì)樣本 D 劃分所帶來(lái)的信息增益。特征 A 把 D 劃分為 n 個(gè)子集,計(jì)算特征 A 對(duì)數(shù)據(jù)集 D 的條件熵 H(D|A):
3)計(jì)算信息增益 IG:
信息增益越大,說(shuō)明用特征 A 來(lái)劃分?jǐn)?shù)據(jù)集 D,信息混亂程度越小。我們需要對(duì)樣本的所有特征計(jì)算信息增益情況,選擇信息增益大的特征來(lái)作為決策樹(shù)的一個(gè)結(jié)點(diǎn),或者可以說(shuō)那些信息增益大的特征往往離根結(jié)點(diǎn)越近。
當(dāng)一個(gè)特征已經(jīng)作為劃分的依據(jù),在下面遞歸過(guò)程就不在參與了。經(jīng)過(guò)根結(jié)點(diǎn)下面特征各個(gè)取值后樣本又可以按照相應(yīng)特征值進(jìn)行劃分,并且在當(dāng)前的樣本下利用剩下的特征再次計(jì)算信息增益來(lái)進(jìn)一步選擇劃分的結(jié)點(diǎn),ID3 決策樹(shù)就是這樣建立起來(lái)的。
4.2 決策樹(shù)生成過(guò)程
大概創(chuàng)建分支 createBranch() 偽代碼的意思如下:
檢測(cè)數(shù)據(jù)集中的每個(gè)子項(xiàng)是否屬于同一分類(lèi):if?so?return?類(lèi)標(biāo)簽else尋找劃分?jǐn)?shù)據(jù)集的最好特征劃分?jǐn)?shù)據(jù)集創(chuàng)建分支節(jié)點(diǎn)for每個(gè)劃分的子集調(diào)用函數(shù)createBranch并增加返回結(jié)果到分支節(jié)點(diǎn)中retrun?分支節(jié)點(diǎn)也就是說(shuō),遍歷每一個(gè)特征,遍歷每一個(gè)特征值,如果計(jì)算出來(lái)信息增益最大,那么該特征就是最佳特征;接下來(lái)每個(gè)特征和特征值遞歸調(diào)用,構(gòu)建下面的子樹(shù),再次選取特征和特征值,直到劃分的子項(xiàng)屬于同一類(lèi)別或者遍歷完所有特征,返回出現(xiàn)次數(shù)最多的類(lèi)別。
4.3 示例
選用原始論文中的一個(gè)示例:
假設(shè)有兩個(gè)分類(lèi),一個(gè)是 N,一個(gè)是 P,Outlook 表示天氣情況,Temperature 表示氣溫情況,Humidity 表示濕度,Windy 表示有風(fēng),這四個(gè)作為特征,每個(gè)特征下面的離散值作為特征值。那么數(shù)據(jù)的熵 :
在 Outlook 的值 sunny 中 P 出現(xiàn)了 2 次,N 出現(xiàn)了 3 次,因此 ,那么數(shù)據(jù)集在 sunny 下的熵表示為 同理:在 overcast 下 ;在 rain 下 。那么數(shù)據(jù)集 D 在 Outlook 特征的條件熵表示為:
那么 outlook 的信息增益表示為:
同理其他特征的信息增益結(jié)果為:
可以發(fā)現(xiàn) Outlook 的信息增益最大,優(yōu)先在這個(gè)特征上劃分,在遞歸到其他特征上最終形成的決策樹(shù)圖如下:?
C4.5
ID3 算法中當(dāng)一個(gè)特征的可取值數(shù)目較多時(shí),而對(duì)應(yīng)的特征值下面的的樣本很少,這個(gè)時(shí)候它的信息增益是非常高的。ID3 會(huì)認(rèn)為這個(gè)特征很適合劃分,但是較多取值的特征來(lái)進(jìn)行劃分帶來(lái)的問(wèn)題是它的泛化能力比較弱,不能夠?qū)π聵颖具M(jìn)行有效的預(yù)測(cè)。為了解決這個(gè)問(wèn)題,C4.5 決策樹(shù)不直接使用信息增益來(lái)作為劃分樣本的主要依據(jù),采用信息增益率來(lái)劃分樣本。
特征 A 對(duì)訓(xùn)練數(shù)據(jù)集合D的信息增益比 定義為特征 A 的信息增益 IG(D,A) 與訓(xùn)練數(shù)據(jù)集 D 關(guān)于特征 A 的取值熵 之比,即:
如果特征 A 有 n 個(gè)取值,則其中數(shù)據(jù)集 D 關(guān)于特征 A 的熵為:
上面的過(guò)程相當(dāng)于對(duì)特征值多的特征做了一個(gè)歸一化,校正信息增益容易偏向于取值較多的特征的問(wèn)題。但是同樣增益率對(duì)可取值數(shù)目較少的特征有所偏好,因此 C4.5 決策樹(shù)先從候選劃分屬性中找出信息增益高于平均水平的特征,在從中選擇增益率最高的。關(guān)于 C4.5 的剪枝問(wèn)題,在 CART 樹(shù)中一并介紹。
CART樹(shù)
ID3 和 C4.5 需要把連續(xù)特征離散化才能在回歸數(shù)據(jù)中使用(ID3 需要人工處理,C4.5 算法自帶處理);使用熵來(lái)度量信息的混亂程度還是復(fù)雜了些;最佳特征取值可以是多個(gè),切分成復(fù)雜的多叉樹(shù)。由于他們存在一些問(wèn)題,下面還有一種決策樹(shù)模型,CART 樹(shù)。雖然 ID3 和 C4.5 存在很多問(wèn)題,但是我不認(rèn)為 CART 樹(shù)是為了解決這些問(wèn)題的,因?yàn)?CART 論文是發(fā)表的最早的,這邊只是為了介紹他們對(duì)比不同。
CART(Classification And Regression Trees,分類(lèi)回歸樹(shù)),采用二元切分的方法,如果數(shù)據(jù)切分特征值等于切分要求進(jìn)入左子樹(shù),否則進(jìn)入右子樹(shù)。CART 樹(shù)即可以處理分類(lèi)問(wèn)題,又可以處理回歸問(wèn)題。分類(lèi)問(wèn)題采用基尼系數(shù)來(lái)選擇最優(yōu)特征和分裂點(diǎn),回歸問(wèn)題采用平方誤差的總值(總方差)來(lái)選擇最優(yōu)特征和分裂點(diǎn)。
6.1 CART數(shù)據(jù)集混亂程度衡量
6.1.1 CART分類(lèi)樹(shù)
基尼指數(shù)是 1912 年意大利統(tǒng)計(jì)與社會(huì)學(xué)家 Corrado Gini 提出的。基尼系數(shù)(Gini index、Gini Coefficient)用來(lái)衡量一個(gè)國(guó)家或地區(qū)居民收入差距的指標(biāo),值越大表示收入越懸殊。在 CART 分類(lèi)樹(shù)中,采用基尼系數(shù)衡量數(shù)據(jù)集的不純度(混亂程度),基尼系數(shù)越小說(shuō)明數(shù)據(jù)不純度低,特征越顯著。
那么分類(lèi)數(shù)據(jù)集 D 的基尼系數(shù)可以表示為:
在特征A下,將數(shù)據(jù)劃分成兩類(lèi),一類(lèi)是 ,一類(lèi)是 ,那么在特征 A 下的基尼系數(shù)為:
6.1.2 CART回歸樹(shù)
計(jì)算回歸數(shù)據(jù)真實(shí)目標(biāo)值中所有數(shù)據(jù)的均值,每條數(shù)據(jù)真實(shí)目標(biāo)值減去均值。使用差值的絕對(duì)值或者差值的平方來(lái)衡量回歸數(shù)據(jù)的混亂程度。若果采用差值的平方來(lái)衡量,那么就是平方誤差的總值(總方差)。
6.2 樹(shù)的生成過(guò)程
函數(shù) createTree() 的偽代碼大致如下:
找到最佳的待切分特征:????如果該節(jié)點(diǎn)不能再分,將該節(jié)點(diǎn)存為葉節(jié)點(diǎn)????執(zhí)行二元切分????在右子樹(shù)調(diào)用createTree()方法????在左子樹(shù)調(diào)用createTree()方法????那么如何找到最佳的待切分特征和特征值呢????每個(gè)特征:????每個(gè)特征值:????將數(shù)據(jù)切分成兩份????計(jì)算切分的誤差????如果當(dāng)前誤差小于當(dāng)前最小誤差,那么將當(dāng)前切分設(shè)定為最佳切分并更新最小誤差???? 返回最佳切分的特征和特征值如果是分類(lèi)樹(shù),那么誤差指的的基尼系數(shù),如果是回歸樹(shù),誤差值的是總方差。節(jié)點(diǎn)不能再分有兩種情況:一是切分后的數(shù)據(jù)真實(shí)目標(biāo)值為同一個(gè),那么此時(shí)葉節(jié)點(diǎn)就是當(dāng)前值;二是預(yù)剪枝切分后的樣本很少或者迭代時(shí)總誤差下降不滿(mǎn)足閾值,此時(shí)用切分后的數(shù)據(jù)真實(shí)值的平均值作為葉節(jié)點(diǎn)。
6.3 樹(shù)的剪枝
樹(shù)的剪枝分為預(yù)剪枝和后剪枝,一般為了尋求模型的最佳效果可以同時(shí)使用兩種剪枝技術(shù)。
預(yù)剪枝過(guò)程相對(duì)簡(jiǎn)單,在生成樹(shù)的過(guò)程中,如果某個(gè)特征和特征值切分的樣本小于最小樣本數(shù)或迭代誤差下降值小于設(shè)置的最小下降值,就停止切分。預(yù)剪枝可以降低過(guò)擬合的風(fēng)險(xiǎn)并減少?zèng)Q策樹(shù)的訓(xùn)練時(shí)間,但是也會(huì)帶來(lái)欠擬合的問(wèn)題。
下面重點(diǎn)講后剪枝,訓(xùn)練集訓(xùn)練一個(gè)決策樹(shù)。在驗(yàn)證集上,對(duì)于一顆子樹(shù) ,其損失函數(shù)為:
其中, 為正則化參數(shù), 為驗(yàn)證集的預(yù)測(cè)誤差, 是子樹(shù) T 葉節(jié)點(diǎn)的數(shù)量。
如果將 T 的子樹(shù)減掉,那么損失函數(shù)為:
如果剪枝后損失函數(shù)變小,或者損失函數(shù)相等但是葉節(jié)點(diǎn)的數(shù)量變少,這兩種情況都滿(mǎn)足剪枝條件,具體后剪枝過(guò)程如下:
基于已有的樹(shù)切分驗(yàn)證集數(shù)據(jù):如果存在任一子集是一棵樹(shù),則在該子集遞歸剪枝過(guò)程計(jì)算將當(dāng)前兩個(gè)葉節(jié)點(diǎn)合并后的誤差計(jì)算不合并的誤差如果合并會(huì)降低誤差的話(huà),就將葉節(jié)點(diǎn)合并決策樹(shù)算法小結(jié)
在樣本量比較小的情況下建議使用 C4.5,大樣本的情況下使用 CART。C4.5 需要對(duì)數(shù)據(jù)進(jìn)行多次排序,處理成本耗時(shí)較高;CART 樹(shù)是一種大樣本的統(tǒng)計(jì)方法,小樣本處理下泛化誤差較大。
目前這三種算法都是一棵樹(shù)中的特征來(lái)決定最后的結(jié)果,后來(lái)發(fā)展成一組樹(shù)來(lái)決定最后的結(jié)果。如果這些樹(shù)是并行投票,就是每個(gè)樹(shù)的投票權(quán)重相同,形成了 bagging 類(lèi)的算法,最有代表性的是 Random Forest;如果這些樹(shù)是串行投票,每個(gè)樹(shù)的投票權(quán)重不同,通過(guò)擬合殘差的方式,形成了 boosting 類(lèi)的算法,最有代表性的是 GBDT、XGBoost、LightGBM。
參考文獻(xiàn)
[1] Leo Breiman, Jerome H. Friedman, Richard A. Olshen, Charles J. Stone.(1984).
[2] Classification And Regression Trees Quinlan1986_Article_InductionOfDecisionTrees
[3] C4.5: by J. Ross Quinlan. Inc., 1993. Programs for Machine Learning Morgan Kaufmann Publishers
[4]《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》
[5] https://www.cnblogs.com/pinard/p/6053344.html
[6] 周志華西瓜書(shū)《機(jī)器學(xué)習(xí)》
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達(dá)讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識(shí)的人。
總有一些你不認(rèn)識(shí)的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學(xué)者和學(xué)術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵(lì)高校實(shí)驗(yàn)室或個(gè)人,在我們的平臺(tái)上分享各類(lèi)優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)習(xí)心得或技術(shù)干貨。我們的目的只有一個(gè),讓知識(shí)真正流動(dòng)起來(lái)。
?????來(lái)稿標(biāo)準(zhǔn):
? 稿件確系個(gè)人原創(chuàng)作品,來(lái)稿需注明作者個(gè)人信息(姓名+學(xué)校/工作單位+學(xué)歷/職位+研究方向)?
? 如果文章并非首發(fā),請(qǐng)?jiān)谕陡鍟r(shí)提醒并附上所有已發(fā)布鏈接?
? PaperWeekly 默認(rèn)每篇文章都是首發(fā),均會(huì)添加“原創(chuàng)”標(biāo)志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請(qǐng)單獨(dú)在附件中發(fā)送?
? 請(qǐng)留下即時(shí)聯(lián)系方式(微信或手機(jī)),以便我們?cè)诰庉嫲l(fā)布時(shí)和作者溝通
????
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁(yè)搜索「PaperWeekly」
點(diǎn)擊「關(guān)注」訂閱我們的專(zhuān)欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個(gè)推薦、解讀、討論、報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺(tái)。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號(hào)后臺(tái)點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結(jié)
以上是生活随笔為你收集整理的决策树是如何选择特征和分裂点?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 农行批量回款交易的10万什么意思
- 下一篇: 有“声”以来,语音如何识别?