決策樹(Decision tree,DT)算法筆記(一)-Python

寫在前面的話:哈嘍,大家早安教寂、午安页慷、晚安嘍憔足,歡迎大家指點,也希望我的內(nèi)容可以溫暖酒繁、幫助同在學習路上的人們~

正文開始~~


再次申明:本文的理論知識來自Peter Harrington的《機器學習實戰(zhàn)》和李航的《統(tǒng)計學習方法》滓彰,非常感謝這些優(yōu)秀人物和優(yōu)秀書籍


決策樹(decision tree)算法簡介:決策樹算法思想主要來源于由Quinlan在1986年提出的IID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART(分類回歸決策樹)州袒。決策樹算法是一種基本的分類與回歸算法揭绑。決策樹學習通常包括3個步驟:特征選擇、決策樹的生成和決策樹的修剪郎哭。本文僅討論用于分類的決策樹他匪。

分類決策樹工作原理:分類決策樹模型是一種描述對實例進行分類的樹形結(jié)構(gòu)。決策樹由結(jié)點(node)和有向邊(directed node)組成夸研。結(jié)點分兩類:內(nèi)部結(jié)點(internal tree)和葉結(jié)點(leaf node)邦蜜。內(nèi)部結(jié)點表示一個特征或?qū)傩裕~結(jié)點表示一個類亥至。分類決策樹學習的算法通常是一個遞歸地選擇最優(yōu)特征悼沈,并根據(jù)該特征對訓練數(shù)據(jù)進行分割,使得對各個子數(shù)據(jù)集有一個最好的分類的過程姐扮。這一過程對應著對特征空間的劃分絮供,也對應著決策樹的構(gòu)建。開始茶敏,構(gòu)建根結(jié)點壤靶,將所有訓練數(shù)據(jù)都放在根結(jié)點。選擇一個最優(yōu)特征惊搏,按照這一特征將訓練數(shù)據(jù)集分割成子集贮乳,使得各個子集有一個在當前條件下最好的分類忧换。如果這些子集已經(jīng)能夠被基本正確分類,那么構(gòu)建葉結(jié)點塘揣,并將這些子集分到所對應的葉結(jié)點中去包雀;如果還有子集不能被基本正確分類宿崭,那么就對這些子集選擇新的最優(yōu)特征亲铡,繼續(xù)對其進行分割,構(gòu)建相應的結(jié)點葡兑。如此遞歸地進行下去奖蔓,直至所有訓練數(shù)據(jù)子集被基本正確分類,或者沒有合適的特征為止讹堤。最后每個子集都被分到葉結(jié)點上吆鹤,即都有了明確的類,最終生成了一顆決策樹洲守。以上方法生成的決策樹可能對訓練數(shù)據(jù)有很好的分類能力疑务,但對未知的測試數(shù)據(jù)卻并未有很好的分類能力,可能發(fā)生過擬合梗醇,因此需要對生成的決策樹自下而上剪枝知允,將樹變得簡單,從而使他具有更好的泛化能力叙谨。

分類決策樹算法的實現(xiàn):

流程:1)收集數(shù)據(jù):可以使用任何方法温鸽;2)準備數(shù)據(jù):構(gòu)造算法只適用于標稱型數(shù)據(jù),因此數(shù)值型數(shù)據(jù)必須離散化手负;3)分析數(shù)據(jù):可以使用任何方法涤垫,構(gòu)造樹完成之后,應該檢查圖形是否符合預期竟终;4)訓練算法:構(gòu)造樹的數(shù)據(jù)結(jié)構(gòu)蝠猬;5)測試算法:使用經(jīng)驗樹計算錯誤率;6)使用算法:此步驟可以適用于任何監(jiān)督學習算法,而使用決策樹可以更好地理解數(shù)據(jù)的內(nèi)在含義统捶。

特征選擇:在上述第3)步中榆芦,決策樹通過信息增益來選擇特征,進而構(gòu)建決策樹瘾境。給定訓練數(shù)據(jù)集D和特征A歧杏,經(jīng)驗熵H(D)表示對數(shù)據(jù)集D進行分類的不確定性。而經(jīng)驗條件熵H(D|A)表示在特征A給定的條件下對數(shù)據(jù)集D進行分類的不確定性迷守。那么它們的差犬绒,即信息增益,就表示由于特征A而使得對數(shù)據(jù)集D的分類的不確定性減少的程度兑凿。顯然凯力,對于數(shù)據(jù)集D而言茵瘾,信息增益依賴于特征,不同的特征往往具有不同的信息增益咐鹤。信息增益大的特征具有更強的分類能力拗秘。

分類決策樹的Python實現(xiàn)

1)利用香農(nóng)熵公式計算整個數(shù)據(jù)集的信息熵,代碼見圖1

圖1 計算數(shù)據(jù)集的信息熵

2)基于某一特征祈惶,會劃分數(shù)據(jù)集雕旨,代碼見圖2


圖2 按照給定的特征的位置和取值來劃分數(shù)據(jù)集

3)通過計算信息增益,找讓信息增益最大的特征捧请,也就是最好的分類特征凡涩,代碼見圖3

圖3 找到最好的分類特征

4)逐步遞歸,構(gòu)建決策樹

遞歸的結(jié)束條件:1)程序遍歷完所有劃分數(shù)據(jù)集的屬性疹蛉。此時存在的一種情況是數(shù)據(jù)集以及處理了所有屬性活箕,但是類標簽依然不是唯一的,此時需要決定改如何定義該葉結(jié)點可款,一般采用多數(shù)表決的方法育韩;2)每個分支下的所有實例都具有相同的分類。如果所有實例具有相同的分類闺鲸,則得到一個葉子節(jié)點或者終止塊筋讨。任何到達葉子節(jié)點的數(shù)據(jù)必然屬于葉子節(jié)點的分類。

圖4 創(chuàng)建決策樹

5)基于Matplotlib模塊來繪制決策樹翠拣。其中版仔,Matplotlib的一些繪圖操作可以查看Matplotlib官方文檔Matplotlib博客等误墓。

圖5 繪制結(jié)點
圖6 獲取結(jié)點數(shù)目和樹的層次
圖7 繪制決策樹

好啦蛮粮,以上基本就是基于Python的決策樹實現(xiàn)算法,感覺自己還是不熟悉這塊兒谜慌,希望得到大神指導或者大家分享一些棒棒噠的學習資源哈然想,提前謝謝大家啦~~

同樣,接下來將基于scikit-learn的相關模型來實現(xiàn)決策樹算法欣范,敬請期待哈~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末变泄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子恼琼,更是在濱河造成了極大的恐慌妨蛹,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晴竞,死亡現(xiàn)場離奇詭異蛙卤,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門颤难,熙熙樓的掌柜王于貴愁眉苦臉地迎上來神年,“玉大人,你說我怎么就攤上這事行嗤∫讶眨” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵栅屏,是天一觀的道長飘千。 經(jīng)常有香客問我,道長既琴,這世上最難降的妖魔是什么占婉? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任泡嘴,我火速辦了婚禮甫恩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酌予。我一直安慰自己磺箕,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布抛虫。 她就那樣靜靜地躺著松靡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪建椰。 梳的紋絲不亂的頭發(fā)上雕欺,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音棉姐,去河邊找鬼屠列。 笑死,一個胖子當著我的面吹牛伞矩,可吹牛的內(nèi)容都是我干的笛洛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼乃坤,長吁一口氣:“原來是場噩夢啊……” “哼苛让!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起湿诊,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤狱杰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厅须,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仿畸,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年九杂,在試婚紗的時候發(fā)現(xiàn)自己被綠了颁湖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宣蠕。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖甥捺,靈堂內(nèi)的尸體忽然破棺而出抢蚀,到底是詐尸還是另有隱情,我是刑警寧澤镰禾,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布皿曲,位于F島的核電站,受9級特大地震影響吴侦,放射性物質(zhì)發(fā)生泄漏屋休。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一备韧、第九天 我趴在偏房一處隱蔽的房頂上張望劫樟。 院中可真熱鬧,春花似錦织堂、人聲如沸叠艳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽附较。三九已至,卻和暖如春潦俺,著一層夾襖步出監(jiān)牢的瞬間语泽,已是汗流浹背掂榔。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工败匹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留是钥,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓很魂,卻偏偏與公主長得像扎酷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子遏匆,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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