R语言 随机森林方法

R语言 随机森林方法

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

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

理论

随机森林从观测值中提取随机样本,随机初始变量(列)并试图建立一个模型。随机森林的算法如下。

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

例子:

考虑一个由苹果、橙子和樱桃三种水果组成的水果箱的训练数据,即n=3。我们要预测的是水果箱中数量最多的水果。一个使用训练数据的随机森林模型,树的数量为k=3。

R编程中的随机森林方法

该模型使用数据的各种特征进行判断,即直径、颜色、形状和群体。在橙子、欢快和橘子中,橙子被随机森林选为水果箱中的最大数量。

数据集

鸢尾花 数据集由3种鸢尾花(Iris setosa, Iris virginica, Iris versicolor)各50个样本组成,是英国统计学家和生物学家Ronald Fisher在其1936年的论文 《在分类学问题中使用多种测量方法 》中介绍的多变量数据集 从每个样本中测量了四个特征,即萼片和花瓣的长度和宽度,根据这四个特征的组合,费雪建立了一个线性判别模型来区分物种。

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

R编程中的随机森林方法

在数据集上执行随机森林

在包括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)
R

输出

  • 模型分类_RF:

    R编程中的随机森林方法

模型中树的数量为500棵,在每个分割中尝试的变量数量为2。Setosa的分类误差为0.000即0%,Versicolor为0.033即3.3%,Virginica为0.066即6.6%。

  • 混淆矩阵:

    R编程中的随机森林方法

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

  • 模型的图示:

    R编程中的随机森林方法

错误率随着树木数量的增加而稳定下来。

  • 重要特征:

    R编程中的随机森林方法

花瓣.宽度 是最重要的特征,其次是花瓣.长度、萼片.宽度和萼片.长度。

  • 重要特征图:

    R编程中的随机森林方法

该图清楚地显示花瓣.宽度是最重要的特征或变量,其次是花瓣.长度、萼片.宽度和萼片.长度。

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册