一起來讀西瓜書:第四章 決策樹

(圖片來源網(wǎng)絡)

1. 章節(jié)主要內(nèi)容

決策樹是機器學習的一類常見算法,其核心思想是通過構建一個樹狀模型來對新樣本進行預測。樹的葉結點是預測結果,而所有非葉結點皆是一個個決策過程。

要相對深入的了解決策樹機器學習算法,我們將按照以下的分標題順序由淺入深的進行介紹。

1)決策樹算法的基本流程

一般的,一顆決策樹包含一個根結點、若干內(nèi)部結點和若干個葉結點;葉結點對應于決策結果,其它每個內(nèi)部結點(包括根結點)則對應一個屬性測試。決策樹根據(jù)內(nèi)部結點的屬性測試結果將該結點所包含的樣本集按照屬性測試的結果被劃分到不同的子結點中。

這是一種簡單且直觀的“分而治之”(divide-and-conquer)策略,決策樹學習的目的是為了產(chǎn)生一顆泛化能力強的決策樹。

套用俗語,決策樹分類的思想類似于找對象。現(xiàn)想象一個女孩的母親要給這個女孩介紹男朋友,于是有了下面的對話:

女兒:多大年紀了?

母親:26。

女兒:長的帥不帥?

母親:挺帥的。

女兒:收入高不?

母親:不算很高,中等情況。

女兒:是公務員不?

母親:是,在稅務局上班呢。

女兒:那好,我去見見。

這個女孩的決策過程就是典型的分類樹決策。相當于通過年齡、長相、收入和是否公務員對將男人分為兩個類別:見和不見。假設這個女孩對男人的要求是:30歲以下、長相中等以上并且是高收入者或中等以上收入的公務員,那么這個可以用下圖表示女孩的決策邏輯:

上邊的訓練過程就是我所理解的決策樹構建過程,其實它就是一個將數(shù)據(jù)按屬性分堆的過程。雖然名字叫的挺高大上的,但是背后的邏輯卻十分簡單。

既然決策樹那么簡單,我想有人應該會疑問“為什么還有那么多的人在一直研究和使用決策樹”了。其實,這也不難理解吧,既然決策樹的背后邏輯十分簡單(其實大多數(shù)算法的思想都很簡單,大家不要被復雜的公式嚇到),那么它較難的地方就不在于這個背后邏輯了,它難的一定是在別的地方。

也許細心的人已經(jīng)發(fā)現(xiàn)了我所舉的例子中有些問題是沒有解答的,比如我們是根據(jù)什么策略來決定屬性測試的順序的(年齡 > 長相 > 收入 > 公務員);這些選定屬性的取值是如何決定的(什么叫帥、什么叫丑,標準是什么);這個構建的決策樹是否足夠泛化,能涵蓋新樣本數(shù)據(jù)的可能情況等

這些問題才是決策樹tricky的地方所在,不過沒關系,大家不要著急,這些內(nèi)容我們將在下邊一一進行解答。

2)屬性的劃分選擇

隨著劃分過程不斷進行,我們希望決策樹的分支結點所包含的樣本盡可能屬于同一類別,即結點的“純度”(purity)越來越高。

要使得結點純度越來越高,我們得要選擇合適的指標來對純度進行評估,并且我們也得要在這些指標上對屬性的劃分進行選擇。目前決策樹主流使用的屬性劃分指標為以下三個:

[1]信息增益

“信息熵”(information entropy)是度量樣本集合純度最常用的一種指標。其代表的是不同的類別在數(shù)據(jù)在總數(shù)據(jù)集中的熵的和,當樣本集合越“純”時,信息熵越小(信息熵的取值范圍為0~log2(k))。

既然信息熵代表的是樣本集合的純度,那么我們一個合理的屬性劃分邏輯可以是這樣的:當用一個屬性對樣本進行劃分后,分開的不同樣本集合的信息墑之和純度最高,那么這個屬性就是目前最好的劃分選擇。

原始信息熵與新的劃分后的信息墑之差就是這次屬性劃分的“信息增益”(information gain),所以我們的屬性劃分選擇就是在每個結點找到最高信息增益的屬性。

[2]增益率(gain ratio)

信息增益是個優(yōu)秀的屬性劃分指標,可實際上,信息增益準則對可取值數(shù)目較多的屬性有所偏好,為減少這種偏好可能帶來的不利影響,選擇增益率來選擇最優(yōu)劃分屬性。

增益率是讓信息增益除以選擇的劃分屬性的“固有值”(intrinsic value)。一般來說屬性a的可能取值數(shù)目越多,則固有值越大,所以信息增益除以固有值后,抵消了信息增益對取值數(shù)目多的屬性的偏好。

需注意的是,信息增益除以固有值后獲得的增益率反而是偏愛取值數(shù)目較少的屬性的,所以一個合理利用增益率來對屬性劃分的方法是:先從候選劃分屬性中選出信息增益高于平均水平的屬性,再從中選擇增益率最高的。

[3]基尼指數(shù)

基尼值的公式如下:

Gini(D) = 1 - pk的平方

從上式可以看出,基尼值反映了從數(shù)據(jù)集D中隨機抽取兩個樣本,其類別標記不一致的概率。因此,基尼值越小,則數(shù)據(jù)集D的純度越高。

那么同信息增益的選擇策略一樣:當用一個屬性對樣本進行劃分后,原始基尼值與新劃分后的不同樣本集合的基尼值之和的差值就是“基尼指數(shù)”(Gini index),所以我們的屬性劃分選擇就是在每個結點找到劃分后最高基尼指數(shù)的屬性。

3)剪枝處理

剪枝(pruning)是決策樹學習算法對付“過擬合”的主要手段。為了盡可能正確分類訓練樣本,會不斷的進行結點劃分,有時會造成決策樹分支過多,這時就可能因為訓練過程學得太好了,將訓練集自身的一些特點當作普遍化特征進行學習而會導致過擬合。

因此,可通過主動去掉一些分支來降低過擬合的風險。目前決策樹剪枝的基本策略有以下兩種:

[1]預剪枝

在決策樹生成過程中,對每個結點在劃分前后進行估計,若當前結點的劃分不能帶來決策樹泛化性能提升,則停止劃分并將當前結點標記為葉結點。

[2]后剪枝

在訓練出一顆完整的決策樹之后,自底向上的對非葉結點進行考察,若將該結點對應的子樹替換成葉結點能提升泛化性能,則將該子樹替換為葉結點。

[3]剪枝過程

使用第二章中提到的性能評估方法來比較泛化性能的改變;

從樣本預留出一部分數(shù)據(jù)用作“驗證集”以進行性能評估。

4)連續(xù)與缺失值

在前邊提到的決策樹處理邏輯中的屬性使用的都是離散值,那么當遇到屬性是連續(xù)或缺失時,我們應該知道該如何處理。

[1]連續(xù)值處理

遇到連續(xù)值屬性的一個合適的處理邏輯是:將連續(xù)值轉(zhuǎn)換為離散值不就得了。我們需要做的是將訓練樣本中該屬性的所有取值進行排序,并對這排好序的取值隊列進行分區(qū)劃分,每一個分區(qū)即為該屬性的一個離散點取值。

不失一般性,我們就取二分法(即分為兩個分區(qū),可以根據(jù)需要分為N個)來進行描述。以身高劃分為例,訓練集中身高數(shù)據(jù)取值(cm)排序如下:

{160,163,168,170,171,174,177,179,180,183}

因為是二分法,我們只需要找到一個劃分點即可。每個劃分點可放在兩個取值之間,也可放在一個取值之上,這里我們?nèi)蓚€取值之間的中位數(shù)。那么上邊例子中可選的劃分點為:

{161.5,165.5,169,170.5,172.5,175.5,178,179.5,181.5}

根據(jù)不同的劃分,我們可以分別計算一下信息增益的大小,然后選出一個最好的劃分來。

需注意的是,和離散值不同,連續(xù)值的劃分是可以在子結點上繼續(xù)劃分的。即你將身高劃分為“小于175”和“大于等于175”兩部分,對于“小于175”的子結點,你仍然可以繼續(xù)劃分為“小于160”和“大于160”兩部分。

[2]缺失值處理

屬性缺失時,我們需要處理兩個問題:

第一,如何在屬性值缺失的情況下進行屬性劃分選擇

不將缺失值的樣本代入選擇判斷的公式計算(信息增益、增益率、基尼指數(shù))之中,只在計算完后乘以一個有值的樣本比例即可。

比如訓練集有10個樣本,在屬性 a 上,有兩個樣本缺失值,那么計算該屬性劃分的信息增益時,我們可以忽略這兩個缺失值的樣本來計算信息增益,然后在計算結果上乘以8/10即可。

第二,若一個樣本在劃分屬性上的值為空,它應該被分在哪個子結點中

若樣本 x 在劃分屬性 a 上取值未知,則將 x 劃入所有子結點,但是對劃入不同子結點中的 x 賦予不同的權值(不同子結點上的不同權值一般體現(xiàn)為該子結點所包含的數(shù)據(jù)占父結點數(shù)據(jù)集合的比例)。

5)多變量決策樹

在學習任務的真實分類邊界比較復雜時,必須使用很多段劃分才能獲得較好的近似,此時的決策樹會相當復雜,由于要進行大量的屬性測試,預測時間開銷會很大。

若能使用斜的劃分邊界,則決策樹模型將大為簡化,這就是多變量決策樹(multivariate decision tree)。在此類決策樹中,非葉結點不再是僅對某個屬性,而是對屬性的線性組合進行測試;換言之,每個非葉結點時一個形如線性回歸的線性分類器了。下圖是一個在連續(xù)屬性密度和含糖率上的選瓜多變量決策樹樣例:

2. 基礎知識

1)信息熵

2)信息增益

3)增益率

4)基尼指數(shù)

3. 總結

1)決策樹采用的是一種簡單且直觀的“分而治之”(divide-and-conquer)策略

2)決策樹根據(jù)數(shù)據(jù)集的總體純度來衡量不同屬性劃分的優(yōu)劣

3)當屬性選擇過于頻繁會導致模型過擬合,這時候就需要使用剪枝算法來進行處理

4)剪枝算法的判斷標準是剪枝前后模型的性能指標是否提高

5)當遇到連續(xù)值的屬性時,可以通過將其拆解成兩塊的方式將數(shù)據(jù)轉(zhuǎn)換為離散值

6)當遇到缺失值屬性時,可以通過在屬性選擇算法中加入缺失值數(shù)據(jù)的影響來適應

7)在處理真實分類邊界比較復雜的學習任務時,我們可以使用屬性的線性組合來對數(shù)據(jù)進行劃分

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內(nèi)容

  • 決策樹理論在決策樹理論中,有這樣一句話,“用較少的東西,照樣可以做很好的事情。越是小的決策樹,越優(yōu)于大的決策樹”。...
    制杖灶灶閱讀 5,894評論 0 25
  • 積跬步以致千里,積怠惰以致深淵 注:本篇文章在整理時主要參考了 周志華 的《機器學習》。 主要內(nèi)容 決策樹是機器學...
    指尖上的魔術師閱讀 1,414評論 0 5
  • 1、決策樹算法 決策樹(decision tree)又叫判定樹,是基于樹結構對樣本屬性進行分類的分類算法。以二分類...
    JasonJe閱讀 2,795評論 0 22
  • 機器學習 經(jīng)驗 數(shù)據(jù) 數(shù)據(jù)中產(chǎn)生模型model 的算法 學習算法 learning algorithm 數(shù)據(jù)集 d...
    時待吾閱讀 4,019評論 0 3
  • 一.樸素貝葉斯 1.分類理論 樸素貝葉斯是一種基于貝葉斯定理和特征條件獨立性假設的多分類的機器學習方法,所...
    wlj1107閱讀 3,123評論 0 5