為了在R上面執行決策樹,我們首先要在R studio上先下載rpart-packagerpart.plot-package,並利用library()載入,再x利用read_csv將原始資料載入到R studio做分析。

 

1.jpg

 

我們分析所用到的資料是Kaggle網站上面的鐵達尼號資料(Titanic),這個資料主要包含以下整理的內容:

 

2.jpg

 

我們透過head(資料,筆數)去看前10筆的數據(其中NA代表遺漏值)tibbletidyverse的主要資料型態(如同dataframe一樣),但是比內建的dataframe型態方便,tibble的變項格式有以下幾種:

 

3.jpg

4.jpg

 

我們利用rpart()產生一個決策樹,其中Outcome是存活與否,自變項丟年齡、性別、(船艙)的種類、登船港口,因為我們的outcome為二元的類別變項,所以要選擇method = “class”,我們產生決策樹的目的在於想知道哪些變數會與outcome有關以及關聯性,透過視覺化的呈現可以清楚了解變數與outcome的關係,這邊補充一個指令,在rpart()裡面可以加入cp=XXX,這個指令代表決策樹的複雜度,數字為>0的實數,數字越大決策樹複雜度越低,數字越小複雜度越高。至於cp要等於多少才是最佳,可透過交叉驗證來去得到結果,有興趣的讀者可參考這篇的操作步驟(https://www.jamleecute.com/decision-tree-cart-%E6%B1%BA%E7%AD%96%E6%A8%B9/)

 

5.jpg

 

     我們可以透過summary(cart.model)這個指令來去得到決策樹的統計結果,我們可以在以下的報表中得到變數重要性的結果(如紅色框框所示),這報表主要是要跟我們說明用於建構決策樹的變項中,各變項的重要性,所有變項重要性的總合為100%,在這個決策樹的模型中,最重要的因素是性別,占比為69%,其實中後面的決策樹細節也不難發現,第一層的分支就是以性別做為分類,這也代表性別對於最後存活與否有很重要的決定性。

 

6.jpg

 

    透過print(),可以把決策樹的決策過程列印出來,首先1)是一開始的起始,從891個人開始往下,其中342代表的是存活(1)的人數,存活率是342/891=0.3838;首先會以性別做分類,分支2)是男性(577),其中109人存活,存活率為109/577=0.1889、分支3)是女性(314),其中233人存活(1),存活率為233/314=0.742;進一步會根據Age, Pclass, Embarked做分類,構成如下所示的決策樹,*代表葉子的節點。

 

7.jpg

 

此外,我們也可以透過rpart.rules()去得到決策樹的規則,最左邊指的是存活事件發生機率,由低到高做排序,cover則代表該節點觀測資料個數占比,可以發現下這個指令後,我們可以得到每一層分支的條件,如此以來可以更加的明白決策樹產生的過程變化。

 

8.jpg

 

    最後我們可以透過rpart.plot()將上面產生的決策樹給視覺化呈現,因為相較於看一堆統計結果跟文字內容,視覺化的呈現可以讓使用者更佳的清楚分組的過程,也才能用於之後的決策過程。

 

9.jpg

 

每個節點(node)上的數值分別代表:

  1. 預測類別(0:死亡; 1:存活)
  2. 預測目標類別的機率(成為1:存活的機率)
  3. 節點中觀測資料個數佔那個節點的比例

10.jpg

arrow
arrow
    全站熱搜

    晨晰部落格新站 發表在 痞客邦 留言(0) 人氣()