李航-第5章決策樹

決策樹的學(xué)習(xí)算法包特征選擇、決策樹的生成與決策樹的剪枝過程杖小。
決策樹學(xué)習(xí)應(yīng)用信息增益準則選擇特征睬魂。信息增益大的特征具有更強的分類能力。

1烛愧、特征選擇問題。

特征選擇是決定用哪個特征來劃分特征空間掂碱。選擇具有分類能力的特征可以調(diào)高決策樹的學(xué)習(xí)的效率怜姿。
熵:表示隨機變量不確定性的度量,單位是比特疼燥。熵越大社牲,隨機變量的不確定性越大。
經(jīng)驗熵和條件經(jīng)驗熵:當(dāng)熵和條件熵中的概率由數(shù)據(jù)估計(特別是極大似然估計)得到時悴了,所對應(yīng)的熵與條件熵分別稱為經(jīng)驗熵和條件經(jīng)驗熵。

決策樹與條件概率分布违寿?
決策樹分類時將該結(jié)點的實例強行分到條件概率大的那一類去湃交。

什么是信息增益?信息增益:表示得知特征X的信息而使得類Y的信息的不確定性減少的程度藤巢。根據(jù)信息增益準則的特征選擇方法是:對訓(xùn)練數(shù)據(jù)集(或子集)D搞莺,計算其每個特征的信息增益,并比較它們的大小掂咒,選擇信息增益最大的特征才沧。

信息增益.jpg
2、決策樹ID3算法(信息增益)

ID3算法與用極大似然法進行概率模型選擇類似绍刮。

決策樹ID3算法-流程
1温圆、決定分類屬性;
2 孩革、對目前的數(shù)據(jù)表岁歉, 建立一個節(jié)點N
3 、如果數(shù)據(jù)庫中的數(shù)據(jù)都屬于同一個類膝蜈, N就是樹葉锅移, 在樹葉上標出所屬的類
4 、如果數(shù)據(jù)表中沒有其他屬性可以考慮饱搏, 則N也是樹葉非剃, 按照少數(shù)服從多數(shù)的原則在樹葉上標出所屬類別
5 、否則推沸, 根據(jù)平均信息期望值E或GAIN值選出一個最佳屬性作為節(jié)點N的測試屬性
6 备绽、節(jié)點屬性選定后券坞, 對于該屬性中的每個值:
從N生成一個分支, 并將數(shù)據(jù)表中與該分支有關(guān)的數(shù)據(jù)收集形成分支節(jié)點的數(shù)據(jù)表疯坤, 在表中刪除節(jié)點屬性那一欄如果分支數(shù)據(jù)表非空报慕, 則運用以上算法從該節(jié)點建立子樹

ID3生成決策樹.jpg

ID3算法的基本思想是, 以信息熵為度量压怠, 用于決策樹節(jié)點的屬性選擇眠冈, 每次優(yōu)先選取信息量最多的屬性, 亦即能使熵值變?yōu)樽钚〉膶傩裕?以構(gòu)造一顆熵值下降最快的決策樹菌瘫, 到葉子節(jié)點處的熵值為0蜗顽。 此時, 每個葉子節(jié)點對應(yīng)的實例集中的實例屬于同一類雨让。

關(guān)于書中如何根據(jù)經(jīng)驗熵和經(jīng)驗條件熵來計算信息增益比雇盖。理解注釋如下:


計算經(jīng)驗熵-經(jīng)驗條件熵和信息增益.jpg

ID3算法由于只有樹的生成,所有該算法生成的樹容易產(chǎn)生過擬合

3栖忠、決策樹C4.5算法(信息增益比)

CART:表示分類與回歸樹崔挖,是classification and regression tree的縮寫。

C4.5的生成算法.jpg

C4.5相比ID3的改進在于使用信息增益比來選擇特征庵寞。信息增益比的定義如下:


信息增益比.jpg
4狸相、決策樹CART算法(平方誤差和基尼指數(shù))

目標變量是類別的 --- 分類樹
目標變量是連續(xù)的 --- 回歸樹

決策樹的生成就是遞歸地構(gòu)建二叉決策樹的過程。對回歸樹用平方誤差最小化準則(比如最小二乘回歸樹生成)捐川,對分類用基尼指數(shù)最小化準則脓鹃,進行特征選擇,生成二叉樹古沥。

CART生成算法.jpg

CART算法由一下兩步組成:
1瘸右、決策樹生成:基于訓(xùn)練數(shù)據(jù)集生成決策樹,生成的決策樹要盡量大岩齿。
2太颤、決策樹剪枝:用驗證數(shù)據(jù)集對已生成的樹進行剪枝并選擇最優(yōu)子樹,這時用損失函數(shù)最小化作為剪枝的標準盹沈。

CART剪枝算法.jpg
In [1]: import numpy as np
   ...: import pandas as pd
   ...: import matplotlib.pyplot as plt
   ...: from sklearn.datasets import load_iris
   ...: from sklearn.model_selection import train_test_split

In [2]: def  create_data():
   ...:     iris = load_iris()
   ...:     df = pd.DataFrame(iris.data, columns=iris.feature_names)
   ...:     df['label'] = iris.target
   ...:     df.columns = ['sepal length', 'sepal width', 'petal length', 'petal width', 'label']
   ...:     data = np.array(df.iloc[:100, [0, 1, -1]])
   ...:     # print(data)
   ...:     return data[:,:2], data[:,-1]

In [3]: X, y = create_data()
   ...: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
   ...: 
In [5]: from sklearn.tree import DecisionTreeClassifier
   ...: from sklearn.tree import export_graphviz
   ...: import graphviz
   ...: 

In [6]: clf = DecisionTreeClassifier()
   ...: clf.fit(X_train, y_train,)
   ...: 
Out[6]: 
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
            max_features=None, max_leaf_nodes=None,
            min_impurity_split=1e-07, min_samples_leaf=1,
            min_samples_split=2, min_weight_fraction_leaf=0.0,
            presort=False, random_state=None, splitter='best')
In [7]: clf.score(X_test,y_test)
Out[7]: 0.9666666666666667
#下面的樹圖在IPyhon終端下顯示不出來栋齿,可以用jupyter notebook下來使用顯示
In [8]: tree_pic = export_graphviz(clf, out_file="mytree.pdf")
   ...: with open('mytree.pdf') as f:
   ...:     dot_graph = f.read()
   ...:     

In [9]: graphviz.Source(dot_graph)
Out[9]: <graphviz.files.Source at 0x12078e80>
決策樹的剪枝

為什么進行決策樹的剪枝?
因為決策樹生成算法遞歸地產(chǎn)生決策樹襟诸,直到不能繼續(xù)下去為止瓦堵。這樣產(chǎn)生的決策樹往往對訓(xùn)練數(shù)據(jù)的分類很準確,但是對測試數(shù)據(jù)的分類卻沒有那么準確歌亲,即是會出現(xiàn)過擬合菇用。過擬合的原因是在于學(xué)習(xí)時過多地考慮如何提高對訓(xùn)練數(shù)據(jù)的正確分類,從而構(gòu)建出過于復(fù)雜的決策樹陷揪。

其中惋鸥,ID3和C4.5用于分類杂穷,即是離散變量。而CART既可以用于分類也可以用于回歸卦绣。

參考鏈接:
決策樹算法的Python實現(xiàn)
決策樹類算法總結(jié)
決策樹
李航 統(tǒng)計學(xué)習(xí)方法 第五章 決策樹 課后 習(xí)題 答案

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耐量,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子滤港,更是在濱河造成了極大的恐慌廊蜒,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溅漾,死亡現(xiàn)場離奇詭異山叮,居然都是意外死亡,警方通過查閱死者的電腦和手機添履,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門屁倔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人暮胧,你說我怎么就攤上這事锐借。” “怎么了往衷?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵钞翔,是天一觀的道長。 經(jīng)常有香客問我炼绘,道長,這世上最難降的妖魔是什么妄田? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任俺亮,我火速辦了婚禮,結(jié)果婚禮上疟呐,老公的妹妹穿的比我還像新娘脚曾。我一直安慰自己,他們只是感情好启具,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布本讥。 她就那樣靜靜地躺著,像睡著了一般鲁冯。 火紅的嫁衣襯著肌膚如雪拷沸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天薯演,我揣著相機與錄音撞芍,去河邊找鬼。 笑死跨扮,一個胖子當(dāng)著我的面吹牛序无,可吹牛的內(nèi)容都是我干的验毡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼帝嗡,長吁一口氣:“原來是場噩夢啊……” “哼晶通!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哟玷,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤狮辽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碗降,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隘竭,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年讼渊,在試婚紗的時候發(fā)現(xiàn)自己被綠了动看。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡爪幻,死狀恐怖菱皆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挨稿,我是刑警寧澤仇轻,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站奶甘,受9級特大地震影響篷店,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜臭家,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一疲陕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钉赁,春花似錦蹄殃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至带膜,卻和暖如春吩谦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背膝藕。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工逮京, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人束莫。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓懒棉,卻偏偏與公主長得像草描,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子策严,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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