R语言 决策树

R语言 决策树

决策树 是有用的有监督的机器学习算法,它有能力执行回归和分类任务。它的特点是节点和分支,其中每个属性的测试在节点上表示,这个程序的结果在分支上表示,而类别标签在叶子节点上表示。因此,它使用一个基于各种决策的树状模型,用于计算其可能的结果。这些类型的基于树的算法是使用最广泛的算法之一,因为这些算法很容易解释和使用。除此之外,这种算法开发的预测模型被认为具有良好的稳定性和下降的准确性,因此它们非常受欢迎。

决策树的类型

  • 决策树桩: 用于生成只有一个分割的决策树,因此也被称为单级决策树。由于其简单性,在大多数情况下,它的预测性能较低。
  • M5: 以其精确的分类精度和对提升的决策树和有太多噪音的小数据集的工作能力而著称。
  • ID3(Iterative Dichotomiser 3): 广泛使用的核心决策树算法之一,通过给定的数据集采用自上而下的贪婪搜索方法,选择最佳属性对给定的数据集进行分类。
  • C4.5: 也被称为统计分类器,这种类型的决策树是由其父辈ID3衍生出来的。它基于一堆预测因子产生决策。
  • C5.0: 作为C4.5的继承者,它大致有两种模型,即基本树和基于规则的模型,其节点只能预测分类目标。
  • CHAID: 扩展为Chi-squared Automatic Interaction Detector,该算法基本上研究合并变量,通过构建预测模型来证明因变量的结果。
  • MARS: 扩展为多变量适应性回归样条,这种算法创建了一系列的分片线性模型,用于对变量之间的不规则性和相互作用进行建模,它们因能够更有效地处理数字数据而闻名。
  • 条件推理树: 这是一种决策树,使用条件推理框架来递归隔离响应变量,它以其灵活性和强大的基础而闻名。
  • CART: 扩展为分类和回归树,如果目标变量是连续的,则预测其数值,如果是分类的,则确定必要的类别。

可以看出,决策树有很多类型,但根据目标变量的种类,它们主要分为两类,它们是。

  • 分类变量决策树: 这指的是目标变量具有有限的价值并属于一个特定的群体的决策树。
  • 连续变量决策树: 这指的是目标变量可以从广泛的数据类型中取值的决策树。

R编程语言中的决策树

让我们考虑这样的情景:一家医疗公司想预测一个人如果接触到病毒是否会死亡。决定这一结果的重要因素是他的免疫系统的强度,但该公司并没有这一信息。由于这是一个重要的变量,所以可以构建一个决策树,根据人的睡眠周期、皮质醇水平、摄入的补充剂、从食物中获取的营养物质等因素来预测免疫力,这些都是连续变量。

决策树在R中的工作

  • 分割: 它是指将数据集分割成子集的过程。进行战略性分割的决定极大地影响了树的准确性。许多算法被树用来将一个节点分割成子节点,从而使节点相对于目标变量的清晰度全面提高。各种算法,如chi-square和Gini指数被用于此目的,并选择具有最佳效率的算法。
  • 修剪: 这是指将分支节点变成叶子节点的过程,从而缩短树的分支。这个想法背后的本质是,通过更简单的树来避免过度拟合,因为大多数复杂的分类树可能很好地适应训练数据,但在对新值进行分类时,却做得很差劲。
  • 树的选择: 这个过程的主要目标是选择适合数据的最小的树,这是由于在修剪部分讨论的原因。

在R中选择树时需要考虑的重要因素

  • 熵:

    主要用于确定给定样本的均匀性。如果样本是完全均匀的,那么熵就是0,如果是均匀分割的,就是1。熵越高,从该信息中得出结论就越困难。

  • 信息增益:

    衡量训练样本在目标分类基础上的分离程度的统计属性。构建决策树的主要想法是找到一个能返回最小熵值和最高信息增益的属性。它基本上是衡量总熵的减少,它的计算方法是根据给定的属性值计算数据集分割前的熵和分割后的平均熵的总差。

R – 决策树实例

现在让我们在一个例子的帮助下研究这个概念,在这种情况下,它是最广泛使用的 “阅读技能 “数据集,对它进行可视化的决策树并检查其准确性。

导入所需的库,加载数据集 readingSkills 并执行 head(readingSkills)

library(datasets)
library(caTools)
library(party)
library(dplyr)
library(magrittr)
 
data("readingSkills")
head(readingSkills)
R

输出

R编程中的决策树

你可以清楚地看到有4列nativeSpeaker、年龄、鞋码和分数。因此,基本上我们要用其他的标准来找出一个人是否是母语者,并看看在此过程中开发的决策树模型的准确性。

将数据集分割成4:1的比例,用于训练和测试数据

sample_data = sample.split(readingSkills, SplitRatio = 0.8)
train_data <- subset(readingSkills, sample_data == TRUE)
test_data <- subset(readingSkills, sample_data == FALSE)
R

将数据分为训练集和测试集是评估数据挖掘模型的一个重要部分。因此,它被分离成训练集和测试集。在使用训练集对模型进行处理后,你通过对测试集进行预测来测试模型。因为测试集中的数据已经包含了你要预测的属性的已知值,所以很容易确定模型的猜测是否正确。

使用ctree创建决策树模型并绘制模型图

model<- ctree(nativeSpeaker ~ ., train_data)
plot(model)
R

在R中创建决策树的基本语法是。

ctree(formula, data)
R

其中 ,公式描述了预测变量和响应变量,数据是使用的数据集。在这种情况下,nativeSpeaker是响应变量,其他预测变量由,因此当我们绘制模型时,我们得到以下输出。

输出

R编程中的决策树

从树上可以看出,那些得分小于或等于31.08,年龄小于或等于6岁的人不是母语者,而对于那些在相同标准下得分大于31.086的人,他们被发现是母语者。

进行预测

# testing the people who are native speakers
# and those who are not
predict_model<-predict(ctree_, test_data)
 
# creates a table to count how many are classified
# as native speakers and how many are not
m_at <- table(test_data$nativeSpeaker, predict_model)
m_at
R

输出

R编程中的决策树

该模型正确预测了13人是非母语者,但将另外13人归类为非母语者,通过类比,该模型将没有一个乘客错误归类为母语者,而实际上他们不是。

确定所开发模型的准确性

ac_Test < - sum(diag(table_mat)) / sum(table_mat)
print(paste('Accuracy for test is found to be', ac_Test))
R

输出

R编程中的决策树

这里计算了混淆矩阵的准确性测试,发现是0.74。因此,这个模型的预测准确率为74%。

推论

因此,决策树是非常有用的算法,因为它们不仅被用来根据预期值选择备选方案,而且还被用来对优先级进行分类和进行预测。由我们来确定在适当的应用中使用这种模型的准确性。

决策树的优点

  • 易于理解和解释。
  • 不需要数据规范化
  • 不便于对数据进行扩展的需要
  • 与其他主要算法相比,预处理阶段需要较少的努力,因此在某种程度上优化了给定的问题

决策树的劣势

  • 需要更多的时间来训练模型
  • 它有相当高的复杂性,需要更多的时间来处理数据
  • 当用户输入的参数减少得非常少时,会导致树的终止。
  • 计算有时会变得非常复杂

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册