博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习:随机森林
阅读量:4566 次
发布时间:2019-06-08

本文共 1352 字,大约阅读时间需要 4 分钟。

1. 随机森林的基本思想

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

 

2. 随机森林的构造过程:

 

     2.1 若训练集中的样本个数为N,则有放回的随机选择N个样本用来训练一个决策树,作为决策树根节点处的样本。

 

     2.2 若每个样本有M个属性,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性(m << M),然后从这m个属性中采用某种策略(如信息增益)来选择1个属性作为该节点的分裂属性。

 

  2.3. 决策树形成过程中每个节点都要按照步骤2来分裂,一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。

 

  2.4. 按照步骤1~3建立大量的决策树,这样就构成随机森林了。

 

      在每一棵决策树的构建过程中有两点需要注意:随机采样与完全分裂。

  • 首先是两个随机采样的过程:random forest对输入的数据要进行行、列的采样。对于行采样,采用有放回的方式(即bootstrap抽样),可能存在的重复样本使得每一棵树的输入样本都不一定是全部样本。然后进行列采样,从M个feature中,选择m个(m << M)。由于两个随机采样的过程保证了随机性,所以就算不剪枝也相对不容易出现over-fitting。
  • 对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。

 

 

3. 随机森林的优点与缺点

3.1 优点:

      3.1.1 两个随机采样的过程使得随机森林不容易陷入过拟合,同时具有具有很好的抗噪声能力

      3.1.2 可以处理很高纬度的数据,并且不用做特征选择,既能处理离散型数据,也能处理连续型数据,数据集无需规范化,对数据集的适应能力强

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

      3.1.4 可生成一个Proximities=(pij)矩阵,用于度量样本之间的相似性;并确定最重要的变量,能够输出变量的重要性程度。

      3.1.5 在创建随机森林的时候,对generlization error使用的是无偏估计;

      3.1.6 实现比较简单,训练速度快,容易做成并行化方法,可以得到变量重要性排序(两种:基于OOB误分率的增加量和基于分裂时的GINI下降量

 

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

3.2 缺点:

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

      3.2.2 随机森林像是一个无法控制模型内部的运行的黑盒子,只能在不同的参数和随机种子之间进行尝试。

转载于:https://www.cnblogs.com/albertsr/p/7429119.html

你可能感兴趣的文章
算法第5章作业
查看>>
7.9 练习
查看>>
基于ArcGIS JS API的在线专题地图实现
查看>>
learnByWork
查看>>
Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法
查看>>
lua 函数
查看>>
Git的基本命令
查看>>
四平方和
查看>>
第十八周 12.27-1.2
查看>>
C# IP地址字符串和数值转换
查看>>
TCHAR和CHAR类型的互转
查看>>
常用界面布局
查看>>
C语言—— for 循环
查看>>
IBM lotus9.0测试版即将公测
查看>>
xml常用方法
查看>>
Cube Stacking(并差集深度+结点个数)
查看>>
AndroidStudio3更改包名失败
查看>>
jq 删除数组中的元素
查看>>
添加按键事件处理及事件处理的参数传递
查看>>
js URL中文传参乱码
查看>>