我需要为使用随机森林(R包)时规范化(或缩放)数据吗?

104
我正在进行回归任务 - 我需要为randomForest(R包)归一化(或缩放)数据吗?同时,还需要对目标值进行规范化吗?如果需要- 我想使用caret包中的scale函数,但我找不到如何获取数据的方法(去缩放、非规范化)。你是否知道其他功能(在任何包中)可以帮助规范化/非规范化?谢谢,米兰。

7
scale函数不属于caret包,它是"base" R包的一部分。有一个unscale函数可以反转转换。 - IRTFM
5
我投票关闭此问题,因为它与[帮助中心]定义的编程无关,而是涉及机器学习的理论和/或方法 - 请参见machine-learning 标签信息中的简介和注意事项。 - desertnaut
当 Stack Exchange 关闭一个有 93 个赞和 39 个收藏的问题时,总是感觉很奇怪。 - Dr_Zaszuś
6个回答

113

不需要对随机森林进行缩放。

  • 随机森林的特性是收敛和数值精度问题,这些问题有时会使逻辑回归、线性回归以及神经网络中使用的算法出现问题,但在随机森林中并不重要。因此,在随机森林中您不需要像在神经网络中那样将变量转换为常见的标度。

  • 你不会得到类似于回归系数的东西,它衡量每个预测变量与响应之间的关系。因此,您也不需要考虑如何解释这些系数,这是受变量测量尺度影响的。


41
不仅不需要缩放,而且它可能会平滑模型的非线性特性。如果您在p维空间中具有复杂的非线性关系,并且已经转换了数据,当您反向转换y时,这些非线性关系不会反映在估计中。 - Jeffrey Evans
20
@JeffreyEvans,请您将您的精彩评论合并并发布为答案。否则,这将仅被所有人忽略。您说的是:“不仅没有必要,而且出于以下原因a) b) c)会有害......” - smci
2
我认为他的意思是,虽然没有必要,但如果你使用训练集定义的相同函数来缩放所有数据集(训练集和测试集),也不会有任何损害。 - Keith
猜猜看,在以下示例中,如果您有20个预测特征,其中15个在[0;10]范围内,另外5个会发生什么。 - Danylo Zherebetskyy
这不是取决于变量之间的比例差异吗?如果变量之间的比例差异很大,那么缩放特征可能会使树更短吧?如果使用最小-最大规范化而不是向量规范化,那么网络的拓扑结构也会不同,对吗? - user3546025

34

缩放是为了规范化数据,以便不给特定特征优先权。在基于距离的算法中和需要欧几里得距离的算法中,缩放的作用最为重要。

随机森林是基于树的模型,因此不需要进行特征缩放。

即使应用规范化,该算法也需要进行分区,结果仍将相同。


4
randomForest中,帮助页面和Vignette都没有建议对回归变量进行缩放的建议。在Stats Exchange的这个例子也没有使用缩放。
我的评论副本: scale函数不属于pkg:caret。它是“base”R包的一部分。在grtDMwR包中有一个unscale函数,可以反转转换,或者您可以简单地乘以比例属性,然后添加中心属性值。
你对为什么需要进行“标准化”的概念可能需要进行批判性的审查。非正态性检验仅在回归完成之后需要进行,并且如果在适合度方法论中没有正态性假设,则根本不需要进行。所以:你为什么要问?在SO和Stats.Exchange中搜索可能会证明有用:引文#1 ; 引文#2 ; 引文#3 boxcox函数是一种常用的转换方式,当您没有先前知识来确定分布时以及当您确实需要进行转换时使用。应用转换存在许多陷阱,因此您需要提出问题表明您可能需要进一步咨询或自学。

我理解我的问题中的规范化是将数据进行简单的线性转换,例如转换到0-1区间。这应该在使用神经网络时完成。所以当我提出问题时需要的已经被Hong Ooi回答了。我没有找到您建议的unscale函数。但还是感谢您的努力。 - gutompf
添加了引用来回答您的第二个问题。 - IRTFM
我道歉 - 我忽略了unscale是grt和DMwR包中的函数。 - gutompf
不用道歉。我制造了一个“虚假记忆”,认为它在“基础”中,并且在scale的帮助页面中提到过。你的跟进问题有助于纠正记录。 - IRTFM
2
@BondedDust:非常好的回答,但最后一段话有点不太友善。也许可以重新表述为“你需要学会在预测变量和响应变量上进行转换的时候和不需要进行转换的时候的区别”。 - smci

2

猜猜,在以下示例中会发生什么? 假设您有20个预测特征,其中18个在[0;10]范围内,另外2个在[0;1,000,000]范围内(来自实际示例)。问题1:随机森林将分配哪些特征重要性?问题2:缩放2个大范围特征后,特征重要性会发生什么变化?

缩放很重要。 随机森林比其他算法对缩放不太敏感,并且可以使用“粗略”缩放的特征。


1
随机森林不需要缩放。 - Patrick Stetz
9
如果只需要预测,那么常识是不需要缩放数据(决策树对线性变换不变)。然而,如果考虑到"特征重要性"、"特征选择"或"特征等",那么缩放和未缩放的数据将给出不同的与"特征"相关的结果。例如,请参见: 1)Strobl等人的研究"随机森林变量重要性测量中的偏差:示例、来源和解决方案",《BMC生物信息学》, 2007; 2)http://explained.ai/rf-importance/index.html。 - Danylo Zherebetskyy
旧的回答,但是:这是错误的,并且提供的链接没有关于特征缩放的内容。唯一提到缩放的是“重要性度量”,这完全不同。 - Hong Ooi

1
随机森林内在地使用信息增益/基尼系数,不像其他许多机器学习模型(如k-means聚类、PCA等)会受到缩放的影响。然而,它可能会“有争议地”加快收敛速度,正如其他答案中所提示的那样。

1

如果您要将交互添加到数据集中 - 即,新变量是其他变量的某个函数(通常是简单乘法),并且您不知道该新变量代表什么(无法解释它),那么您应该使用缩放变量来计算此变量。


7
随机森林是一种非线性模型,节点分裂统计学的本质考虑了高维交互作用。因此,试图定义交互变量是不必要且相当不可取的。 - Jeffrey Evans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接