简介

近年来,随机森林模型在界内的关注度与受欢迎程度有着显著的提升,这多半归功于它可以快速地被应用到几乎任何的数据科学问题中去,从而使人们能够高效快捷地获得第一组基准测试结果。在各种各样的问题中,随机森林一次又一次地展示出令人难以置信的强大,而与此同时它又是如此的方便实用。

需要大家注意的是,在上文中特别提到的是第一组测试结果,而非所有的结果,这是因为随机森林方法固然也有自己的局限性。在这篇文章中,我们将向你介绍运用随机森林构建预测模型时最令人感兴趣的几个方面。

随机森林的发展史

谈及随机森林算法的产生与发展,我们必须回溯到20世纪80年代。可以说,该算法是Leo Breiman, Adele Cutler, Ho Tin Kam, Dietterich, Amit和Geman这几位大师呕心沥血的共同结晶,他们中的每个人都对随机森林算法的早期发展作出了重要的贡献。Leo Breiman和 Adele Cutler最早提出了执行随机森里的关键算法,这一算法也成为了他们的专利之一。Amit, Gemen和Ho Tim Kam各自独立地介绍了特征随即选择的思想,并且运用了Breiman的“套袋”思想构建了控制方差的决策树集合。在此之后,Deitterich在模型中引入了随即节点优化的思想,对随机森里进行了进一步完善。

Leo Breiman

什么是随机森林?

随机森林是一种多功能的机器学习算法,能够执行回归和分类的任务。同时,它也是一种数据降维手段,用于处理缺失值、异常值以及其他数据探索中的重要步骤,并取得了不错的成效。另外,它还担任了集成学习中的重要方法,在将几个低效模型整合为一个高效模型时大显身手。

在随机森林中,我们将生成很多的决策树,并不像在CART模型里一样只生成唯一的树。当在基于某些属性对一个新的对象进行分类判别时,随机森林中的每一棵树都会给出自己的分类选择,并由此进行“投票”,森林整体的输出结果将会是票数最多的分类选项;而在回归问题中,随机森林的输出将会是所有决策树输出的平均值。

随机森林在Python和R中的实现

随机森林在R packages和Python scikit-learn中的实现是当下非常流行的,下列是在R和Python中载入随机森林模型的具体代码:

Python

#Import Library

from sklearn.ensemble import RandomForestClassifier #use RandomForestRegressor for regression problem#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset#Create Random Forest object

model= RandomForestClassifier(n_estimators=1000)#Train the model using the training sets and check score

model.fit(X, y)#Predict Output

predicted= model.predict(x_test)

R Code

library(randomForest)

x

fit

summary(fit)#Predict Output

predicted= predict(fit,x_test)

好了,现在我们已经了解了运行随机森林算法的代码,接下来让我们看看这个算法本身的运作方式是什么样的吧!

随机森林算法是如何工作的?

在随机森林中,每一个决策树“种植”和“生长”的规则如下所示:

1.假设我们设定训练集中的样本个数为N,然后通过有重置的重复多次抽样来获得这N个样本,这样的抽样结果将作为我们生成决策树的训练集;

2.如果有M个输入变量,每个节点都将随机选择m(m

3.每棵决策树都最大可能地进行生长而不进行剪枝;

4.通过对所有的决策树进行加总来预测新的数据(在分类时采用多数投票,在回归时采用平均)。

随机森林的优点与缺点

优点:

1.正如上文所述,随机森林算法能解决分类与回归两种类型的问题,并在这两个方面都有相当好的估计表现;

2.随机森林对于高维数据集的处理能力令人兴奋,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。此外,该模型能够输出变量的重要性程度,这是一个非常便利的功能。下图展示了随机森林对于变量重要性程度的输出形式:

3.在对缺失数据进行估计时,随机森林是一个十分有效的方法。就算存在大量的数据缺失,随机森林也能较好地保持精确性;

4.当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法;

5.模型的上述性能可以被扩展运用到未标记的数据集中,用于引导无监督聚类、数据透视和异常检测;

6.随机森林算法中包含了对输入数据的重复自抽样过程,即所谓的bootstrap抽样。这样一来,数据集中大约三分之一将没有用于模型的训练而是用于测试,这样的数据被称为out of bag samples,通过这些样本估计的误差被称为out of bag error。研究表明,这种out of bag方法的与测试集规模同训练集一致的估计方法有着相同的精确程度,因此在随机森林中我们无需再对测试集进行另外的设置。

缺点:

1.随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。

2.对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。

调整随机森林模型中的参数

到目前为止,我们已经对整个随机森林模型进行了基本的了解,与此同时,对于模型中各种参数的调整与修改也十分重要,下列为python scikit-learn中随机森林模型的语法:

classsklearn.ensemble.RandomForestClassifier(

n_estimators=10,

criterion='gini',

max_depth=None,

min_samples_split=2,

min_samples_leaf=1,

min_weight_fraction_leaf=0.0,

max_features='auto',

max_leaf_nodes=None,

bootstrap=True,

oob_score=False,

n_jobs=1,

random_state=None,

verbose=0,

warm_start=False,

class_weight=None)

具体的参数说明这里不再赘述,大家可以到scikit-learn.org的3.2.4.3.1章节进行查看。

这些参数在调节随机森林模型的准确性方面起着至关重要的作用。科学地使用这些指标,将能显著的提高模型工作效率。

结束语

在本文中,我们介绍了最常用的机器学习算法之一——随机森林,并对它的优缺点以及参数调整进行了说明,我们非常推荐大家在日常分析中使用随机森林,并通过参数调整进一步了解这个模型的分析能力。

原文作者:SUNIL RAY

翻译:SDCry!!!

python模型训练 warm_start_随机森林入门攻略(内含R、Python代码)相关推荐

  1. R语言实战应用精讲50篇(二十七)-R语言实现随机森林(附R语言代码)

    随机森林回归 回归问题指的是因变量或者被预测变量是连续性变量的情形,比如预测身高体重的具体数值是多少的情形.整个代码大致可以分为包.数据.模型.预测评估4个部分,接下来逐一解读. 1.包部分,也就是加 ...

  2. matlab 随机森林算法_(六)如何利用Python从头开始实现随机森林算法

    博客地址:https://blog.csdn.net/CoderPai/article/details/96499505 点击阅读原文,更好的阅读体验 CoderPai 是一个专注于人工智能在量化交易 ...

  3. gbdt 算法比随机森林容易_用Python实现随机森林算法

    CDA数据分析师 出品 拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱.bagging(bootstrap aggregating 的缩写)算法从训练数据 ...

  4. python随机森林库_随机森林库:R和Python中的不同结果

    下面的代码用R和python训练一个随机森林模型.正如您所注意到的,R(1-0.27=0.73)中的精度要比Python中的(0.69)好.此外,特性在R和Python中的重要性是不同的.在 [EDI ...

  5. 随机森林分类算法python代码_随机森林的原理及Python代码实现

    原标题:随机森林的原理及Python代码实现 最近在做kaggle的时候,发现随机森林这个算法在分类问题上效果十分的好,大多数情况下效果远要比svm,log回归,knn等算法效果好.因此想琢磨琢磨这个 ...

  6. Python进行决策树和随机森林

    Python进行决策树和随机森林 一.决策树 第一步,导入库: 第二步,导入数据: 第三步,数据预处理: 第四步,决策树: 第五步,决策树评价: 第六步,生成决策树图. 二.随机森林 第一步,随机森林 ...

  7. 集成树模型系列之一——随机森林

    集成树模型系列之一--随机森林 随机森林一般会被认为集成树模型的开端,虽然现在工业或者比赛中都很少会被应用,但是我们学习集成树模型都绕不过它,它的一些思想被广泛地应用到后面的集成树模型中. 随机森林这 ...

  8. python与GIS数据处理——随机森林算法插值

    背景 这个是我系列插值文章的第三篇,使用机器学习插值(使用随机森林算法插值). 代码链接 代码我已经放在Github上面了,免费分享使用,https://github.com/yuanzhoulvpi ...

  9. Python 利用SVM,KNN,随机森林进行预测

    Python 利用SVM,KNN,随机森林进行预测 工具:Pycharm,Win10,Python3.6.4 上图是我们的数据文件,最后一列是附近有无超市的标签,1代表有,-1代表没有.可以发现数据维 ...

最新文章

  1. 【转载】C#扫盲之:==/Equals /ReferenceEquals 异同的总结,相等性你真的知道吗?
  2. Yii2 中cookie的用法(2)
  3. QML使用Python的函数
  4. 一些在数字化转型的方面的公司和例子
  5. 20140328项目日志
  6. 我新买的红米手机,新浪和360浏览器都能进,也能看电视,就是不能上手机QQ和微信...
  7. 用java实现 两个工具和一个copy功能
  8. kubernetes对象之deployment
  9. 一步步编写操作系统4 安装x86虚拟机 bochs
  10. 链路两段不同网段怎么通信_交换机互联不同vlan及不同网段通信问题总结
  11. 【状压dp】AC Challenge
  12. @程序员,React 使用如何避坑?
  13. 使用CXF开发WebService程序的总结(七):Spring+CXF+Mybatis+Mysql共同打造的服务端示例...
  14. linux cximage动态库,64位Linux编译cximage手记
  15. MAC CPU温度监视及风扇速度控制软件
  16. Android Studio的安装与配置
  17. Lonlife-ACM 1005 - Spoon Devil's RP Test(同余定理)——“玲珑杯”acm比赛-试运行赛
  18. 多多情报通:拼多多推广账户金额可以通用吗?里面钱可以提出来吗?
  19. 如何获得FLV视频下载地址并下载
  20. 【阿里天猫精灵专题】TB-02 RGB冷暖灯控制

热门文章

  1. GDA 和logistic回归的联系
  2. 瑞星微RK3288 核心板
  3. 拒绝洗脑式广告,无限重复洗脑式广告应该受到谴责。怎么有效抵制这类广告?...
  4. Oracle使用json后乱码,nodejs读取本地中文json文件出现乱码解决方法
  5. 抽丝剥茧——调停者和门面设计模式
  6. Web系统测试中的重点
  7. 再寄小读者之一:关于读书
  8. 全部实行“申请―考核”制!北京师范大学博士招生明确规定!
  9. 线程进程计算之多任务同步进行
  10. 张勋说:简述棒磨机的工作运行原理和磨损机制(图文)