决策树是什么?
根节点 (Root Node):树的起始节点,包含所有数据。 内部节点 (Internal Nodes):用于分割数据的条件判断节点。 叶节点 (Leaf Nodes):没有分支的节点,输出分类或预测的结果。
分类树和回归树
分类树:用于分类问题,把数据分到不同的类别中。 回归树:用于回归问题,预测数值(比如房价、温度等)。
如何构建分类树
基尼不纯度 (Gini Impurity)
分类树构建的具体步骤
选择特征进行分裂
计算基尼不纯度
R语言实现:构建分类树
rpart
包来构建分类树。以下是详细步骤。安装需要的包
# 安装rpart和rpart.plot包
install.packages("rpart")
install.packages("rpart.plot")
准备数据
接下来,我们创建一个数据框,将数据输入R:
# 加载包
library(rpart)
library(rpart.plot)
# 创建数据框
data <- data.frame(
Popcorn = c("Yes", "Yes", "No", "Yes", "No"),
Soda = c("No", "Yes", "Yes", "No", "No"),
Age = c(10, 12, 15, 8, 14),
LikeCoolAsIce = c("No", "Yes", "Yes", "No", "No")
)
# 将Yes/No变量转换为因子类型(分类数据)
data$Popcorn <- factor(data$Popcorn, levels = c("No", "Yes"))
data$Soda <- factor(data$Soda, levels = c("No", "Yes"))
data$LikeCoolAsIce <- factor(data$LikeCoolAsIce, levels = c("No", "Yes"))
构建分类树
使用rpart()
函数来构建决策树:
# 构建分类树
tree_model <- rpart(LikeCoolAsIce ~ Popcorn + Soda + Age, data = data, method = "class")
# 查看决策树的模型摘要
summary(tree_model)
可视化决策树
使用rpart.plot()
来可视化决策树:
# 可视化决策树
rpart.plot(tree_model)
模型评估与修剪
如果决策树过于复杂(即树的深度过大),它可能会“过拟合”训练数据。这意味着它在训练数据上表现很好,但在新数据上表现不好。为了防止过拟合,我们可以修剪决策树,限制树的深度或每个节点的最小样本数。
# 修剪树,控制每个节点的最小样本数
tree_model_pruned <- rpart(LikeCoolAsIce ~ Popcorn + Soda + Age, data = data, method = "class", minsplit = 2, cp = 0.01)
# 可视化修剪后的决策树
rpart.plot(tree_model_pruned)
决策树是一种用于分类或回归的模型,通过对数据进行分裂,最终得到预测结果。
基尼不纯度是衡量数据纯度的一种方式,值越小表示数据越纯。
通过R语言的
rpart
包,我们可以轻松地构建、评估并可视化分类树。