机器学习算法原理总结系列---算法基础之(3)随机森林(Random Forest)
来源:互联网 发布:手机版淘宝怎么买二手 编辑:程序博客网 时间:2024/04/30 15:33
刚接触这次词的同学们肯定又感觉,又是一个高上大的算法,其实不然。大家可以想象,随机森林,是一片森林吧。森林又是由树组成的吧,而树的本质其实就是分类器,广义的来说,什么SVM,又都是分类器,当然也包括决策树。所以从广义上它们都可以叫做树,堆积起来就是随机森林。但怎么很好地设计整个架构,那就看看第一部分的讲解吧。
一、原理详解
首先,上一节我讲述了决策树的原理,决策树对训练属于有很好的分类能力,但对未知的测试数据未必有很好的分类能力,泛化能力弱,即可能发生过拟合的现象。
之后我们会经常能听到过拟合这个词,因为在FNN,CNN,RNN中都会有相应的策略去防止过拟合。
对于决策树来说,我们可以通过
- 剪枝
- 随机森林
来尽量防止过拟合的现象出现。
接下来尝试理解几个概念:
- Bootstraping:
Bootstrapping(拔靴法)算法,指的就是利用有限的样本资料经由多次重复抽样,重新建立起足以代表母体样本分布之新样本。bootstrapping的运用基于很多统计学假设,因此假设的成立与否会影响采样的准确性。 - Bagging策略:
bootstrap aggregation
从样本集中重采样(有重复的)选出n个样本
在所有属性上,对这个n个样本建立分类器(ID3,C4.5,CART, SVM, Logistic回归等)
重复以上两步m次,即获得m个分类器
将数据放在这m个分类器上,最后根据这m个分类器的投票结果,决定数据属于哪一类
所以随机森林在bagging基础上做了修改。
- 从样本集中用Bootstrap采样选出n个样本;
- 从所有属性中随机选择k个属性,选择最佳分割属性作为节点建立CART决策树;
- 重复以上两步m次,即建立了m棵CART决策树
- 这m个CART形成随机森林,通过投票决定结果,决定数据属于哪一类。
简单来说,随机森林就是对决策树的集成,但有两点不同:
- 采样的差异性:从含m个样本的数据集中有放回的采样,得到含m个样本的采样集,用于训练。这样能保证每个决策树的训练样本不完全一样。
- 特征选取的差异性:每个决策树的n个分类特征是在所有特征中随机选择的(n是一个需要我们自己调整的参数)
- 随机森林需要调整的参数有:
(1) 决策树的个数
(2) 特征属性的个数
(3) 递归次数(即决策树的深度)
代码实现流程:
- 导入文件并将所有特征转换为float形式
- 将数据集分成n份,方便交叉验证
- 构造数据子集(随机采样),并在指定特征个数(假设m个,手动调参)下选取最优特征
- 构造决策树
- 创建随机森林(多个决策树的结合)
- 输入测试集并进行测试,输出预测结果
阅读全文