算法学习---- 随机森林的基本原理
集成思想
Boosting 通过将弱学习器 提升为强学习器的集成方法来提高预测精度,典型的算法是:AdaBoost、GBDT、 XGBoost
Bagging 通过自主采样的方法生成众多并行式的分类器,通过“少数服从多数”的原则来确定最终的结果。典型的算法有 随机森林、
随机森林(Random Forest)
随机森林是指利用多棵决策树对样本进行训练并预测的一种算法。也就是说随机森林算法是一个包含多个决策树的算法,其输出的类别是由个别决策树输出的类别的众树来决定的。
在Sklearn模块库中,与随机森林算法相关的函数都位于集成算法模块ensemble中。
分类、聚类和回归是机器学习的最基本主题。而随机森林主要是应用于回归和分类这两种场景,又侧重于分类。
采用了bagging 思想 : 一棵树是决策树,多棵树是随机森林,解决了决策树泛化能力弱的缺点。
随机特性
随机选取样本
随机选取特征
随机森林的构建
大致如下:首先利用bootstrap方法又放回的从原始训练集中随机抽取n个样本,并构建n个决策树;然后假设在训练样本数据中有m个特征,那么每次分裂时选择最好的特征进行分裂 每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类;接着让每颗决策树在不做任何修剪的前提下最大限度的生长;最后将生成的多棵分类树组成随机森林,用随机森林分类器对新的数据进行分类与回归。对于分类问题,按多棵树分类器投票决定最终分类结果;而对于回归问题,则由多棵树预测值的均值决定最终预测结果
Bootstrap sampling自助采样
模型的评估方法中有留一法(将数据集划分为两个互不相交的集合,一个做测试集,一个做训练集)和交叉验证方法(将数据分成k个大小相似互不相交的子集,每次使用k-1个子集做训练集,剩下的一个子集做测试集,以此循环进行k次的训练和测试,最后返回k次测试结果的均值。)
但是上述两种方法中都保留了一部分样本用于测试,所以实际模型所使用的训练集比源数据都要小,因此就会引入一些因训练样本规模不同而导致的估计偏差。另外一方面留一法受训练样本影响较小,但是计算复杂度又太高。因此为了解决减少训练样本规模不同造成的影响,同时还能比较高效地进行测试集的评估。
自助法就是很好的解决方案。
随机森林的优缺点
优点
随机森林简单、容易实现、计算开销小,被誉为“代表集成学习计数水平的方法”。可以看出随机森林只是对Bagging做了很小的改动。Bagging的多样性只是体现在样本的随机性,随机森林的基学习器的多样性不仅来自于样本的随机性,还来自于属性的随机性。随机森林随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。
(1)分类结果更加准确
(2)可以处理高维度的属性,并且不用做特征选择
(3)即使有很大部分数据遗失,仍可以维持高准确度
(4)训练效率优于Bagging
(5)随机性只需要考虑一个属性子集,Bagging需要考察所有属性。
(6)容易实现并行化计算
(7)在训练过程中,能够检测到属性之间的相互影响
缺点
随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(PS:随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。
对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。(处理高维数据,处理特征遗失数据,处理不平衡数据是随机森林的长处)。
在 sklearn 模块中的参数:
1、n_estimators:它表示建立的树的数量。 一般来说,树的数量越多,性能越好,预测也越稳定,但这也会减慢计算速度。一般来说在实践中选择数百棵树是比较好的选择,因此,一般默认是100。
2、n_jobs:超参数表示引擎允许使用处理器的数量。 若值为1,则只能使用一个处理器。 值为-1则表示没有限制。设置n_jobs可以加快模型计算速度。
bs:超参数表示引擎允许使用处理器的数量。 若值为1,则只能使用一个处理器。 值为-1则表示没有限制。设置n_jobs可以加快模型计算速度。
3、oob_score :它是一种随机森林交叉验证方法,即是否采用袋外样本来评估模型的好坏。默认是False。推荐设置为True,因为袋外分数反应了一个模型拟合后的泛化能力。
算法学习---- 随机森林的基本原理相关推荐
- R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比
R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...
- python-机器学习-随机森林算法
python-机器学习-随机森林算法 本文是用python学习机器学习系列的第五篇 随机森林算法是在决策树算法的基础上的改进,本文使用的基础决策树算法是引用第二篇文章中实现的决策数算法. 链接:pyt ...
- gbdt 算法比随机森林容易_用Python实现随机森林算法
CDA数据分析师 出品 拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱.bagging(bootstrap aggregating 的缩写)算法从训练数据 ...
- matlab 随机森林算法_随机森林算法
随机森林是一种灵活,易于使用的机器学习算法,即使没有超参数调整,也能在大多数情况下产生出色的结果.它也是最常用的算法之一,因为它简单,并且可以用于分类和回归任务.在这篇文章中,您将学习随机森林算法如何 ...
- 随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测
随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测 1.引言 2.理论基础 2.1 什么是决策树 2.2 特征选择的算法 2.2.1 ID3:基于 ...
- 算法梳理:随机森林算法梳理
1集成学习概念 集成学习是集成多个"个体学习器". 主要是通过构建并结合多个学习器来完成学习任务,也被称为多分类器系统. 集成学习结构:先产生一组个体学习器,再用某种策略将他们结合 ...
- 机器学习基础算法之随机森林
英文原文<The Random Forest Algorithm> 专知 编译<机器学习基础算法之随机森林> [导读]在当今深度学习如此火热的背景下,其他基础的机器学习算法显得 ...
- 初勘数据处理之预测算法(随机森林random forest)附matlab源码
初勘数据处理之预测算法(随机森林random forest)附matlab源码 集成学习方法 集成学习方法,是整合多个分类方法的预测结果,以提高分类准确率.集成学习方法先用训练数据构建一组基分类器,再 ...
- R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型
R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型 目录 R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型
- 【数据挖掘算法分享】机器学习平台——回归算法之随机森林
随机森林回归算法是决策树回归的组合算法,将许多回归决策树组合到一起,以降低过拟合的风险.随机森林可以处理名词型特征,不需要进行特征缩放处理.随机森林并行训练许多决策树模型,对每个决策树的预测结果进行合 ...
最新文章
- Java局部变量final
- 游客功能怎么实现 php,php链式操作的实现方式分析
- 使用PHP导入和到处CSV文件
- 【⛔C语言“数组名”,不得不说的秘密!⛔】c语言“数组名字“初探
- Android测试(二)——drozer使用
- if-else运用及技巧(C# 参考)
- spark restful_使用Spark构建简单的RESTful API
- 没有5G也很香!iPhone去年四季度出货量了解下
- 深入理解Tomcat系列之一:系统架构(转)
- android dialog转layout
- 用matlab解根3乘根2,数值计算课后习题答案--石瑞民.doc
- atitit.报表最佳实践oae 与报表引擎选型
- 华为OSPF中silent-interface语句介绍
- dubbo架构概览-dubbo源码解析
- 支付宝APP支付功能开发
- word批量设置图片大小和对齐,使用宏定义
- 面试常见简单编程题目
- 苹果appstore中兑换码的使用方法
- element ui table组件筛选数据
- Ubuntu安装Source Insight导入Android源码并设置仿IDEA主题Darcula