R - 决策树:初学者指南

你好,未来的数据科学家们!今天,我们将使用R语言开启一段激动人心的决策树之旅。别担心你之前从未编过代码——我会一路作为你友好的向导。在本教程结束时,你将能够创建自己的决策树,并且感觉自己像一个真正的数据巫师!

R - Decision Tree

什么是决策树?

在我们深入代码之前,让我们先了解什么是决策树。想象你正在考虑是否去跑步。你可能会问自己:

  1. 是否在下雨?
  2. 我是否有足够的时间?
  3. 我是否精力充沛?

基于你的回答,你做出一个决定。这就是决策树所做的——它基于一系列问题来做出决策!

安装必要的R包

首先,我们需要装备正确的工具。在R中,这些工具被称为包。在我们探索决策树的旅途中,我们将需要两个主要的包:rpartrpart.plot

让我们来安装它们:

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)

让我们分解一下这里发生了什么:

  1. rpart() 是我们用来创建决策树的函数。
  2. buy_icecream ~ temperature + is_weekend 告诉R我们想要根据 temperatureis_weekend 预测 buy_icecream
  3. data = ice_cream_data 指定我们的数据集。
  4. method = "class" 告诉R我们正在进行分类任务(预测一个类别)。
  5. rpart.plot() 创建我们树的视觉表示。

当你运行这段代码时,你会看到一个漂亮的树形图。每个节点显示一个决策规则,而叶子节点显示预测。就像一个冰淇淋决策流程图!

理解树

让我们解释一下我们的冰淇淋决策树:

  1. 顶部节点(根节点)显示第一个分割。它可能是像 "temperature < 76" 这样的规则。
  2. 如果为真(是),它走向左分支;如果为假(否),它走向右分支。
  3. 这个过程继续,直到它达到一个叶子节点,然后给出最终预测。

节点中的数字代表:

  • 预测的类别(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