随机森林是集成方法中优势非常强的一种方法,它以决策树为基础学习器,每棵树独立建立,天然具有并行特性,相对于GradientBoosting和Bagging方法而言,它耗内存更大,速度也相对慢些,但能获得更稳定的结果,尤其是在与CV验证相结合时,泛化能力大大增强。

  1. 决策树基本算法
  2. 随机森林算法
  3. 应用随机森林

1、决策树基本算法

(1)寻找最优化分节点的办法有信息增益量和GINI系数:

①信息增益量:

ENt表示原始样本的熵,熵越大,样本越混乱,Gain为加入但变量a之后的信息增益,记加入此特征之后熵降低的数量,Gain越大,越容易作为决策树的划分节点,有时根据需要会在排名前k个节点中选取合适,并非是最优的那一个节点。

②GINI系数

GINI的含义,大概可以表示成这个意思,随机从特征a相同的样本里选取两个样本,他们两个表现不同的概率,概率越低,说明此特征越好,越具有划分度。

(2)树自由生长,会长成没一个叶节点长最多有一个样本,会造成过拟合的现象,在训练集中效果很好,测试集中表现欠佳,这时需要进行剪枝处理,可以通过设定树的深度、叶节点的最小样本数来控制,增强泛化能力。

2、随机森林

多棵决策树,他们随机在选取样本、特征,各自野蛮生长,最后再对他们的结果进行组合,

随机森林算法来源于Bagging算法,但他的表现往往由于Bagging,随着森林中树的数目增多,它的泛化能力会逐渐增强,其效果比单棵决策树要优势太多。

3、实验

使用Python中sklearn模块,生成分类数据集,并用随机森林随机选取不同数目的特征进行融合,构建随机森林分类器。

import matplotlib.pyplot as plt
from collections import OrderedDict
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier, ExtraTreesClassifier# Author: Kian Ho <hui.kian.ho@gmail.com>
#         Gilles Louppe <g.louppe@gmail.com>
#         Andreas Mueller <amueller@ais.uni-bonn.de>
#
# License: BSD 3 Clauseprint(__doc__)RANDOM_STATE = 123# Generate a binary classification dataset.
X, y = make_classification(n_samples=500, n_features=25,n_clusters_per_class=1, n_informative=15,random_state=RANDOM_STATE)# NOTE: Setting the `warm_start` construction parameter to `True` disables
# support for parallelized ensembles but is necessary for tracking the OOB
# error trajectory during training.
ensemble_clfs = [("RandomForestClassifier, max_features='sqrt'",RandomForestClassifier(warm_start=True, oob_score=True,max_features="sqrt",random_state=RANDOM_STATE)),("RandomForestClassifier, max_features='log2'",RandomForestClassifier(warm_start=True, max_features='log2',oob_score=True,random_state=RANDOM_STATE)),("RandomForestClassifier, max_features=None",RandomForestClassifier(warm_start=True, max_features=None,oob_score=True,random_state=RANDOM_STATE))
]# Map a classifier name to a list of (<n_estimators>, <error rate>) pairs.
error_rate = OrderedDict((label, []) for label, _ in ensemble_clfs)# Range of `n_estimators` values to explore.
min_estimators = 15
max_estimators = 175for label, clf in ensemble_clfs:for i in range(min_estimators, max_estimators + 1):clf.set_params(n_estimators=i)clf.fit(X, y)# Record the OOB error for each `n_estimators=i` setting.oob_error = 1 - clf.oob_score_error_rate[label].append((i, oob_error))# Generate the "OOB error rate" vs. "n_estimators" plot.
for label, clf_err in error_rate.items():xs, ys = zip(*clf_err)plt.plot(xs, ys, label=label)plt.xlim(min_estimators, max_estimators)
plt.xlabel("n_estimators")
plt.ylabel("OOB error rate")
plt.legend(loc="upper right")
plt.show()

集成方法(随机森林)相关推荐

  1. 集成方法-随机森林和AdaBoost

    本文转载自:https://github.com/apachecn/MachineLearning 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是 ...

  2. 第七章 集成方法-随机森林和AdaBoost

    集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个 ...

  3. 【机器学习实战】第7章 集成方法 随机森林(RandomForest)和 Adaboost

    第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...

  4. 集成算法-随机森林与案例实战-泰坦尼克获救预测

    集成算法-随机森林 Ensemble learning 目的:让机器学习效果更好,单个不行,群殴走起 Bagging:训练多个分类器取平均 f ( x ) = 1 / M ∑ m = 1 M f m ...

  5. 机器学习-集成之随机森林算法原理及实战

    Bagging和随机森林 前言 集成学习是目前机器学习的一大热门方向.简单来说,集成学习就是组合许多弱模型以得到一个预测结果比较好的强模型.对于常见的分类问题就是指采用多个分类器对数据集进行预测,把这 ...

  6. 集成学习—随机森林原理(理解与论文研读)

    如果只想大致理解下随机森林的原理请看第一部分,第二部分是对原论文的研读(灰色引用标记的为证明或自己的理解),这部分可能需要花的时间比较长,不需要的可以忽略. 此外,文末列出来的参考视频,如果读论文还是 ...

  7. 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者...

    python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...

  8. 【机器学习】集成学习--随机森林(Random Forest)

    1. 概述 RF = 决策树 + Bagging + 随机属性选择 2. 算法流程 样本的随机:从样本集中用bagging的方式,随机选择n个样本. 特征的随机:从所有属性d中随机选择k个属性(k&l ...

  9. 机器学习实践之集成方法(随机森林和AdaBoost元算法提高分类性能)

       本文根据最近学习机器学习书籍网络文章的情况,特将一些学习思路做了归纳整理,详情如下.如有不当之处,请各位大拿多多指点,在此谢过. (未添加文章标签,特此补上,2018.1.14记.) 一.概述 ...

  10. 浅谈对机器学习方法(决策树,SVM,knn最近邻,随机森林,朴素贝叶斯、逻辑回归)的理解以及用sklearn工具实现文本分类和回归方法...

    一.决策树 定下一个最初的质点,从该点出发.分叉.(由于最初质点有可能落在边界值上,此时有可能会出现过拟合的问题. 二.SVM  svm是除深度学习在深度学习出现之前最好的分类算法了.它的特征如下: ...

最新文章

  1. php路由器怎么登录认证,PHP用户身份验证,如路由器登录
  2. 深入理解Java虚拟机04--类结构文件
  3. [jillzhang]ExtJs与WCF交互:生成树 --数据库版补充
  4. 推荐系统与GNN的火花
  5. 运行配置文件中指定类的指定方法
  6. 算法分析-分治 归并排序,递归插入排序,二分查找
  7. npm包的上传npm包的步骤,与更新和下载步骤
  8. SQL Server 2000卸载后重新安装的问题
  9. C++学习之路 | PTA乙级—— 1018 锤子剪刀布 (20分)(精简)
  10. javascript图片轮播技术动态实现
  11. 发布过程5分钟内load飙升问题排查
  12. linux下运行hadoop,Linux命令行下运行Hadoop单元测试
  13. 废掉一个人最隐蔽的方式,是让他忙到没时间成长
  14. NOIP模拟题——复制粘贴2
  15. 启动Nginx提示:the“ssl“ parameter requires ngx_http_ssl_module in
  16. vite项目(vue-ts)搭建常用插件引入方式
  17. 大唐:我家阁楼通公主府(二)
  18. 关于编程语言和编程工具
  19. 什么是进程、进程的概念?
  20. 基于Tesseract-OCR的空调外包装表面的字符识别

热门文章

  1. 信息学奥赛C++语言:三位数的翻转
  2. 2 PP配置-一般设置-为工厂分配工厂日历
  3. 功率曲线k值_特性曲线在参数计算中的应用
  4. 面向对象:类的定义和使用
  5. mui组件 a 锚点定位(Demo案例演示)- 代码篇
  6. vue引用自定义.css文件 - 语法篇
  7. 非插件实现回复可见效果
  8. SubRenamer – 字幕批量重命名,自动匹配视频文件与字幕文件[Windows]
  9. 漂亮大气注册登录页面模板
  10. 不限速下载工具Persepolis Download Manager中文免费版