以下是原文翻译成繁體中文的版本:
# R - 決策樹:初學者指南
你好啊,未來的數據科學家們!今天,我們將要開始一段使用R語言進行決策樹的精彩旅程。別擔心如果你之前從未編過程——我會在每一步成為你的友好導遊。在這個教程結束之時,你將能夠創建自己的決策樹,並感受到像真正的數據巫師一樣的樂趣!
## 決策樹是什麼?
在我們深入代碼之前,讓我們先來了解什麼是決策樹。想像一下你正在考慮是否去跑步。你可能會問自己:
1. 現在是不是在下雨?
2. 我有足夠的時間嗎?
3. 我感覺精神充沛嗎?
根據你的回答,你會做出一個決定。這正是決策樹所做的事情——它根據一系列問題來做出決定!
## 安裝必要的R套件
首先,我們需要為自己配備正確的工具。在R中,這些工具被稱為套件。在我們的決策樹冒險中,我們需要兩個主要的套件:`rpart` 和 `rpart.plot`。
讓我們來安裝它們:
```R
install.packages("rpart")
install.packages("rpart.plot")
現在,讓我們加載這些套件:
library(rpart)
library(rpart.plot)
太棒了!你已經在R編程中迈出了第一步。給自己一個鼓勵!
創建一個簡單的數據集
現在我們已經準備好了工具,讓我們創建一個簡單的數據集來使用。想像我們正在嘗試根據溫度和是否為週末來預測某人會不會購買冰淇淋。
# 創建一個數據框
ice_cream_data <- data.frame(
temperature = c(68, 85, 72, 90, 60, 78, 82, 75, 68, 71),
is_weekend = c(0, 1, 0, 1, 0, 1, 1, 0, 1, 0),
buy_icecream = c(0, 1, 0, 1, 0, 1, 1, 0, 1, 0)
)
# 檢視數據
print(ice_cream_data)
在這個數據集中:
-
temperature
是華氏溫度 -
is_weekend
為1表示週末,為0表示工作日 -
buy_icecream
為1表示他們購買了冰淇淋,為0表示他們沒有購買
建立我們的第一個決策樹
現在來到令人興奮的部分——讓我們來建立我們的決策樹!
# 創建決策樹模型
ice_cream_tree <- rpart(buy_icecream ~ temperature + is_weekend,
data = ice_cream_data,
method = "class")
# 繪製樹
rpart.plot(ice_cream_tree, extra = 106)
讓我們分解這裡發生的事情:
-
rpart()
是我們用來創建決策樹的函數。 -
buy_icecream ~ temperature + is_weekend
告訴R我們想根據temperature
和is_weekend
來預測buy_icecream
。 -
data = ice_cream_data
指定我們的數據集。 -
method = "class"
告訴R我們正在進行分類任務(預測一個類別)。 -
rpart.plot()
創建我們樹的視覺表示。
當你運行這段代碼時,你會看到一個美麗的樹形圖。每個節點都顯示一個決策規則,葉子節點則顯示預測。這就像是一個冰淇淋決策的流程圖!
理解樹
讓我們來解釋我們的冰淇淋決策樹:
- 最上面的節點(根節點)顯示第一次分割。它可能是像 "temperature < 76" 這樣的規則。
- 如果為真(是),它會走到左邊的分支;如果為假(否),它會走到右邊的分支。
- 這個過程會持續,直到達到葉子節點,這時會給出最終的預測。
節點中的數字代表:
- 預測的類別(0或1)
- 預測該類別的概率
- 節點中觀測值的百分比
進行預測
現在我們有了我們的樹,讓我們用它來做一些預測!
# 創建新數據
new_data <- data.frame(
temperature = c(70, 95),
is_weekend = c(1, 0)
)
# 進行預測
predictions <- predict(ice_cream_tree, new_data, type = "class")
# 檢視預測
print(predictions)
這段代碼預測了在一個70°F的週末和一個95°F的工作日,某人會不會購買冰淇淋。
評估模型
為了看看我們的模型表現如何,我們可以使用混淆矩陣:
# 在原始數據上進行預測
predictions <- predict(ice_cream_tree, ice_cream_data, type = "class")
# 創建混淆矩陣
confusion_matrix <- table(Actual = ice_cream_data$buy_icecream, Predicted = predictions)
# 檢視混淆矩陣
print(confusion_matrix)
# 計算準確度
accuracy <- sum(diag(confusion_matrix)) / sum(confusion_matrix)
print(paste("準確度:", accuracy))
這會給我們一個快速的視圖,讓我們看到有多少預測是正確的,有多少是錯誤的。
結論
恭喜你!你剛剛在R中建立了你的第一個決策樹。從安裝套件到進行預測,你已經走了很長一段路。記住,熟練來自練習,所以不要害怕嘗試不同的數據集和參數。
這裡是一個我們使用過的方法的快速回顧:
方法 | 描述 |
---|---|
install.packages() | 安裝R套件 |
library() | 加載安裝的套件 |
data.frame() | 創建數據框 |
rpart() | 建立決策樹 |
rpart.plot() | 視覺化決策樹 |
predict() | 使用樹進行預測 |
table() | 創建混淆矩陣 |
繼續探索,繼續學習,最重要的是,在數據科學中玩得開心!
Credits: Image by storyset