數據挖掘-決策樹算法

決策樹算法是一種比較簡易的監(jiān)督學習分類算法伴网,既然叫做決策樹契耿,那么首先他是一個樹形結構祭陷,簡單寫一下樹形結構(數據結構的時候學過不少了)踪蹬。

樹狀結構是一個或多個節(jié)點的有限集合姆另,在決策樹里寿酌,構成比較簡單根灯,有如下幾種元素:

  • 根節(jié)點:沒有入邊(輸入)梁剔,但是有0或者多條出邊(輸出)脯颜。
  • 非葉子節(jié)點: 有一條入邊哟旗,兩條或者多條出邊。
  • 葉子節(jié)點: 只有一條入邊栋操,沒有出邊闸餐。
  • 分支:就是出邊和入邊,代表決策的結果矾芙。
    以圖為例:


    決策樹

在決策樹中舍沙,每個葉子節(jié)點都有一個類標簽,非葉子節(jié)點包含對屬性的測試條件剔宪,用此進行分類拂铡。
所以個人理解,決策樹就是對一些樣本葱绒,用樹形結構對樣本的特征進行分支感帅,分到葉子節(jié)點就能得到樣本最終的分類,而其中的非葉子節(jié)點和分支就是分類的條件地淀,測試和預測分類就可以照著這些條件來走相應的路徑進行分類失球。

根據這個邏輯,很明顯決策樹的關鍵就是如何找出決策條件和什么時候算作葉子節(jié)點即決策樹終止帮毁。

條件分類

決策樹的核心是為不同類型的特征提供表示決策條件和對應輸出的方法实苞,特征類型和劃分方法包括以下幾個:

  • 二元屬性,產生兩個可能的輸出(是或不是)烈疚。
  • 標稱屬性黔牵,具有多個屬性值,有兩種表示方式爷肝,一種是多路輸出(有一個屬性值輸出一個分支)猾浦,另外一種是只產生二元劃分陆错,這樣的話就考慮創(chuàng)建k個屬性值的二元劃分的所有2^{k-1}-1中方法。
    多路輸出
二元劃分輸出
  • 序數屬性跃巡,是有序的一組屬性值危号,不能違背序數屬性的有序性,進行分組素邪。


    序數屬性
  • 連續(xù)屬性:連續(xù)屬性就是能取任何值的屬性外莲,可以通過一定的范圍進行劃分(離散化)。


    連續(xù)屬性

注意兔朦,這些圖中的第二層都是分支偷线,不是葉子節(jié)點。

最佳特征的劃分

如何合理的對特征進行劃分沽甥,從而找到最優(yōu)的決策模型呢声邦?在這里需要引入信息熵的概念。

信息熵

先來看熵的概念:

熵摆舟,熱力學中表征物質狀態(tài)的參量之一亥曹,用符號S表示,其物理意義是體系混亂程度的度量恨诱。

在數據集中媳瞪,參考熵的定義,把信息熵描述為樣本中的不純度照宝,熵越高蛇受,不純度越高,數據越混亂(越難區(qū)分分類)厕鹃。

例如:要給(0兢仰,1)分類,熵是0剂碴,因為能明顯分類把将,而均衡分布的(0.5,0.5)熵比較高忆矛,因為難以劃分察蹲。

信息熵的計算公式為:Entropy(t) = -\sum_{i=0}^{c-1}p(i|t)log_2p(i|t)
其中Entropy(t)代表信息熵。c是類的個數洪碳,p(i|t)代表在t類時i發(fā)生的概率递览。
另外有一種Gini系數叼屠,也可以用來衡量樣本的不純度:Gini(t) = 1 - \sum_{i=0}^{c-1}[p(i|t)]^2
其中Gini(t)代表Gini系數瞳腌,一般用于決策樹的CART算法

舉個例子:

分類 計數
類=0 3
類=1 3

如果有上述樣本镜雨,那么樣本中可以知道嫂侍,能被分為0類的有3個,分為1類的也有3個,那么信息熵為:Entropy = -\frac{{3}}{{6}}log_2{\frac{3}{6}} - \frac{3}{6}log_2{\frac{3}{6}} = 1
Gini系數為:Gini = 1 - (\frac{3}{6})^2 - (\frac{3}{6})^2 = 0.5
總共有6個數據挑宠,那么其中0類3個菲盾,占比就是3/6,同理1類各淀。

我們再來計算一個分布比較一下:

分類 計數
類=0 1
類=1 5

信息熵為:Entropy = -\frac{{1}}{{6}}log_2{\frac{1}{6}} - \frac{5}{6}log_2{\frac{5}{6}} = 0.65
Gini系數為:Gini = 1 - (\frac{1}{6})^2 - (\frac{5}{6})^2 = 0.278

很明顯懒鉴,因為第二個分布中,很明顯這些數偏向了其中一類碎浇,所以純度更高临谱,相對的信息熵和Gini系數較低。

有了上述的概念奴璃,很明顯如果我們有一組數據要進行分類悉默,最快的建立決策樹的途徑就是讓其在每一層都讓這個樣本純度最大化,那么就要引入信息增益的概念苟穆。

信息增益

所謂增益抄课,就是做了一次決策之后,樣本的純度提升了多少(不純度降低了多少)雳旅,也就是比較決策之前的樣本不純度和決策之后的樣本不純度跟磨,差越大,效果越好岭辣。
讓信息熵降低吱晒,每一層降低的越快越好。
度量這個信息熵差的方法如下:Δ = I(parent) - \sum_{j=1}^{k}{\frac{N(v_j)}{N}}I(v_j)
其中Δ代表的就是信息熵(或者其他可以度量不純度的系數)的差沦童,I(x)是樣本(parent是決策之前仑濒,v_j是決策之后)的信息熵(或者其他可以度量不純度的系數),k為特征值的個數偷遗,N是原樣本的記錄總數墩瞳,N(v_j)是與決策后的樣本相關聯(lián)的記錄個數。

當選擇信息熵作為樣本的不純度度量時氏豌,Δ就叫做信息增益喉酌。

我們可以遍歷每一個特征,看就哪個特征決策時泵喘,產生的信息增益最大泪电,就把他作為當前決策節(jié)點,之后在下一層繼續(xù)這個過程纪铺。

舉個例子:


判斷銷量好壞

如果我們的目標是判斷什么情況下相速,銷量會比較高(受天氣,周末鲜锚,促銷三個因素影響)突诬,根據上述的信息增益求法苫拍,我們首先應該找到根據哪個特征來決策,以信息熵為例:

首先肯定是要求I(parent)旺隙,也就是銷量這個特征的信息熵:
I(銷量) = -\frac{16}{34}{log_2\frac{16}{34}} - -\frac{18}{34}{log_2\frac{18}{34}} = 0.997503

接下來绒极,就分別看三個特征關于銷量的信息熵,先看天氣蔬捷,天氣分為好和壞兩種垄提,其中天氣為好的條件下,銷量為高的有11條周拐,低的有6條塔淤;天氣壞時,銷量為高的有7條速妖,銷量為低的有10條高蜂,并且天氣好的總共17條,天氣壞的總共17條罕容。

分別計算天氣好和天氣壞時的信息熵备恤,天氣好時:
I(天氣=好) = -\frac{11}{17}{log_2\frac{11}{17}} - -\frac{6}{17}{log_2\frac{6}{17}} = 0.936667
I(天氣=壞) = -\frac{7}{17}{log_2\frac{7}{17}} - -\frac{10}{17}{log_2\frac{10}{17}} = 0.977418

根據公式Δ = I(parent) - \sum_{j=1}^{k}{\frac{N(v_j)}{N}}I(v_j),可以知道锦秒,N是34露泊,而天氣特征有2個值,則k=2旅择,第一個值有17條可以關聯(lián)到決策后的節(jié)點惭笑,第二個值也是17條,則能得出計算:Δ = 0.997503 - \frac{{17}}{34}*0.936667 - \frac{17}{34}*0.977418 = 0.4046

再計算周末這個特征生真,也只有兩個特征值沉噩,一個是,一個否柱蟀,其中是有14條川蒙,否有20條;周末為是的中有11條銷量是高长已,3條銷量低畜眨,以此類推有:
I(周末=是) = -\frac{11}{14}{log_2\frac{11}{14}} - -\frac{3}{14}log_2\frac{3}{14} = 0.749595
I(周末=否) = -\frac{7}{20}{log_2\frac{7}{20}} - -\frac{13}{20}{log_2\frac{13}{20}} = 0.934068
信息增益為:

Δ = 0.997503 - \frac{{14}}{34}*0.749595 - \frac{20}{34}*0.934068 = 0.139394

另外可以得到是否有促銷的信息增益為0.127268。

可以看出术瓮,以周末為決策康聂,可以得到最大的信息增益胞四,因此根節(jié)點就可以用周末這個特征進行分支:


根節(jié)點和分支

注意再接下來一層的原樣本集恬汁,不是34個而是周末為“是”和“否”分別計算,為是的是14個撬讽,否的是20個蕊连。
這樣一層一層往下遞歸,直到判斷節(jié)點中的樣本是否都屬于一類游昼,或者都有同一個特征值甘苍,此時就不繼續(xù)往下分了,也就生成了葉子節(jié)點烘豌。

上述模型的決策樹分配如下:


決策樹模型

需要注意的是载庭,特征是否出現需要在分支當中看,并不是整體互斥的廊佩,周末生成的兩個分支囚聚,一個需要用促銷來決策,一個需要用天氣标锄,并不代表再接下來就沒有特征可以分了顽铸,而是在促銷決策層下面可以再分天氣,另外一遍天氣決策下面可以再分促銷料皇。

決策樹的模型比較容易解釋谓松,看這個樹形圖就能很容易的說出分類的條件。

計算過程中提到的信息熵践剂,換成Gini系數計算也是一樣的鬼譬。

不同類型屬性的劃分

我們知道屬性有二元屬性、標稱屬性逊脯、序數屬性和連續(xù)屬性优质,其中二元、標稱和序數都是類似的军洼,因為是離散的屬性巩螃,按照上述方式進行信息增益計算即可,而連續(xù)屬性與這三個不同匕争。

連續(xù)屬性的決策劃分

對于連續(xù)的屬性牺六,為了降低其時間復雜度,我們可以先將屬性內部排序汗捡,之后取相鄰節(jié)點的均值作為決策值淑际,依次取每兩個相鄰的屬性值的均值,之后比較他們的不純度度量扇住。

連續(xù)屬性劃分處理

這樣的話春缕,得到的決策分支就會是這種類型的,指定一個范圍而不是一個固定的值艘蹋。

需要注意的是锄贼,連續(xù)屬性可能在決策樹中出現多次,而不是像離散的屬性一樣在一個分支中出現一次就不會再出現了女阀。

信息增益率

用信息熵或者Gini系數等不純度度量有一個缺點宅荤,就是會傾向于將多分支的屬性優(yōu)先分類——而往往這種屬性并不是特征屑迂。

例如上面例子中的第一行序號,有34個不同的值冯键,那么信息熵一定很高惹盼,但是實際上它并沒有任何意義,因此我們需要規(guī)避這種情況惫确,如何規(guī)避呢手报,有兩種方式:

  1. 限制條件只能是二元劃分,這樣就不會出現多分支的傾斜了改化,CART算法就是這種算法掩蛤,采用Gini系數作為度量。
  2. 修改決策劃分的標準陈肛,把決策條件產生的輸出數也算進去揍鸟,C4.5算法就是用這種模式,引入了信息增益率的概念句旱。

公式如下:
Gain ratio = \frac{Δ_{info}}{-\sum_{i=1}^k{P(v_i)log_2P(v_i)}}
其中k為劃分的總數蜈亩,如果每個屬性值具有相同的記錄數,則P(v_i)=1/k前翎,劃分信息等于log_2k稚配,那么如果某個屬性產生了大量劃分,則劃分信息很大港华,信息增益率低道川,就能規(guī)避這種情況了。

決策樹的優(yōu)化

為了防止過擬合現象立宜,往往會對決策樹做優(yōu)化冒萄,一般是通過剪枝的方式,剪枝又分為預剪枝和后剪枝橙数。

預剪枝

在構建決策樹時尊流,設定各種各樣的條件如葉子節(jié)點的樣本數不大于多少就停止分支,樹的最大深度等灯帮,讓決策樹的層級變少以防止過擬合崖技。
也就是在生成決策樹之前,設定了決策樹的條件钟哥。

后剪枝

后剪枝就是在最大決策樹生成之后迎献,進行剪枝,按照自底向上的方式進行修剪腻贰,修剪的規(guī)則是吁恍,評估葉子節(jié)點和其父節(jié)點的代價函數,如果父節(jié)點的代價函數比較小,則去掉這個葉子節(jié)點冀瓦。
這里引入的代價函數公式是:C(T) = \sum_{t}{N_t·H(t)}
其中N_t代表的是葉子節(jié)點中樣本個數伴奥,H(t)代表的是該葉子節(jié)點上的不純度度量,把每個葉子節(jié)點的C(T)加起來翼闽,和父節(jié)點的C(T)比較拾徙,之后進行剪枝即可。

預剪枝和后剪枝

決策樹算法的特點

  1. 計算效率比較高肄程。
  2. 解釋性好,在很多簡單的數據集中选浑,算法效果良好蓝厌。
  3. 對噪聲又較好的魯棒性。
  4. 對于共線性較強的特征古徒,不會產生不利的影響拓提。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市隧膘,隨后出現的幾起案子代态,更是在濱河造成了極大的恐慌,老刑警劉巖疹吃,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹦疑,死亡現場離奇詭異,居然都是意外死亡萨驶,警方通過查閱死者的電腦和手機歉摧,發(fā)現死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腔呜,“玉大人叁温,你說我怎么就攤上這事『顺耄” “怎么了膝但?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谤草。 經常有香客問我跟束,道長,這世上最難降的妖魔是什么丑孩? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任泳炉,我火速辦了婚禮,結果婚禮上嚎杨,老公的妹妹穿的比我還像新娘花鹅。我一直安慰自己,他們只是感情好枫浙,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布刨肃。 她就那樣靜靜地躺著古拴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪真友。 梳的紋絲不亂的頭發(fā)上黄痪,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音盔然,去河邊找鬼桅打。 笑死,一個胖子當著我的面吹牛愈案,可吹牛的內容都是我干的挺尾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼站绪,長吁一口氣:“原來是場噩夢啊……” “哼遭铺!你這毒婦竟也來了?” 一聲冷哼從身側響起恢准,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤魂挂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后馁筐,有當地人在樹林里發(fā)現了一具尸體涂召,經...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年敏沉,在試婚紗的時候發(fā)現自己被綠了芹扭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赦抖,死狀恐怖舱卡,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情队萤,我是刑警寧澤轮锥,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站要尔,受9級特大地震影響舍杜,放射性物質發(fā)生泄漏。R本人自食惡果不足惜赵辕,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一既绩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧还惠,春花似錦饲握、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衰粹。三九已至,卻和暖如春笆怠,著一層夾襖步出監(jiān)牢的瞬間铝耻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工蹬刷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓢捉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓办成,卻偏偏與公主長得像泡态,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诈火,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容

  • 決策樹理論在決策樹理論中兽赁,有這樣一句話状答,“用較少的東西冷守,照樣可以做很好的事情。越是小的決策樹惊科,越優(yōu)于大的決策樹”拍摇。...
    制杖灶灶閱讀 5,851評論 0 25
  • ??決策樹(Decision Tree)是一種基本的分類與回歸方法,其模型呈樹狀結構馆截,在分類問題中充活,表示基于特征對...
    殉道者之花火閱讀 4,527評論 2 2
  • 1 前言 在了解樹模型之前混卵,自然想到樹模型和線性模型,他們有什么區(qū)別呢窖张? 樹形模型是一個一個特征進行處理幕随,之前線性...
    高永峰_GYF閱讀 1,394評論 0 1
  • 一、決策樹應用體驗 分類 ??從上面可以看出宿接,決策樹對分類具有線性回歸無可比擬的優(yōu)勢, 如果對未參與訓練的數據集是...
    楊強AT南京閱讀 1,252評論 1 3
  • 一. 決策樹(decision tree):是一種基本的分類與回歸方法赘淮,此處主要討論分類的決策樹。在分類問題中睦霎,表...
    YCzhao閱讀 2,136評論 0 2