分类和回归。当因变量 Y是分类变量时,是 分类; 当因变量 Y 是连续变量时,是 回归。自变量 X 可以是多个连续变量和多个分类变量的混合。在本文 3 个案例中, 判别分析和对有无数据的分析是分类问题, 对连续变量 Y的解释是回归问题。

1 背景

随机森林( random forest)模型是由Breiman和Cutler在2001年提出的一种基于分类树的算法。它通过对大量分类树的汇总提高了模型的预测精度,是取代神经网络等传统机器学习方法的新的模型。随机森林的运算速度很快,在处理大数据时表现优异。

随机森林不需要顾虑一般回归分析面临的多元共线性的问题,不用做变量选择。现有的随机森林软件包给出了所有变量的重要性。另外, 随机森林便于计算变量的非线性作用,而且可以体现变量间的交互作用( interaction)。 它对离群值也不敏感。 2 目的:本文通过3个案例,分别介绍了随机森林在昆虫种类的

判别分析、有无数据的分析(取代逻辑斯蒂回归) 和回归分析上的应用。案例的数据格式和R语言代码可为研究随机森林在分类与回归分析中的应用提供参考。 3 具体实例:

3.1 实例一:在判别分析中的应用

判别分析( discriminant analysis)是在因变量Y的几个分类水平明确的条件下,根据若干自变量判别每个观测值的类型归属问题的一种多变量统计分析方法。判别与分类在统计学概念上有所交叉,在本文中不强调两者的区别。案例 1 中有 3种昆虫( A、B 和 C) 形态接近,不过可以通过4个长度指标( L1、L2、L3 和 L4) 进行种类的识别。 具体数据格式如表 1:

R语言随机森林预测R2 r语言随机森林分类示例_最小平方误差判别matlab代码

R代码实现:

①建模过程

R语言随机森林预测R2 r语言随机森林分类示例_随机森林模型代码_02

②用新的数据进行检验

R语言随机森林预测R2 r语言随机森林分类示例_r语言随机森林_03


3.2 实例二:对有无数据的分析对于有或无、生或死、发生或不发生等二分变量的分析,

一般用逻辑斯蒂回归 (logisticregression) 的方法。 逻辑斯蒂回归实质上是对因变量Y作两个分类水平的判别。逻辑斯蒂回归对自变量的多元共线性非常敏感,要求自变量之间相互独立。随机森林则完全不需要这个前提条件。 Breiman 在2001年指出经典模型如逻辑斯蒂回归经常给出不可靠的结论,而随机森林准确而可靠。本实例以朱鹮为例,说明该方法的具体应用。朱鹮的巢址选择受环境变量的影响。 假设朱鹮选择一个地方营巢的概率取决于下列自变量:土地利用类型(森林、草地、灌丛或农田等)、海拔、坡度、温度、降水、人类干扰指数等。 该问题的因变量为朱鹮1981年2008年间的532个巢(有巢,Y=1), 以及在朱鹮巢区的系统选择的(等间距) 2538个点(无巢,Y=0)。

R代码实现:

①建模

R语言随机森林预测R2 r语言随机森林分类示例_R语言随机森林预测R2_04

运行结果:

R语言随机森林预测R2 r语言随机森林分类示例_最小平方误差判别matlab代码_05

②随机森林可以给出每个自变量对因变量的作用。下列R代码给出海拔对巢址选择的影响, 结果在图 2 中, 表示中等程度的海拔最适宜营巢。

R语言随机森林预测R2 r语言随机森林分类示例_最小平方误差判别matlab代码_06

运行结果:

R语言随机森林预测R2 r语言随机森林分类示例_R语言随机森林预测R2_07

③随机森林可以通过下列代码预测任何地点朱鹮营巢的概率(图3)

R语言随机森林预测R2 r语言随机森林分类示例_最小平方误差判别matlab代码_08

运行结果:

R语言随机森林预测R2 r语言随机森林分类示例_基于python的随机森林回归实现_09


3.3 实例三:回归分析

当因变量Y为连续变量时,随机森林通过一组自变量X对Y进行解释,类似经典的回归分析。案例3依旧以朱鹮为例,介绍随机森林在回归分析上的应用。朱鹮是依赖湿地的鸟类,其生境可以分为一个个相邻的集水区。每个集水区内朱鹮的巢数同集水区的环境变量相关。用环境变量(包括连续变量和分类变量两个类型) 解释集水区内朱鹮的巢数,可以被看作为一个回归的问题。

R代码实现:

①导入数据

R语言随机森林预测R2 r语言随机森林分类示例_r语言随机森林_10

运行结果:

R语言随机森林预测R2 r语言随机森林分类示例_基于python的随机森林回归实现_11

②对于缺失数据,R语言的 randomForest 软件包通过na.roughfix函数用中位数(对于连续变量)或众数(对于分类变量)来进行替换。

R语言随机森林预测R2 r语言随机森林分类示例_r语言随机森林_12

运行结果:

R语言随机森林预测R2 r语言随机森林分类示例_最小平方误差判别matlab代码_13

mtry指定分类树每个节点用来二分数据的自变量的个数。如果mtry 没有被指定,随机森林用缺省值。对于分类(判别)分析(Y是分类变量),缺省值是自变量总数的平方根; 如果是回归分析(Y是连续变量),缺省值是自变量总数的1 /3。