天天看点

随机森林回归应用中遇到的问题二、某个特征的取值减少后,效果会变好??三、随机森林总结

随机森林算法的应用

本人在做kaggle的house prices题目时用到了随机森林回归的算法,遇到了一些问题,现在记录下来。

  • 随机森立对于线性相关的特征是否有影响?
  • 特征简化后效果会变好,为什么?

随机森林算法原理见http://www.zilhua.com/629.html。

一、线性相关性

随机森林对多元共线性不敏感,结果对缺失数据和非平衡的数据比较稳健,可以很好地预测多达几千个解释变量的作用(Breiman 2001b),被誉为当前最好的算法之一(Iverson et al. 2008)。

在做实验室的时候会发现当有线性相关的特征时,选其中一个特征和同时选择两个特征的效果是一样的,即随机森林对多元共线不敏感。

在回归分析中,当自变量之间出现多重共线性现象时,常会严重影响到参数估计,扩大模型误差,并破坏模型的稳健性,因此消除多重共线性成为回归分析中参数估计的一个重要环节。现在常用的解决多元线性回归中多重共线性的回归模型有岭回归(Ridge Regression)、主成分回归(Principal Component Regression简记为PCR)和偏最小二乘回归(Partial Least Square Regression简记为PLS)。

逻辑斯蒂回归对自变量的多元共线性非常敏感,要求自变量之间相互独立。随机森林则完全不需要这个前提条件。

原因分析:随机森林为什么对多元共线不敏感?

个人猜想:因为随机森林算法对特征进行了采样,可能线性相关的特征并没有在同一棵树中。

二、某个特征的取值减少后,效果会变好??

例如:feature1 原始的取值为1-10的10个取值,现在把feature1 特征简化为(1,2,3) 3个取值;则应用feature2的效果要更好一些。应用feature1和feature2一起,则和只应用feature2的效果一样(这是因为随机森林对多元共线不敏感)。

原因分析:

没有找到合理的解释,可能只是在这个数据集中有了这样的结果。不过特征简化后,可以达到减少计算量的效果。

三、随机森林总结

1.随机森林的优点是:

  1. 它的学习过程很快。在处理很大的数据时,它依旧非常高效。
  2. 随机森林可以处理大量的多达几千个的自变量(Breiman,2001)。
  3. 现有的随机森林算法评估所有变量的重要性,而不需要顾虑一般回归问题面临的多元共线性的问题。
  4. 它包含估计缺失值的算法,如果有一部分的资料遗失,仍可以维持一定的准确度。
  5. 随机森林中分类树的算法自然地包括了变量的交互作用(interaction)(Cutler, et

    al.,2007),即X1的变化导致X2对Y的作用发生改变。交互作用在其他模型中(如逻辑斯蒂回归)因其复杂性经常被忽略。

  6. 随机森林对离群值不敏感,在随机干扰较多的情况下表现稳健。
  7. 随机森林不易产生对数据的过度拟合(overfit)(Breiman,2001),然而这点尚有争议(Elith and

    Graham,2009)。

随机森林通过袋外误差(out-of-bag error)估计模型的误差。对于分类问题,误差是分类的错误率;对于回归问题,误差是残差的方差。随机森林的每棵分类树,都是对原始记录进行有放回的重抽样后生成的。每次重抽样大约1/3的记录没有被抽取(Liaw,2012)。没有被抽取的自然形成一个对照数据集。所以随机森林不需要另外预留部分数据做交叉验证,其本身的算法类似交叉验证,而且袋外误差是对预测误差的无偏估计(Breiman,2001)。

2.随机森林的缺点:

  1. 随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。
  2. 对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。
  3. 是它的算法倾向于观测值较多的类别(如果昆虫B的记录较多,而且昆虫A、B和C间的差距不大,预测值会倾向于B)。
  4. 另外,**随机森林中水平较多的分类属性的自变量(如土地利用类型 >

    20个类别)比水平较少的分类属性的自变量(气候区类型<10个类别)对模型的影响大**(Deng et

    al.,2011)。总之,随机森林功能强大而又简单易用,相信它会对各行各业的数据分析产生积极的推动作用。

以上仅是个人的一些总结,如果大家有更好的想法的话可以讨论交流下~~

继续阅读