📜  R 编程中的随机森林方法

📅  最后修改于: 2022-05-13 01:54:44.268000             🧑  作者: Mango

R 编程中的随机森林方法

R 编程中的随机森林是决策树的集合。它构建并组合多个决策树以获得更准确的预测。这是一种非线性分类算法。每个决策树模型都在单独使用时使用。对构建树时未使用的案例进行错误估计。这称为以百分比表示的袋外误差估计。

它们被称为随机的,因为它们在训练时随机选择预测变量。它们被称为森林,因为它们采用多棵树的输出来做出决定。随机森林优于决策树,因为作为委员会运行的大量不相关树(模型)将始终优于单个组成模型。

理论

随机森林从观察、随机初始变量(列)中获取随机样本并尝试建立模型。随机森林算法如下:

  • 绘制一个大小为n的随机引导样本(从训练数据中随机选择n 个样本)。
  • 从引导样本中生成决策树。在树的每个节点上,随机选择d个特征。
  • 使用根据目标函数提供最佳分割的特征(变量)分割节点。例如,通过最大化信息增益。
  • 重复步骤 1 到步骤 2, k次(k 是您要使用样本子集创建的树的数量)。
  • 聚合每棵树对新数据点的预测以通过多数投票分配类标签,即选择由大多数树选择的组并将新数据点分配给该组。

例子:
考虑在训练数据中包含三个水果苹果、橙子和樱桃的水果盒,即 n = 3。我们正在预测水果盒中数量最多的水果。使用带有许多树的训练数据的随机森林模型,k = 3。

使用数据的各种特征来判断模型,即直径、颜色、形状和组。在橙子、樱桃和橙子中,随机森林选择了橙子在果盒中的最大值。

数据集

Iris数据集由来自 3 种鸢尾花(Iris setosa、Iris virginica、Iris versicolor)的 50 个样本和英国统计学家和生物学家 Ronald Fisher 在其 1936 年论文The use of multiple measurement in taxonomic questions 中引入的多元数据集组成。从每个样本中测量了四个特征,即萼片和花瓣的长度和宽度,基于这四个特征的组合,Fisher 开发了一个线性判别模型来区分物种。

# Loading data
data(iris)
  
# Structure 
str(iris)

在数据集上执行随机森林

在包含 11 个人和 6 个变量或属性的数据集上使用随机森林算法。

# Installing package
install.packages("caTools")       # For sampling the dataset
install.packages("randomForest")  # For implementing random forest algorithm
  
# Loading package
library(caTools)
library(randomForest)
  
# Splitting data in train and test data
split <- sample.split(iris, SplitRatio = 0.7)
split
  
train <- subset(iris, split == "TRUE")
test <- subset(iris, split == "FALSE")
  
# Fitting Random Forest to the train dataset
set.seed(120)  # Setting seed
classifier_RF = randomForest(x = train[-5],
                             y = train$Species,
                             ntree = 500)
  
classifier_RF
  
# Predicting the Test set results
y_pred = predict(classifier_RF, newdata = test[-5])
  
# Confusion Matrix
confusion_mtx = table(test[, 5], y_pred)
confusion_mtx
  
# Plotting model
plot(classifier_RF)
  
# Importance plot
importance(classifier_RF)
  
# Variable importance plot
varImpPlot(classifier_RF)

输出:

  • 模型分类器_RF:

    模型中的树数为 500,没有。每次拆分时尝试的变量为 2。 setosa 中的分类误差为 0.000 即 0%,Versicolor 为 0.033 即 3.3%,Virginica 为 0.066 即 6.6%。

  • 混淆矩阵:

    因此,20 个 Setosa 被正确归类为 Setosa。在 23 个 versicolor 中,20 个 Versicolor 被正确归类为 Versicolor,3 个被归类为 virginica。 17 个Virginica 被正确归类为Virginica。

  • 模型图:

    错误率随着树数的增加而稳定。

  • 重要特点:

    Petal.Width是最重要的特征,其次是 Petal.Length、Sepal.Width 和 Sepal.Length。

  • 重要特征图:

    该图清楚地将 Petal.Width 显示为最重要的特征或变量,其次是 Petal.Length、Sepal.Width 和 Sepal.Length。

因此,随机森林是业界用于分类的强大算法。