返回網站

決策樹建模和預測分析

利用 R 的 rpart、tree 套件做決策樹的建模

· R

建立決策樹模型並分析預測

  之前簡單介紹過 KNN 分類技術,這次繼續來看分類技術之一的決策樹;KNN 是根據每筆資料的距離來判斷分類標準,而決策樹則是讓訓練資料進行特定的演算法來建立出一個模型,並利用這個決策樹的模型來決定測試資料的分類,就像是畫好了一張樹狀圖,再依照各層結點的規則來走出分類的結果。因為這次一樣是使用 iris 資料集,所以最後還可以將預測結果與實際結果來做簡單的分析。

決策樹的演算過程,右下角可以看到樹的結果。

分析資料的第一步通常是原始資料的處理,而這裡使用的是 iris 資料集,原始資料非常乾淨,只需把資料分割成建模用的訓練資料集和測試用的測試資料集即可。

test.index 是 n 個數字的集合,所以 iris 只要扣掉這個集合就是剩餘的集合,設為 iris.train。

接著就可以利用 rpart 函數來進行訓練資料集的建模,將所有長與寬欄位都納入花種的考量。

樹的模型出來後,直接另開新視窗作圖,作圖時設定邊界 margin=0.1。

一行程式碼的模型建立再加上,plot 函數作圖。

從模型中可以看出,首先當 Petal 的長小於 2.45 時,就將這筆資料分類為 setosa。

從上圖可以看出簡單的分類規則,接著實際與測試資料集來做比較並看預測結果及統計數據。這裡將資料利用 table 函數製作成表格(混淆矩陣)。

假如刪除一開始的 set.seed 則根據每次取樣的不同,結果會有所差別。

簡單統計出的數據顯示,這次建立的模型準確率為 93.3 %;下面再來試試 tree 函數的模型。

tree 函數的參數設定和 rpart 相同。

作圖之後會看到跟 rpart 稍有不同,雖然都是決策樹,但根據其演算法會有一點不同結果;不過這兩種函數也還有很多參數可以對樹做一些調整及修剪。(只做到圖的部分,統計可以自行再練習。)

tree 函數預設跑出的決策樹模型。

(上面 tree 函數跑出的模型,或許有些人覺得過適(overfitting)需要修剪。)

兩個模型一開始都可以看出 Petal 的長只要小於 2.45 就會被歸類為 setosa 這個花種,大於 2.45的其他再去依照其他規則分類,但其實還有很多參數可以調整,讓樹更符合你的需求;這次就是簡單的跑出所學到的決策樹和做一個簡單的統計。