博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【学习笔记】随机深林
阅读量:5887 次
发布时间:2019-06-19

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

背景

直观上理解,随机森林通过在构建决策树的过程中将一些行为随机化(比如特征选取,样本选取),产生许多决策树,然后以这些决策树的结果作为投票,将投票最多的预测作为最终结果。随机化的作用是为了减小单个决策树偏倚。

基本思路

两个参数:随机树个数n和每次选取的特征数m。

在构建每一个决策树时,首先有放回的进行N次抽样,N为训练集大小。可以证明,三分之二的样本会选取出来,剩下的三分之一留下来做训练数据。在每次选取数节点分裂时,随机在M个特征中去m个特征(m远小于M),在这些子特征中选取一个最好的切分点。这里值得指出的是,由于只在m个特征中选取切分点,(相比于在M个特种选取切分点,)计算量大大减少。每个决策树都计算到最后,不裁剪。

就这样,按照上面的方法,构建n个决策树,组成最后的随机森林。

算法评估

随机森林在构建过程中,自带评估。平均而言,每个样例用于构建了三分之二的决策树,剩下的三分之一的决策树构建没有用到,所以可以用剩下的三分之一的决策树对这个样例预测,使用错误率进行评估。这也被称之为out  of bag(OOB)测试。决策树还有一个附带产物——计算出每个特征的重要性,这样可以为后续采用其他算法的特征选择提供参考。

最近用决策树模型计算了kaggle上面的titanic和digit_recognizer的数据,发现效果都相当不错。

参考

  • Wiki决策树(中文)
  • 随机森林算法简介 
  • Leo Breiman(随机森林发明者) 2001年的paper
  • Random Forest in Python:

转载于:https://www.cnblogs.com/bourneli/p/3209210.html

你可能感兴趣的文章
gradle
查看>>
wcf服务契约的重载
查看>>
数据帮助类DBhelper的定义
查看>>
基础命令
查看>>
linux下单节点oracle数据库间ogg搭建
查看>>
PLSQL Developer软件使用大全
查看>>
javaWebSerivice学习篇4-WSDL文档结构图
查看>>
swift三方库
查看>>
python自定义线程池
查看>>
坑到了,EF执行带事物的存储过程
查看>>
杭州之行
查看>>
函数式宏定义用do...while(0)的好处
查看>>
oracle ORA-00917: missing comma 是因为少逗号
查看>>
策略模式简介
查看>>
UIViewController中loadView的用法(应当注意的几点)
查看>>
POJ NOI0105-42 画矩形
查看>>
Java 数组在内存中的结构
查看>>
《关爱码农成长计划》第一期报告
查看>>
entity framework 6 通用数据类
查看>>
读取FTP上的excel文件,并写入数据库
查看>>