1. 集成学习(Ensemble Learning)原理

2. 集成学习(Ensemble Learning)Bagging

3. 集成学习(Ensemble Learning)随机森林(Random Forest)

4. 集成学习(Ensemble Learning)Adaboost

5. 集成学习(Ensemble Learning)GBDT

6. 集成学习(Ensemble Learning)算法比较

7. 集成学习(Ensemble Learning)Stacking

1. 前言

相信看了之前关于集成学习的介绍,大家对集成学习有了一定的了解。本文在给大家介绍下远近闻名的随机森林(RF)算法。

随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。

2. 随机森林原理

随机森林是Bagging算法的进化版,也就是说,它的基本思想仍然和Bagging,但是进行了独有的改进。

  1. RF使用了CART决策树作为弱学习器,这让我们想到了梯度提示树GBDT。
  2. 在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于n,假设为\(n_{sub}\),然后在这些随机选择的\(n_{sub}\)个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。 

如果\(n_{sub}=n\),则此时RF的CART决策树和普通的CART决策树没有区别。\(n_{sub}\)越小,则模型约健壮,当然此时对于训练集的拟合程度会变差。也就是说\(n_{sub}\)越小,模型的方差会减小,但是偏倚会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的\(n_{sub}\)的值。

3. 随机森林算法

输入:为样本集\(D={(x_1,y_1),(x_2,y_2),...(x_m,y_m)}\),弱分类器迭代次数\(T\)。
输出:为最终的强分类器\(f(x)\)

  1. 对于\(t=1,2...,T\):

    1. 对训练集进行第\(t\)次随机采样,共采集\(m\)次,得到包含\(m\)个样本的采样集\(D_t\)
    2. 用采样集\(D_t\)训练第t个决策树模型\(G_t(x)\),在训练决策树模型的节点的时候, 在节点上所有的样本特征中选择一部分样本特征, 在这些随机选择的部分样本特征中选择一个最优的特征来做决策树的左右子树划分
  2. 如果是分类算法预测,则\(T\)个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,\(T\)个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

4. 随机森林的扩展

由于RF在实际应用中的良好特性,基于RF,有很多变种算法,应用也很广泛,不光可以用于分类回归,还可以用于特征转换,异常点检测等。下面对于这些RF家族的算法中有代表性的做一个总结。

4.1 Extra Trees

Extra Trees是RF的一个变种, 原理几乎和RF一模一样,仅有区别有:

  1. 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而Extra Trees一般不采用随机采样,即每个决策树采用原始训练集。
  2. 在选定了划分特征后,RF的决策树会基于基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是Extra Trees比较的激进,他会随机的选择一个特征值来划分决策树。

从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是偏倚相对于RF进一步增大。在某些时候,Extra Trees的泛化能力比RF更好。

4.2 Totally Random Trees Embedding

Totally Random Trees Embedding(以下简称 TRTE)是一种非监督学习的数据转化方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运用了核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法。

TRTE在数据转化的过程也使用了类似于RF的方法,建立\(T\)个决策树来拟合数据。当决策树建立完毕以后,数据集里的每个数据在\(T\)个决策树中叶子节点的位置也定下来了。比如我们有3颗决策树,每个决策树有5个叶子节点,某个数据特征x划分到第一个决策树的第2个叶子节点,第二个决策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1), 有15维的高维特征。这里特征维度之间加上空格是为了强调三颗决策树各自的子编码。

映射到高维特征后,可以继续使用监督学习的各种分类回归算法了。

5. 总结

RF的算法原理也终于讲完了,作为一个可以高度并行化的算法,RF在大数据时候大有可为。 这里也对常规的随机森林算法的优缺点做一个总结。

RF的主要优点有:

  1. 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
  2. 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
  3. 在训练后,可以给出各个特征对于输出的重要性。
  4. 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
  5. 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
  6. 对部分特征缺失不敏感。

RF的主要缺点有:

  1. 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
  2. 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

3. 集成学习(Ensemble Learning)随机森林(Random Forest)的更多相关文章

  1. 机器学习方法(六):随机森林Random Forest,bagging

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 前面机器学习方法(四)决策树讲了经典 ...

  2. sklearn_随机森林random forest原理_乳腺癌分类器建模(推荐AAA)

     sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  3. 【Supervised Learning】 集成学习Ensemble Learning & Boosting 算法(python实现)

    零. Introduction 1.learn over a subset of data choose the subset uniformally randomly (均匀随机地选择子集) app ...

  4. 笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting

    本杂记摘录自文章<开发 | 为什么说集成学习模型是金融风控新的杀手锏?> 基本内容与分类见上述思维导图. . . 一.机器学习元算法 随机森林:决策树+bagging=随机森林 梯度提升树 ...

  5. 集成学习_Bagging 和随机森林(rf)

       集成学习方式总共有3种:bagging-(RF).boosting-(GBDT/Adaboost/XGBOOST).stacking      下面将对Bagging 进行介绍:(如下图所示) ...

  6. 随机森林random forest及python实现

    引言想通过随机森林来获取数据的主要特征 1.理论根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即个体学习器之间存在强依赖关系,必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系 ...

  7. 机器学习(六)—随机森林Random Forest

    1.什么是随机采样? Bagging可以简单的理解为:放回抽样,多数表决(分类)或简单平均(回归): Bagging的弱学习器之间没有boosting那样的联系,不存在强依赖关系,基学习器之间属于并列 ...

  8. 【机器学习】随机森林(Random Forest)

    随机森林是一个最近比较火的算法 它有很多的优点: 在数据集上表现良好 在当前的很多数据集上,相对其他算法有着很大的优势 它能够处理很高维度(feature很多)的数据,并且不用做特征选择 在训练完后, ...

  9. 第九篇:随机森林(Random Forest)

    前言 随机森林非常像<机器学习实践>里面提到过的那个AdaBoost算法,但区别在于它没有迭代,还有就是森林里的树长度不限制. 因为它是没有迭代过程的,不像AdaBoost那样需要迭代,不 ...

  10. 【机器学习】随机森林 Random Forest 得到模型后,评估参数重要性

    在得出random forest 模型后,评估参数重要性 importance() 示例如下 特征重要性评价标准 %IncMSE 是 increase in MSE.就是对每一个变量 比如 X1 随机 ...

随机推荐

  1. 简单几步让CentOS系统时间同步(转)

    在使用CentOS系统的时候,我们可能会遇到时间不准的问题,那我们如何解决这个我问题呢,下面就来教大家一个CentOS系统时间同步的方法,希望大家可以解决自己所存在的疑问. CentOS系统时间同步的 ...

  2. 【Spring】SpringMVC之异常处理

    java中的异常分为两类,一种是运行时异常,一种是非运行时异常.在JavaSE中,运行时异常都是通过try{}catch{}捕获的,这种只能捕获显示的异常,通常项目上抛出的异常都是不可预见.那么我们能 ...

  3. Spring 注解 hibernate 实体方法 <property name="packagesToScan" value="com.sise.domain"/>

    <property name="annotatedClasses"> <list> <value>com.sise.domain.Admin&l ...

  4. Swift 封装

    前言 封装主要有两大目的:一是为了我们使用数据更加方便,二是为了数据保护. 1.Swift 访问修饰符 在 Swift 语言中,访问修饰符也分为三类,分别是 private.internal.publ ...

  5. centos6.4安装GitLab

    参考文章: http://www.pickysysadmin.ca/2013/03/25/how-to-install-gitlab-5-0-on-centos-6/ yum安装redis的方法: h ...

  6. appium简明教程(4)——appium client的安装

    appium client是对webdriver原生api的一些扩展和封装.它可以帮助我们更容易的写出用例,写出更好懂的用例. appium client是配合原生的webdriver来使用的,因此二 ...

  7. FreeSWITCH在会议室中持续播放音频文件

    最近遇到一个客户需求,希望在会议室建立起来后,自动播放一段指定的声音. 已知会议室命令,假设建立起一个会议室号码3000,很容易实现以下功能: 一.播放一个声音文件一次 conference 3000 ...

  8. mysql -- 优化之ICP(index condition pushdown)

    一.为了方法说明ICP是什么.假设有如下的表和查询: create table person( id int unsigned auto_increment primary key, home_add ...

  9. dd-wrt 中继配置

    本配置方法在tp-link 703n v1.6上应用成功 1.首先把703n刷成dd-wrt.这里我刷的是 DD-WRT v24-sp2 (03/15/12) std版本,要刷两个固件,一个facto ...

  10. AI重要算法

    https://www.quora.com/Is-a-single-layered-ReLu-network-still-a-universal-approximator/answer/Conner- ...