科学网

您所在的位置:网站首页 随机森林相关性分析 科学网

科学网

2024-07-17 22:09| 来源: 网络整理| 查看: 265

用随机森林模型替代常用的回归和分类模型

已有 91783 次阅读 2013-9-27 16:57 |系统分类:教学心得| 分类, 模型, 回归, 随机森林

随机森林模型有着惊人的准确性,可以替代一般线性模型(线性回归、方差分析等)和广义线性模型(逻辑斯蒂回归、泊松回归等)等等。

 

我2012年在人民大学组织的R语言会议上介绍了随机森林的用法(报告文件在http://cos.name/wp-content/uploads/2012/05/17-lixinhai-random-forest.pdf)。以后不时有人给我写信交流模型使用心得,索要数据和代码。我感觉当时的介绍不太充分。正巧《应用昆虫学报》的主编戈峰老师邀我写一篇统计方法的稿件,我便把随机森林的基本原理和应用案例重新细化,形成一篇文章(http://www.ent-bull.com.cn/viewmulu.aspx?qi_id=1031&mid=31191&xuhao=42)。文章的R语言代码显示效果不好(没有颜色,断行多),我便把文章和代码放到这个博客上。

 

文章正文(引用:李欣海.  2013. 随机森林模型在分类与回归分析中的应用. 应用昆虫学报, 50, 1190-1197)

 

前言

   随机森林(Random Forest)是一种基于分类树(classification tree)的算法(Breiman,2001)。这个算法需要模拟和迭代,被归类为机器学习中的一种方法。经典的机器学习模型是神经网络(Hopfield,1982),有半个多世纪的历史了。神经网络预测精确,但是计算量很大。上世纪八十年代Breiman等人发明了分类和回归树(Classification and Regression Tree

简称CART)的算法(Breimanet al.,1984),通过反复二分数据进行分类或回归,计算量大大降低。2001年Breiman和Cutler借鉴贝尔实验室的Ho所提出的随机决策森林(random decision forests)(Ho,1995,1998)的方法,把分类树组合成随机森林(Breiman,2001),即在变量(列)的使用和数据(行)的使用上进行随机化,生成很多分类树,再汇总分类树的结果。后来Breiman在机器学习杂志上发表了他和Cutler设计的随机森林的算法(Breiman,2001)。这篇文章被大量引用(根据Google Scholar,该文章至2013年被引用9000多次),成为机器学习领域的一个里程碑。

随机森林在运算量没有显著提高的前提下提高了预测精度。随机森林对多元公线性不敏感,结果对缺失数据和非平衡的数据比较稳健,可以很好地预测多达几千个解释变量的作用(Breiman,2001),被誉为当前最好的算法之一(Iverson et al.,2008)。在机器学习的诸多算法中,随机森林因高效而准确而备受关注,在各行各业得到越来越多的应用(e.g Cutler et al.,2007;Genueret al.,2010)。

随机森林的算法最初以FORTRUN语言编码(Liaw,2012)。现在可以通过R语言或SAS等工具实现。R语言是一种用于统计分析和绘图的语言和操作环境(R Development Core Team,2013)。它是自由、免费、源代码开放的软件,近年来已经成为国际学术领域应用最广的统计工具。在国内,R语言也在迅速普及。本文基于R语言介绍随机森林的应用。R语言中有两个软件包可以运行随机森林,分别是randomForest(Liaw,2012)和party。本文介绍randomForest的用法。

   本文面向没有或只有初步R语言基础的生态学工作者,以三个案例,通过运行案例中给出的R语言代码,读者可以运行随机森林的算法,进行分类或回归分析,得到变量的重要性、模型的误差等指标,并可以进行预测。Breiman发表随机森林后,有若干文章深入探讨其算法(Biau,2012),变量的比较(Archer and Kirnes,2008;Groemping,2009)和变量间的交互作用(Winham et al.,2012)等。本文旨在介绍随机森林的应用方法,不涉及其本身的算法,也不涉及同其他平行方法的比较。 

 

1 随机森林的原理

 同其他模型一样,随机森林可以解释若干自变量(X1、X2、...、Xk)对因变量Y的作用。如果因变量Y有n个观测值,有k个自变量与之相关;在构建分类树的时候,随机森林会随机地在原数据中重新选择n个观测值,其中有的观测值被选择多次,有的没有被选到,这是Bootstrap重新抽样的方法。同时,随机森林随机地从k个自变量选择部分变量进行分类树节点的确定。这样,每次构建的分类树都可能不一样。一般情况下,随机森林随机地生成几百个至几千个分类树,然后选择重复程度最高的树作为最终结果(Breiman,2001)。

 

2 随机森林的应用

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

 

2.1  在判别分析中的应用

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

 

表1   3种昆虫及其用于分类的4个量度指标

Table 1  The four length indices for classifying threeinsect species

物种Species

量度(Length)

L1

L2

L3

L4

A

16

27

31

33

A

15

23

30

30

A

16

27

27

26

A

18

20

25

23

A

15

15

31

32

A

15

32

32

15

A

12

15

16

31

B

8

23

23

11

B

7

24

25

12

B

6

25

23

10

B

8

45

24

15

B

9

28

15

12

B

5

32

31

11

C

22

23

12

42

C

25

25

14

60

C

34

25

16

52

C

30

23

21

54

C

25

20

11

55

C

30

23

21

54

C

25

20

11

55

 

通过运行下列R语言代码,可以得到随机森林的结果RF1。R语言中的“#”表示注释,其后面的语句不被执行。当随机森林用于分类时,其结果RF1包含混淆矩阵(confusionmatrix)(表2),显示判别分析的错误率。

install.packages("randomForest") #安装随机森林程序包(每台计算机只需安装一次)

library(randomForest)  #调用随机森林程序包(每次运行都要调用)

insect IP: 159.226.67.*



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3