热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习随机森林总结

Bagging思想:从总体样本当中随机取一部分训练,通过多次的结果,投票获取平均值作为结果输出,尽可能避免不好的样本

Bagging思想:从总体样本当中随机取一部分训练,通过多次的结果,投票获取平均值作为结果输出,尽可能避免不好的样本,提高准确度。不好的样本相当于噪声,模型学入噪声后会使准确度不高。

随机森林:基于树模型的Bagging优化版本,一棵树不如多棵树,使用多颗决策树,解决决策树泛化能力弱的特点。

同一批数据用同样的算法只能产生一棵树,这时Bagging策略可产生不同的数据集。

Bagging策略来源于bootstrap aggregation:从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),

树的生成规则:

在所有样本上,对这n个样本建立分类器(ID3\C4.5\CART\SVM\LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果,决定数据属于哪一类。


  1. 如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本,作为该树的训练集;
  2. 如果每个样本的特征维度为M&#xff0c;指定一个常数m<随机地从M个特征中选取m个特征子集&#xff0c;每次树进行分裂时&#xff0c;从这m个特征中选择最优的&#xff1b;
  3. 每棵树都尽最大程度的生长&#xff0c;并且没有剪枝过程。

一开始我们提到的随机森林中的“随机”就是指的这里的两个随机性。两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入&#xff0c;使得随机森林不容易陷入过拟合&#xff0c;并且具有很好得抗噪能力&#xff08;比如&#xff1a;对缺省值不敏感&#xff09;。

总的来说就是随机选择样本数&#xff0c;随机选取特征&#xff0c;随机选择分类器&#xff0c;建立多颗这样的决策树&#xff0c;然后通过这几课决策树来投票&#xff0c;决定数据属于哪一类(投票机制有一票否决制、少数服从多数、加权多数)

分类效果&#xff1a;


  • 森林中任意两棵树的相关性&#xff1a;相关性越大&#xff0c;错误率越大&#xff1b;
  • 森林中每棵树的分类能力&#xff1a;每棵树的分类能力越强&#xff0c;整个森林的错误率越低。

减小特征选择个数m&#xff0c;树的相关性和分类能力也会相应的降低&#xff1b;

增大m&#xff0c;两者也会随之增大。关键问题是如何选择最优的m&#xff08;或者是范围&#xff09;&#xff0c;这是随机森林唯一的参数。

优点&#xff1a;


  • 在当前的很多数据集上&#xff0c;相对其他算法有着很大的优势&#xff0c;表现良好。
  • 它能够处理很高维度&#xff08;feature很多&#xff09;的数据&#xff0c;并且不用做特征选择(因为特征子集是随机选择的)。
  • 在训练完后&#xff0c;它能够给出哪些feature比较重要。
  • 训练速度快&#xff0c;容易做成并行化方法(训练时树与树之间是相互独立的)。
  • 在训练过程中&#xff0c;能够检测到feature间的互相影响。
  • 对于不平衡的数据集来说&#xff0c;它可以平衡误差。
  • 如果有很大一部分的特征遗失&#xff0c;仍可以维持准确度。

缺点&#xff1a;


  • 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
  • 对于有不同取值的属性的数据&#xff0c;取值划分较多的属性会对随机森林产生更大的影响&#xff0c;此时的属性权值是不可信的。

随机森林对缺失值的处理&#xff1a;


  • 先给缺失值预设一些估计值&#xff0c;比如数值型特征&#xff0c;选择其余数据的中位数或众数作为当前的估计值
  • 根据估计的数值&#xff0c;建立随机森林&#xff0c;把所有的数据放进随机森林里面跑一遍。记录每一组数据在决策树中一步一步分类的路径.
  • 判断哪组数据和缺失数据路径最相似&#xff0c;引入一个相似度矩阵&#xff0c;来记录数据之间的相似度&#xff0c;比如有N组数据&#xff0c;相似度矩阵大小就是N*N
  • 如果缺失值是类别变量&#xff0c;通过权重投票得到新估计值&#xff0c;如果是数值型变量&#xff0c;通过加权平均得到新的估计值&#xff0c;如此迭代&#xff0c;直到得到稳定的估计值。

该缺失值填补过程类似于推荐系统中采用协同过滤进行评分预测&#xff0c;

先计算缺失特征与其他特征的相似度&#xff0c;再加权得到缺失值的估计&#xff0c;

而随机森林中计算相似度的方法&#xff08;数据在决策树中一步一步分类的路径&#xff09;乃其独特之处。

 

构建随机森林的关键问题就是如何选择最优的m&#xff0c;需要依据计算袋外错误率oob error&#xff08;out-of-bag error&#xff09;解决。

bagging方法中Bootstrap每次约有1/3的样本不会出现在样本集合中&#xff0c;这1/3的数据称为袋外数据oob&#xff08;out of bag&#xff09;&#xff0c;可用于取代测试集误差估计方法。

袋外数据(oob)误差的计算方法如下&#xff1a;


  • 对于已经生成的随机森林,用袋外数据测试其性能,假设袋外数据总数为O,用这O个袋外数据作为输入,带进之前已经生成的随机森林分类器,分类器会给出O个数据相应的分类
  • 因为这O条数据的类型是已知的,则用正确的分类与随机森林分类器的结果进行比较,统计随机森林分类器分类错误的数目,设为X,则袋外数据误差大小&#61;X/O

优缺点&#xff1a;OOB是无偏估计的&#xff0c;所以在随机森林算法中不需要再进行交叉验证或者单独的测试集来获取测试集误差的无偏估计。

 

参考&#xff1a;

https://github.com/NLP-LOVE/ML-NLP/blob/master/Machine%20Learning/3.1%20Random%20Forest/3.1%20Random%20Forest.md


推荐阅读
author-avatar
初语2265_781
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有