R-随机森林

14 Nov 2024 | 4 分钟阅读

随机森林也被称为决策树森林。它是一种流行的基于决策树的集成模型。 这些模型的准确性高于其他决策树。 此算法用于分类和回归应用。

在随机森林中,我们创建大量的决策树,并且在每个决策树中,都会输入每个观察结果。 最终输出是每个观察结果的最常见结果。 通过将新的观察结果输入到所有树中,我们对每个分类模型进行多数投票。

对构建树时未使用的案例进行误差估计。 这称为袋外(OOB)误差估计,以百分比表示。

决策树容易过度拟合,这是它的主要缺点。 原因是树如果加深,能够拟合数据中的所有类型的变化,包括噪声。 可以通过部分剪枝来解决这个问题,但结果往往不太令人满意。

R 允许我们通过提供 randomForest 包来创建随机森林。 randomForest 包提供 randomForest() 函数,它帮助我们创建和分析随机森林。 R 中随机森林的语法如下

示例

让我们开始了解 randomForest 包及其函数的使用方法。 为此,我们举一个例子,在其中使用了 heart-disease 数据集。 让我们逐步开始我们的编码部分。

1) 在第一步中,我们必须加载三个必需的库,即 ggplot2、cowplot 和 randomForest。

2) 现在,我们将使用 http://archive.ics.uci.edu/ml/machine-learning-databases/heart-disease/processed.cleveland.data 中存在的 heart-disease 数据集。 然后,从此数据集中,我们以 CSV 格式读取数据并将其存储在变量中。

3) 现在,我们借助 head() 函数打印数据,该函数仅打印前六行,如下所示

当我们运行上面的代码时,它会生成以下输出。

输出

R-Random Forest

4) 从上面的输出可以清楚地看到,没有一列被标记。 现在,我们命名这些列并以下列方式标记这些列

输出

R-Random Forest

5) 让我们借助 str() 函数检查数据的结构,以便更好地分析它。

输出

R-Random Forest

6) 在上面的输出中,我们突出显示了将在分析中使用的那些列。 从输出中可以清楚地看到,某些列混乱了。 Sex 应该是一个因子,其中 0 代表“女性”,1 代表“男性”。 并且 cp(胸痛) 也应该是一个因子,其中 1 到 3 级代表不同类型的疼痛,4 代表没有胸痛。

ca 和 thal 是因子,但其中一个级别是“?”,我们需要它为 NA。 我们必须清理数据集中的数据,如下所示

输出

R-Random Forest

7) 现在,我们通过设置随机数生成器的种子来随机抽样,以便我们可以重现我们的结果。

8) NWxt,我们使用 rfImput() 函数估算数据集中的 NA 值。 如下所示

输出

R-Random Forest

9) 现在,我们借助 randomForest() 函数以如下方式构建适当的随机森林

输出

R-Random Forest

10) 现在,如果 500 棵树对于最佳分类来说足够,我们将绘制错误率。 我们创建一个数据框,它将以下列方式格式化错误率信息

11) 我们调用 ggplot 以如下方式绘制错误率

输出

R-Random Forest

从上面的输出可以清楚地看到,当我们的随机森林拥有更多树时,错误率会降低。

12) 现在,我们添加 1000 棵树并检查错误率是否会进一步降低? 因此,我们创建一个包含 1000 棵树的随机森林并找到错误率,就像我们之前所做的那样。

输出

R-Random Forest

输出

R-Random Forest

从上面的输出可以清楚地看到,错误率已稳定。

13) 现在,我们需要确保我们正在考虑树中每个内部节点处的最优变量数量。 这将通过以下方式完成

输出

R-Random Forest

14) 现在,我们使用随机森林绘制带有样本的 MDS 图。 这将向我们展示它们彼此之间的关系。 这将通过以下方式完成

输出

R-Random Forest
下一个主题R 中的 T 检验