跟我做機器學習——你也能掌握決策樹分析!

2021-02-19 醫學方

1、什麼是決策樹

大家好,今天我們來談一下機器學習中的決策樹模型。顧名思義,決策樹分析 (Decision Tree analysis)是通過已知數據生成一種樹狀結構的模型,進而以if-then的二分法樹形結構邏輯對未知數據進行分析的一系列過程。看起來決策樹有點複雜,但是,其實我們在日常生活中,經常會不經意間使用到決策樹的思想。因此,決策樹的分析並不神秘。通過本篇文章您可以了解:決策樹是如何運作的,利用R語言實現決策樹,讀解決策樹的分析結果以及可視化。

2、決策樹分析過程

我們舉一個乳腺癌診斷流程來類比決策樹的分析過程(本過程是乳腺癌診斷簡化的流程,請各位大俠醫輕拍)。在診斷乳腺癌時,需要經過多個診斷、檢測過程才能下診斷結論,醫生的決策可能如下:結果只有兩類,健康者與患者(細分良性腫瘤患者與有惡性可能的患者)。在醫生眼中,臨床診斷是最早、最重要的預判診斷之一。首先,在臨床上會先觀察患者是否有腫塊、症狀來發現問題(首次變量選擇,形成第一個分支),然後根據檢查結果分為疑似與健康兩類;再選擇超聲波檢查與鉬靶判定鈣化程度類型(第二個變量,行程第二個分支),再將結果進行BI-RADS分類,然後根據檢查結果將腫塊分為良性與有惡性趨勢兩類;最終將疑似有問題的進行穿刺檢查(第三個變量選擇,將進入第三個分支),預測確診腫瘤的類別,完成術前診斷。(圖1)。

圖1決策樹及分析流程

決策樹分析的流程與上述過程類似。決策樹模型的算法首先選擇一個分類能力最好、最重要的變量作為第一個分支(選擇的依據有:熵的大小、信息的增益、基尼係數、卡方統計量、增益比等,構成了不同的樹),然後將變量分為兩個以上的子集,於是形成幾個樹的分支,然後算法再選擇第二個分類能力最好、重要的變量,對樹進行第二次分支,直到滿足:沒有備選的變量、剩下的樣品都是同一類又或者到達預定樹的大小。形成模型後,可以對未知的數據進行分類、數值預測的分析方法。在R中,變量選擇、樣品判定與預測均是自動完成。

決策樹算法經過 C4. 5、 C5. 0 與分類回歸樹(Classification And Regression Tree, CART)的發展,已經比較完善,可以應對數值、分類等一系列問題。決策樹分析的核心是利用訓練數據建立分支樹,並生長至一定階段(建模);然後利用測試數據修剪分支樹(修正),使之有較高的預測精度(完成分析),決策樹分析可以完成分類、預測數值、重要變量篩選、數據探索等任務。不同類型的決策樹計算經過以下幾個階段(數學推導此處省去1萬字):

(1)算法選定最佳的變量(診斷方法),實現兩類中計算純度最大化,通過數值或是與否,將全部數據劃分為兩類(即一類良性樣本儘量多,另一類有惡性趨勢樣本儘量多);如果預測變量是連續的,選擇一個數值分割點使兩類儘可能純度最大(本例子沒有),如果預測變量為分類變量也是如此(如各種劃分類別);

(2)在次佳的變量(第二種診斷方法)執行步驟(1),再次產生內子節點;

(3)不斷重複(1)-(2)步驟,直到某一類別的樣品數過少,或分類中的純度低於我們給定的值(閾值),又或者是達到一定的循環數後,停止計算,最終的子類別即為子節點。我們根據子節點的分布就可以對變量的分類或數值進行預測。

總之,決策樹模型與分析經過三步才能完成:

圖2決策樹分析步驟

3、決策樹的優點與缺點

決策樹是一種「貪婪型」分析,在上述過程中,有可能會得到一顆很大的樹,出現過擬合的現象,這樣的話所生成的「樹」僅能反映訓練數據的特徵,而對未知的樣品分析預測的準確度會下降,因此,R語言中的包會採用預修剪(Pre- pruning)和後修剪(Post- pruning)限制深度、10折交叉驗證等方法自動控制決策樹的大小,提高模型的預測能力。

經過幾十年發展,決策樹分析已經成為很多行業的分析方法。決策樹適合用於無數據的分布規律假設,定性、定量多種類型數據混雜的分析中應用。

其具有以下優點:

(1)無數據類型的假設,適用於大多數類型的數據分析(如非正態數據、有偏數據與缺失型數據,尤其是醫學、金融的數據);

(2)高度自動化過程,可以通過分類、定序、數值等變量預測分類或回歸;

(3)是其他機器學習的基礎;

其缺點也要注意如:

(1)會出現過擬合或欠擬合,導致預測精度下降(R語言通過多種控制條件減少過/欠擬合的情況);

(2)有時候產生的分類結果有悖於直覺,不好理解,需要結合專業背景解讀。然而,這一切問題對於傳統分析來講,其缺點是相對比較輕微而且可以避免的(在機器學習中,模型的調整優化與過擬合有直接的關係,一方面需要提高精度,一方面又要防止過擬合,以後可以單獨談談機器學習的過擬合問題)。

本文的數據來源於ULI的資料庫的慢性腎病數據集,該數據來源於印度三家醫院的短期追蹤,隨訪。目的是通過分析病人的背景資料與檢查結果,建立慢性腎病的診斷與分類模型。(http://archive.ics.uci.edu/ml/datasets/Chronic_Kidney_Disease)。數據包括24個自變量與1個因變量。自變量包括病人的年齡(age),血壓(bp)、sg(尿比重)等背景與身體指標,以及分類是否患腎病(ckd與notckd),具體可以參照上述數據文檔的幫助。

圖3 kid數據集的缺失值分析

當我們預覽數據時發現這個數據集的缺失非常嚴重(圖3),圖中紅色柱狀圖與熱圖分別顯示缺失的統計量、分布與位置。簡單用成對刪除或平均值填補將是無法解決的,缺失值的處理可以參考之前的文章(有機會也可以談談實驗中缺失值的處理)。由於缺失比較嚴重,我們採用基於決策樹的缺失值修補法解決大量缺失值。

圖4 處理後的數據集

經過缺失值處理後,就可以進一步進行分析。注意,這裡並沒有討論缺失值補充的合理性,依賴決策樹-隨機森林法對缺失值補充完成。數據會分成訓練集與測試集,並檢查分類的比例。

完成數據的準備後,我們開始決策樹分析。

完成初步的決策樹構建。

通過運行決策樹對象,我們可以看到決策樹的結果。我們通過上圖可以了解樹的信息。第一行n是參與kid.t的總樣品數。第二行Node)為節點序列編號,1)root為樹根、起點,2-7)其他為分支。

split為拆分變量與準則(如hemo<12.95,hemo>12.95);n、loss是分別代表在根部總的樣品數與被錯分的樣品數(如280與180分別代表在根部時反應總的樣品數是280,180是另一組樣品數,在2分支處153代表分類為ckd的樣品數,0代表此處誤判的樣品數量);ynal代表該節點多數的分類類別(在2分支處為ckd,3分支則為notckd);(yprob)則為各水平在此處的比例(如2分支處100%為ckd,分錯為0,而3分支處 85%為notckd,14.9%為ckd);*代表為最後的子節點,分支結束。這裡看起來有點費勁,後面會介紹決策樹的可視方法。

然後我們需要判定決策樹大小是否合適。

cptable為決策樹的誤差診斷表,CP是複雜度,用於懲罰控制過大的樹,是逐步減小的一系列數值(類似於主成分分析的碎石圖);nsplit為分支數,有n個分支就有n+1個終點;rel error代表不同樹分支的誤差,xerror為交叉校驗的誤差,xstd為交叉校驗的誤差的標準差。

  

圖5 決策樹大小的讀解

rpart已經為我們選擇合適大小的分支數,交叉校驗的誤差最小的樹,避免過擬合的出現(即分支數為3,4個終點)。當然我們也可以手動剪樹,運行以下命令。

  模型建立好後,可以開始進行預測。

結果還是不錯,基本沒有分錯。

決策樹也可以通過圖形進行可視化。

通過可視化可以發現hemo與sg兩個指標對ckd分類影響非常大,當hemo<13時,基本可以判定屬於ckd,當hemo> 13且sg=1.010時也是ckd,其餘的被分為notckd。我們也可以非常清晰地看到分析的過程。

圖7 自定義決策樹可視化

變量的重要程度,也可以通過可視化看出來,但是有一些變量並沒有進入判定模型。

圖8 變量的重要程度


通過以上學習,我們也能快速掌握在R語言平臺下決策樹的實施、分析與讀解。其實,決策樹的奧秘遠不僅限於此,它可是樹形分析與組合分析等機器學習的基礎,與「神經網絡」一起,組成現代機器學習的基石。我們未來會沿著這條「樹形」線向大家展示如隨機森林等更加高級別的機器學習與應用,歡迎大家繼續關注「醫學方」與我們的文章。

    

「醫學方」現正式向粉絲們公開徵稿!內容須原創首發,與科研相關,一經採用,會奉上豐厚稿酬(300-2000元),詳情請戳。

「醫學方」始終致力於服務「醫學人」,將最前沿、最有價值的臨床、科研原創文章推送給各位臨床醫師、科研人員。

醫學方已推出「實驗室那些事兒」「SCI寫作技巧」「文獻精讀與解析」「醫學英語輕鬆學」「國自然基金申請」「臨床數據挖掘」、「基因數據挖掘」、「R語言教程」、「醫學統計學」、「微創動物實驗培訓」等多個專題課程,如需了解課程詳細推文,可關注「醫學方」公眾號,點擊「精品專題」進入

騰訊課堂:https://medfun.ke.qq.com

網易雲課堂:http://study.163.com/u/ykt1467466791112

客服電話:15821255568

客服微信:yixuefang1234

溫馨提示:醫學方還設有專門的討論群哦~各位明星導師都在群中,可以解答各位的遇到的問題,如有興趣,可以加客服微信後加入群聊...  

相關焦點

  • 好男孩的三個標準-機器學習(決策樹)
    作者:張澤平 來源:人工智慧學習圈決策樹(Decision Tree)是在已知各種情況發生概率的基礎上,通過構成決策樹來求取淨現值的期望值大於等於零的概率,評價項目風險,判斷其可行性的決策分析方法,是直觀運用概率分析的一種圖解法。決策樹是一種樹形結構,其中每個內部節點表示一個屬性上的測試,每個分支代表一個測試輸出,每個葉節點代表一種類別。
  • 數據分析技術:決策樹分析;機器學習入門模型
    ,包括聚類分析、判別分析和邏輯回歸分析,加上今天將要介紹的決策樹分析,這些分類方法之間有什麼區別呢?現在知道為什麼在申請銀行貸款的時候,需要查大家的祖宗十八代信息了吧,用來判斷你有多大的概率會違約不還款。 屬性變量是什麼類型的數據?在數據分析領域,最終的數據分析方式就是將數據分成定類、定序和定距數據。判別分析適合定距數據,決策樹和邏輯回歸分析適合定類和定序數據。當然,這裡的適合併不意味著決策樹和邏輯回歸分析就不能用於定距數據的分析。
  • 決策樹學習筆記(三):CART算法,決策樹總結
    ,旨在從最簡單的決策樹開始學習,循序漸進,最後理解並掌握複雜模型GBDT,Xgboost,為要想要深入了解機器學習算法和參加數據挖掘競賽的朋友提供幫助。我們先明確幾個概念,然後將這幾個概念結合起來就可以理解整個生成決策樹序列的算法流程了。現假設我選定了決策樹的任意一個節點t,並將節點t作為根節點。那麼這個時候我想知道節點t下的分支是否需要剪枝,怎麼辦呢?
  • 每天學習一個《查理芒格的100個思維模型》之決策樹思維模型
    我的能力遠不及查理芒格,我也無法像他那樣精通各個學科,但我依然可以學習他的思維發展路徑——通過大量思維模型來提高自己的思維能力。芒格學院對思維模型進行了匯總。希望能夠讓讀者有一個學習的綱領性認知。這裡主要研究思維方法及學習策略。在講述這些思維模型的時候,不僅會講述模型本身,也會使用深度理解策略、認知階梯策略等學習策略,對思維模型進行加工。
  • 機器學習----回歸模型(決策樹)
    4、節點的樣本數量達到了人為設定的閾值:樣本數量 < min_samples_split ,則樹停止分裂;決策樹回歸器模型相關API:import sklearn.tree as st# 創建決策樹回歸器模型 決策樹的最大深度為4model = st.DecisionTreeRegressor
  • 如何用決策樹模型做數據分析?
    一什麼是決策樹?決策樹模型本質是一顆由多個判斷節點組成的樹。在樹的每個節點做參數判斷,進而在樹的最末枝(葉結點)能夠對所關心變量的取值作出最佳判斷。通常,一棵決策樹包含一個根結點,若干內部節點和若干葉結點,葉結點對應決策分類結果。分支做判斷,葉子下結論。我們看一個簡單的決策樹的模型,通過動物的一些特點來判斷它是否是魚類,在決策樹模型中,我們來看每一個節點是如何做判斷的。我們將所有要研究的動物作為樹最上端的起點,對它進行第一個判斷,是否能脫離水生存?如果判斷為是的話,它不是魚類。
  • Python機器學習(微課視頻版)——手把手教你掌握150個精彩案例|文末贈書
    (3)使用業界真實數據在介紹與統計分析相關的機器學習數據分析的程序中,使用了大量的業界真實數據進行分析和預測,具有極強的實用性。(4)微課視頻(共420分鐘)為了提高學習效果,本書為所有案例提供了完整的視頻講解,讀者可跟隨視頻中演示的步驟進行學習。
  • 決策樹怎麼畫?圖文解析繪製決策樹全教程
    什麼是決策樹呢?決策樹是一種樹形結構的圖形。決策樹是在一件事或者一個事物上,對這個事件或事物進行可見的概率分析,我們就把事物決策點,而由這個點延申出來的各種枝幹都是這個點的可發生概率,由於外形很像樹枝一般,所以稱作決策樹。通過決策樹我們能夠清楚的對目標進行分析,將其進行預測模型分析。
  • 向世界級顧問學習決策技巧,五分鐘掌握《制勝決策力》的全部精髓
    因此,我將本書的主要決策方法及決策過程中常見的思維誤區提煉出來,並用實操案例讓大家輕鬆看懂決策方法的實際運用和注意要點。之後,大家可以更有針對性地去閱讀全書,更快、更高效地掌握所有決策技巧。在做決策之前,我們首先要確定分析問題的角度,確定哪些是重點指標,哪些是非重點指標,以此確定決策的目標和範圍。為什麼在決策前要確定好決策框架?「如果你不知道你要去哪個港口,任何風都是好風。」在做決策前,儘可能清楚地了解你要解決的問題、要達成的目標,否則,決策的整個過程都將被淹沒在迷霧裡。
  • 機器學習-決策樹中幾個重要量
    一下幾個概念是決策樹模型中常用名詞,也較為抽象難以理解,特記錄一下自己的學習心得信息信息是用來消除隨機不定性的東西 --香農其實這句話挺難理解的。 對於具有多個特徵的事物的集合,有一個分類,使得每個分類都有一個類標號表示。我們使用事物屬於某個類的概率來衡量這個類所具有的信息。
  • 決策樹與隨機森林(4)—— 決策樹C5.0算法
    這是許多決策樹構建的一個過程,然後這些決策樹通過投票表決的方法為每個案例選擇最優的分類。Question 2: 什麼叫做 Adaboost ?簡單來說,對於一個數據集,我們通過某種算法建立了第一個分類器,若第一個分類器對樣本 x1, x2 的分類效果好,對 x3 的分類效果差,那麼第二個分類器通過一個神奇的公式,把對 x3 的權重增加,x1, x2的權重降低。為什麼呢?
  • 想入門機器學習?機器之心為你準備了一份中文資源合集
    機器之心整理參與:機器之心編輯部機器學習日益廣為人知,越來越多的計算機科學家和工程師投身其中。不幸的是,理論、算法、應用、論文、書籍、視頻等信息如此之多,很容易讓初學者迷失其中,不清楚如何才能提升技能。本文作者依據自身經驗給出了一套快速上手的可行方法及學習資源的分類匯總,機器之心在其基礎上做了增益,希望對讀者有所幫助。
  • 決策樹就是搖錢樹 有些人分析方法玩的很棒,把市場分析的頭頭是道,但依然賺不到錢,我只能說你只完成了投...
    有些人分析方法玩的很棒,把市場分析的頭頭是道,但依然賺不到錢,我只能說你只完成了投資的三分之一,原因就是交易原則和資金管理做的不到位。有沒有想過你和一些成功的職業投資人差在哪裡?一些成功的職業投資人能夠做到知己知彼,既懂得自己的交易心理,又能夠掌握市場群體情緒,在不失原則的前提下將自己的成本控制在一定範圍內。首先交易心理是門大學問。
  • 決策樹,回歸樹,自動分類,三種自動化學習方法
    關於自動化機器學習的研究一直很火爆,隨著人工智慧的發展,越來越多的人對它感興趣,我也是希望對機器學習感興趣的人關注我的專欄,探索機器學習相關知識。自動機器學習,將統計學、機器學習、深度學習結合到一起,從而可以讓神經網絡能夠應用於各種不同數據類型。
  • 決策樹模型
    第四個決策節點:(潛力)分支一,愛學習上進 見面分支二,不愛學習懶惰 不見於是,我們可以畫出這樣的決策樹圖形:為了便於統一大家的理解(共同討論決策)我們一般把決策樹圖形給規範化成三類圖形:決策結點、狀態結點
  • 從拍腦袋下決定到科學做選擇——決策樹模型-TY聊思維5
    所以,如果以上兩種場景在你身邊經常出現,或者你想在遇到以上情況的時候能夠選擇or決策的更加科學,那就來了解下「決策樹」這個模型吧。什麼是決策樹?百度百科對於決策樹的定義如下:「決策樹分析法是一種運用概率與圖論中的樹對決策中的不同方案進行比較,從而獲得最優方案的風險型決策方法。」
  • 決策樹學習筆記(一):特徵選擇
    作者:xiaoyu介紹:一個半路轉行的數據挖掘工程師相信很多朋友已經對決策樹很熟悉了,決策樹是機器學習中的一種基本的可用於分類與回歸的方法,它是一些集成學習如GBDT,XGboost等複雜模型的基礎。這些高級模型比如XGboost可以非常好地擬合數據,在數據挖掘比賽以及工業界中都有著非常出色的表現,受到了無數愛好者的追捧。
  • 機器學習 | 決策樹之分類樹
    (筆者使用的是Mac系統)決策樹(Decision Tree):是一種非參數的有監督學習算法,在已知各種情況發生概率的基礎上,通過構成決策樹來取淨現值的期望值大於等於零的概率,是直觀運用概率分析的圖解法,以解決分類和回歸問題。分為分類樹和回歸樹。
  • sklearn學習(三):決策樹
    一.決策樹原理概述樹模型        決策樹:
  • 關於「樹」的算法:現實生活中的決策樹
    樹的結構給了我們開發算法的靈感,並再將其反饋到機器,讓它們學習我們希望它們學習的東西,以解決現實生活中的問題。這些基於樹的學習算法被認為是最好和最常用的監督學習方法之一:決策樹、隨機森林、梯度提升等方法在各種數據科學問題中得到了廣泛應用。對於每一個機器學習的初學者來說,學習這些算法並將其用於建模非常重要。