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。
因此,随机森林是业界用于分类的强大算法。