转载

原文链接:http://www.analyticsvidhya.com/blog/2015/09/random-forest-algorithm-multiple-challenges/

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

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

随机森林的发展史

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

什么是随机森林?

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

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

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

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

Python

#Import Library
fromsklearn.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<- cbind(x_train,y_train)
# Fitting model
fit<- randomForest(Species ~ ., x,ntree=500)
summary(fit)
#Predict Output
predicted= predict(fit,x_test)

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

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

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

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

2.如果有M个输入变量,每个节点都将随机选择m(m<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!!! vai:数据工匠

首页 干货教程 大数据动向 大数据应用 数据可视化 数据分析 投资并购 企业专区 注册 登录 随机森林入门攻略(内含R、Python代码)相关推荐

  1. python bokeh教程_手把手教你用Bokeh进行可视化数据分析(附源码)

    Bokeh与Python可视化领域中的流行库Matplotlib和Seaborn不同,它使用HTML和JavaScript渲染其图形,这使得它在构建基于Web的应用中成为一个非常理想的候选者.它对于探 ...

  2. 【干货教程】无人机航测倾斜模型DEM数据如何提取高程点导入CAD进行应用?

    测绘单位,施工单位在使用CAD的过程当中,往往需要基于高精度无人机航测成果数据进行高程点提取,以生 成等高线或者作为地形参考点在设计中应用,图新地球桌面端可以方便的通过简单的打点.划线.画面的方式,还 ...

  3. python大数据之随机森林(回归与分类)

    随机森林在大数据运用中非常的常见,它在预测和回归上相比于SVM,多元线性回归,逻辑回归,多项式回归这些,有着比较好的鲁棒性. 随机森林是一个用随机方式建立的,包含多个决策树的分类器.其输出的类别是由各 ...

  4. sklearn 3. 实例:随机森林在乳腺癌数据上的调参

    .这一节,我们就来使用我们刚才学的,基于方差和偏差的调参方法,在乳腺癌数据上进行一次随 机森林的调参.乳腺癌数据是sklearn自带的分类数据之一. 案例中,往往使用真实数据,为什么我们要使用skle ...

  5. web前端期末大作业(月饼美食网站) html+css+javascript网页设计实例 企业网站制作...

    web前端期末大作业(月饼美食网站) html+css+javascript网页设计实例 企业网站制作 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手? ...

  6. 打通数据价值链,百分点数据科学基础平台实现数据到决策的价值转换 | 爱分析调研

    随着企业数据规模的大幅增长,如何利用数据.充分挖掘数据价值,服务于企业经营管理成为当下企业数字化转型的关键. 如何挖掘数据价值?企业需要一步步完成数据价值链条的多个环节,如数据集成.数据治理.数据建模 ...

  7. web前端期末大作业(月饼美食网站) html+css+javascript网页设计实例 企业网站制作

    web前端期末大作业(月饼美食网站) html+css+javascript网页设计实例 企业网站制作 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手? ...

  8. GEE:随机森林分类教程(样本制作、特征添加、训练、精度、参数优化、贡献度、统计面积)

    作者: _养乐多_ 本文将介绍在Google Earth Engine (GEE)平台上进行随机森林分类的方法和代码,其中包括制作样本点教程(本地.在线和本地在线混合制作样本点,合并样本点等),加入特 ...

  9. 福利 | 16场精选活动干货、精华笔记、课件分享:数据派独家讲座干货大合集

    数据派一直致力于打造数据科学人才聚集地,传播数据科学知识,分享前沿科技动态,分析应用案例,组织线下活动.近期数据派开设"福利"专栏,将在每周日晚推送往期文章干货大合集,欢迎关注.本 ...

最新文章

  1. tensorflow+numpy 深度学习相关函数(持续更新)
  2. 向MIP开源项目提交Issues
  3. MFC之CString与const char* string 转换
  4. 玩转 Java8 Stream,常用方法大合集
  5. 解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题
  6. ssl介绍以及双向认证和单向认证原理
  7. 函数自执行-一元运算符
  8. java 新手入门电子书_3款针对初学者的免费Java电子书
  9. Win7系统安装samba服务器,Win7 VirtualBox samba 服务器搭建
  10. DecoupleSegNet结构解读
  11. 视频大数据与物联网(IoT)融合发展的探索
  12. PAT Deepest Root
  13. 如何防止条码流水号打印出现重码漏码错码的防呆检错系统?
  14. 强固型宽温AM5728监测高铁受电弓视频方案评估
  15. java 翻译 go语言_cgo 和 Go 语言是两码事【已翻译100%】...
  16. 计算机算法在生物信息学中的应用,引力场算法及其在生物信息学中的应用
  17. 深度学习 - 其本质是什么?
  18. 死亡之雨新的僵尸病毒中文破解版 v1.0绿色免安装版
  19. 【SpringBoot】SpringBoot+Zookeeper+Dubbo整合
  20. oracle weblogic开启,菜鸟经验:oracle与weblogic自动启动与停止

热门文章

  1. 思杰虚拟服务器退出管理主机,详解Citrix思杰XenServer虚拟化(8)
  2. 终于有人把 Docker 讲清楚了,别再说不会 Docker 了!
  3. 使用Sentinel Dashboard监控项目流量
  4. 小学数学动画 android,小学数学课堂app下载-小学数学课堂 安卓版v2.2.0-PC6安卓网...
  5. Qt学习 第21节:窗口初始化EVENT
  6. android内容提供者实验报告,实验报告审核的19个要点
  7. MATLAB下配置C和C++编译器(MinGW)
  8. 【盘点】值得推荐的优质文章!
  9. 人生苦短,用Python爬取迅雷电影天堂最新电影ed2k
  10. 孙振耀给职场人士的几个经典