iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
AI & Data

30天成為資料分析師-手把手R語言與資料分析教學系列 第 25

[Day25] R語言-決策樹(分類模型)

  • 分享至 

  • xImage
  •  

在分類模型中除了邏輯斯迴歸以外,另一個常見的模型為樹模型(tree-based model),常見的有決策樹迴歸樹,樹模型的優點是模型好解釋、模型訓練速度快,缺點是預測能力較不穩定、模型會受到不平衡資料影響。
迴歸樹與決策樹的差別在於:迴歸樹的輸出結果可能是實數,而決策樹的輸出結果為離散型

以下使用R語言內建資料集iris,來建立CART決策樹模型,一樣先將資料分成訓練集和測試集,確保模型準確率的可信度。

# 載入模型套件
library(rpart)
library(rpart.plot)
library(caTools) 
split <- sample.split(iris, SplitRatio = 0.8)
train_data <- subset(iris, split == "TRUE")
test_data <- subset(iris, split == "FALSE")

使用rpart()建立模型,rpart.control()中有一些參數可以針對模型做調整,如: maxdepth代表樹的深度,cp決定計算複雜度,模型建立後,可用printcp()函數來看不同cp下的相對誤差,用來決定cp要是多少

model <- rpart(Species~Petal.Length+Petal.Width+Sepal.Width+Sepal.Length,
                data=train_data,
                control=rpart.control(maxdepth=3),
                method ="class”)
                   
printcp(x = model)

使用rpart.plot()來將模型結果視覺化,越上層的變數代表越重要

rpart.plot(model)

https://ithelp.ithome.com.tw/upload/images/20230925/201626126KOd3AyUDc.png

最後,使用測試集來做預測,並查看模型結果,由下表可以看出在預測集中只有誤判一筆(斜對角數字為判斷正確)

result = predict(model,newdata = test_data, type="class")

table(truth=testing_data$Species, result)
            result
truth        setosa versicolor virginica
  setosa         10          0         0
  versicolor      0          9         1
  virginica       0          0        10

上一篇
[Day24] R語言-邏輯斯迴歸(分類模型)
下一篇
[Day26] R語言-K-means
系列文
30天成為資料分析師-手把手R語言與資料分析教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言