• 本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!
  • ​个人主页:有梦想的程序星空
  • ​个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰富的软件系统、人工智能算法服务的研究和开发经验。
  • ​如果文章对你有帮助,欢迎关注点赞收藏订阅。

1、集成学习介绍

常言道:“一个篱笆三个桩,一个好汉三个帮”。集成学习模型便是综合考量多个学习器的预测结果,从而做出决策。集成学习通过训练学习出多个估计器,当需要预测时通过结合器将多个估计器的结果整合起来当作最后的结果输出。

集成学习分两种:

(1)模型之间彼此存在依赖关系,按一定的次序搭建多个分类模型,一般后一个模型的加入都需要对现有的集成模型有一定贡献,进而不断提高更新过后的集成模型性能,并借助多个弱分类器搭建出强分类器。代表有Boosting(AdaBoost)算法

(2)模型之间彼此不存在依赖关系,彼此独立。利用相同的训练数据同时搭建多个独立的分类模型,然后通过投票的方式,以少数服从多数的原则做出最终的分类决策。例如:Bagging(随机森林)

集成学习的优势是提升了单个估计器的通用性与鲁棒性,比单个估计器拥有更好的预测性能。集成学习的另一个特点是能方便的进行并行化操作。

2、Bagging算法

Bagging 算法是一种集成学习算法,其全称为自助聚集算法(Bootstrap aggregating),顾名思义算法由 Bootstrap 与 Aggregating 两部分组成。

算法的具体步骤为:

假设有一个大小为 N 的训练数据集,每次从该数据集中有放回的取选出大小为 M 的子数据集,一共选 K 次,根据这 K 个子数据集,训练学习出 K 个模型。

当要预测的时候,使用这 K 个模型进行预测,再通过取平均值或者多数分类的方式,得到最后的预测结果。

3、决策树与随机森林

决策树算法有这几种:ID3、C4.5、CART,基于决策树的算法有:随机森林、GBDT等。

决策树是一种利用树形结构进行决策的算法,对于样本数据根据已知条件或叫特征进行分叉,最终建立一棵树,树的叶子结节标识最终决策。新来的数据便可以根据这棵树进行判断。

随机森林是在决策树的基础上衍生出来的。随机森林是一种通过多棵决策树进行优化决策的算法。决策树和随机森林的关系就是树和森林的关系。通过对原始训练样本的抽样,以及对特征节点的选择,我们可以得到许多棵不同的树。

4、随机森林的原理

        随机森林由Leo Breiman(2001)提出的一种分类算法,它通过自助法(bootstrap)重采样技术,从原始训练样本集N中有放回地重复随机抽取n个样本生成新的训练样本集合训练决策树,然后按以上步骤生成m棵决策树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于独立抽取的样本。

单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样本可以通过每一棵树的分类结果经统计后选择最可能的分类。

假设训练集 T 的大小为 N ,特征数目为 M ,随机森林的树的数量为 K ,随机森林算法的具体步骤如下:

重复下面步骤 K 次,即生成K棵决策树,形成随机森林:第一步:从训练集 T 中有放回抽样的方式,取样N 次形成一个新子训练集 D;第二步:随机选择 m 个特征,其中 m < M;第三步:使用新的训练集 D 和 m 个特征,学习出一个完整的决策树(一般是CART);

随机森林的随机性主要体现在两个方面:

数据集的随机选取。
每棵树所使用特征的随机选取。

以上两个随机性使得随机森林中的决策树都能够彼此不同,提升系统的多样性,从而提升分类性能。

5、随机森林的优缺点

  • 优点

1)实现简单,泛化能力强,可以并行实现,因为训练时树与树之间是相互独立的;
2)相比单一决策树,能学习到特征之间的相互影响,且不容易过拟合;
3)能直接特征很多的高维数据,因为在训练过程中依旧会从这些特征中随机选取部分特征用来训练;
4)相比SVM,不是很怕特征缺失,因为待选特征也是随机选取;
5)训练完成后可以给出特征重要性。当然,这个优点主要来源于决策树。因为决策树在训练过程中会计算熵或者是基尼系数,越往树的根部,特征越重要。
  • 缺点

1)在噪声过大的分类和处理回归问题时还是容易过拟合;
2)相比于单一决策树,它的随机性让我们难以对模型进行解释。

6、Python代码实现

scikit-learn实现随机森林分类:

from sklearn.ensemble import RandomForestClassifier# 随机森林分类器
clf = RandomForestClassifier(n_estimators = 100, random_state = 0)
# 拟合数据集
clf = clf.fit(X, y)

关注微信公众号【有梦想的程序星空】,了解软件系统和人工智能算法领域的前沿知识,让我们一起学习、一起进步吧!

【随机森林】深入浅出讲解随机森林算法相关推荐

  1. 决策树与剪枝、bagging与随机森林、极端随机树、Adaboost、GBDT算法原理详解

    目录 1.决策树 1.1 ID3 1.2 C4.5 1.3 CART 1.4 预剪枝和后剪枝 2 bagging与随机森林 2.1 bagging 2.2 随机森林 3 极端随机树 4 GBDT 5 ...

  2. 集成学习、Bagging算法、Bagging+Pasting、随机森林、极端随机树集成(Extra-trees)、特征重要度、包外评估

    集成学习.Bagging算法.Bagging+Pasting.随机森林.极端随机树集成(Extra-trees).特征重要度.包外评估 目录

  3. 独家 | 决策树VS随机森林——应该使用哪种算法?(附代码链接)

    作者:Abhishek Sharma 翻译:陈超 校对:丁楠雅 本文长度为4600字,建议阅读20分钟 本文以银行贷款数据为案例,对是否批准顾客贷款申请的决策过程进行了算法构建,并对比了决策树与随机森 ...

  4. ML之回归预测:利用十类机器学习算法(线性回归、kNN、SVM、决策树、随机森林、极端随机树、SGD、提升树、LightGBM、XGBoost)对波士顿数据集回归预测(模型评估、推理并导到csv)

    ML之回归预测:利用十类机器学习算法(线性回归.kNN.SVM.决策树.随机森林.极端随机树.SGD.提升树.LightGBM.XGBoost)对波士顿数据集[13+1,506]回归预测(模型评估.推 ...

  5. 12_信息熵,信息熵公式,信息增益,决策树、常见决策树使用的算法、决策树的流程、决策树API、决策树案例、随机森林、随机森林的构建过程、随机森林API、随机森林的优缺点、随机森林案例

    1 信息熵 以下来自:https://www.zhihu.com/question/22178202/answer/161732605 1.2 信息熵的公式 先抛出信息熵公式如下: 1.2 信息熵 信 ...

  6. python随机森林库_随机森林算法入门(python)

    目录 1 什么是随机森林 1.1 集成学习 1.2 随机决策树 1.3 随机森林 1.4 投票 2 为什么要用它 3 使用方法 3.1 变量选择 3.2 分类 3.3 回归 4 一个简单的Python ...

  7. 随机森林(Random Forest)算法原理

    随机森林(Random Forest)算法原理 集成学习(Ensemble)思想.自助法(bootstrap)与bagging **集成学习(ensemble)**思想是为了解决单个模型或者某一组参数 ...

  8. 随机森林 html5,利用随机森林回归算法预测总有机碳含量

    受美国"页岩气革命"的影响,页岩气勘探受到了大量的关注( 现有利用测井曲线预测TOC的方法有4类:①利用单曲线或多曲线建立回归关系的预测方法,如利用密度曲线(DEN)预测TOC.利 ...

  9. 随机森林 c语言,随机森林算法有哪些优缺点

    什么是随机森林算法?随机森林算法有哪些优缺点?随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法,随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因 ...

  10. 通俗易懂的讲解随机森林

    随机森林 随机森林 前言 什么是随机森林? 随机森林都能干啥? 如何实现随机森林 随机森林算法的注意点 随机森林 前言 随机森林是大家在接触机器学习中大概率第一个接触的算法,随机森林有着比其它算法更多 ...

最新文章

  1. C# 在用户控件中添加自定义事件
  2. “TI门外汉”网路知识笔记七 快速以太网通道
  3. UART, SPI, IIC的详解及三者的区别和联系
  4. 用css如何写正方体,css正方体实现--(transform练习)
  5. VTK:绘制BlankPoint空白点用法实战
  6. Qt Creator编辑2D内容
  7. 记录 之 tensorflow 常用函数:tf.split(),tf.clip_by_value() 和 tf.cond()
  8. C# CKEditor、CKFinder集成使用
  9. python的for语句写新的字符串_Python:for循环遍历对象,而不是字符串
  10. 【每日一读】EMNLP2020: 面向多跳问答的分层图网络
  11. cmd 新建文件和新建文件夹
  12. 盟军敢死队I:深入敌后--秘籍
  13. 3.7 App.vue-常用配置【uni-app教程uniapp教程(黄菊华-跨平台开发系列教程)】
  14. UEditor(集成 135 编辑器插件)(附源码)
  15. Android自定义圆角矩形图片ImageView
  16. 四川省全国计算机考试一年可以考几次,四川网络教育统考科目没通过怎么办,一年可以考几次?...
  17. 【Hadoop】HDFS文件写入与文件读取过程
  18. 零基础Unreal Engine 4(UE4)图文笔记之准备篇(一)
  19. djvu批量转换为pdf的工具和djvu阅读器(附下载链接)
  20. [动画片] 2013美国动画片《疯狂原始人》高清1080P种子下载

热门文章

  1. 廖湖声c语言第二版电子版PDF,写给大家看的c语言书(第2版)
  2. 用计算机进行进制换算方法,计算机进制怎么转换?计算机进制换算方法
  3. 8086 CPU的寄存器结构
  4. 人工智能智能制作PPT构想---论文与PPT介绍
  5. cdrx8如何批量导出jpg_cdrx8如何批量导出jpg_办公软件操作技巧022:如何从word文档中批量导出多张图片......
  6. 绝不误人子弟!零基础应该选择学习Java、PHP,还是前端?
  7. c语言控制手机,怎么写用电脑控制手机的代码
  8. 百度网盘链接提取码接口实现
  9. Origin8画图:画百分比堆积柱形图
  10. 静态链表 ( 数据结构 )