《从机器学习到深度学习》笔记(5)集成学习之随机森林

简介: 集成学习模型与其他有监督模型的出发点大相径庭,之前的模型都是在给定的训练集上通过构建越来越强大的算法进行数据拟合。而集成学习着重于在训练集上做文章:将训练集划分为各种子集或权重变换后用较弱的基模型拟合,然后综合若干个基模型的预测作为最终整体结果。

集成学习模型与其他有监督模型的出发点大相径庭,之前的模型都是在给定的训练集上通过构建越来越强大的算法进行数据拟合。而集成学习着重于在训练集上做文章:将训练集划分为各种子集或权重变换后用较弱的基模型拟合,然后综合若干个基模型的预测作为最终整体结果。在Scikit-Learn中实现了两种类型的集成学习算法,一种是Bagging methods,另一种是Boosting methods。

随机森林(Random Forrest)是Bagging方法的一个典型代表,由它的名称就可以联想到它是一种使用决策树作为基模型的集成学习方法。

1. 集成框架

随机森林在训练过程中对训练集进行随机抽样,分别进行训练后形成若干个小的决策树。分类问题的预测通过这些基决策树的投票完成,回归问题的预测通过对基决策树结果求平均完成,整个流程如图3-17所示。
3_17

图3-17 随机森林算法原理

随机森林基模型中的决策树一般采用有较大偏差和较小方差的“弱模型”,和普通的决策树相比具体体现在:

样本裁剪:通过随机采样每个弱模型只训练部分样本数据;
特征裁剪:每个基模型的决策树只选用数据特征中的一部分进行训练和预测;随机抽样保证了所有特征都能被部分弱模型学习到;
小树:由于特征和样本数量有限每个弱模型决策树都长不高,所以不需要像普通决策树那样在训练结束后为避免过度拟合而执行剪枝。
**2. 有放回采样(bootstrap)
**
在从整体训练集中进行随机采样划分子训练集时,随机森林通常采用所谓的有放回采样(bootstrap)手段。有放回采样是指每次抽取一个样本放入子集后将改样本仍保留在被采样空间中,使得它仍有可能被再次采样到。比如有盘水果:1个橘子,2个苹果,3个香蕉,对该盘水果进行2次有放回采样完全可能采样到2个橘子(虽然概率比较小);如果使用无放回采样则最多采样到1个橘子。

在整体样本数量足够多的情况下,通过bootstrap采样到的子集只有期望约为63.2%的无重复样本。使用这种采样有什么好处呢?

因为bootstrap能够生成出与训练样本整体不同的数据分布,这样等于扩充了训练样本空间,所以通过bootstrap采样能够训练出适应性更强的模型。

**3. Out-of-bag Estimation
**
在本书第1章中有介绍过,一般机器学习模型的评估需要通过与训练集相互独立的另一个测试集完成。而Bagging类模型在训练过程中划分不同独立数据子集的行为在侧面引入了另一个好处,就是可以使用训练数据本身进行模型准确率的评估。

这就是所谓的Out-of-bag Estimation(简称OOB),是指基模型的评估预测只采用未参与到其本身训练的数据集上。因此虽然整体上没有给出独立的测试集,但每个基模型自己使用的训练数据和预测数据是完全隔离的,如图3-18所示。
3_18

图3-18 Out-of-bag示意图

图中的实线标示基模型训练时使用的数据,虚线标示进行评估预测时基模型使用的数据。只要保证每条训练数据没有重复的被应用在单个基模型上,就可以保证评估结果的公允性。

4. RandomForestClassifier和RandomForestRegressor

在sklearn.ensemble包中提供了完整封装的随机森林模型RandomForestClassifier和RandomForestRegressor,它们的使用方式与其他模型无异。在模型参数方面,由于随机森林使用决策树作为基模型,所以在模型初始化过程中保留了所有DecitionTreeXXX模型中的决策树相关参数,此外还提供了关于抽样方式和OOB评估的配置属性,比如:

>>>from sklearn.datasets import load_iris

>>>from sklearn.ensemble import RandomForestClassifier

>>>iris = load_iris()                                                                             # 导入iris数据库

>>>clf = RandomForestClassifier(n_estimators = 20, bootstrap=True, oob_score=True)

>>>clf.fit(iris.data, iris.target)                                                             # 训练               

>>>clf.oob_score_                                                                              # 查看OOB评估结果

0.946666666667

上述代码使用了Scikit-learn的测试数据库iris作为训练数据来源,在初始化随机森林回归模型的时候配置n_estimators定义基模型的数量、配置了参数bootstrap=True使用有放回采、配置oob_score=True指定在训练后进行OOB测试,在训练后马上通过oob_score_属性获得了准确性评估。

注意:如果未在模型初始化时指定oob_score=True则不能在训练后访问oob_score_属性。

从机器学习,到深度学习

从深度学习,到强化学习

从强化学习,到深度强化学习

从优化模型,到模型的迁移学习

一本书搞定!
d01b2e3c1893d577

相关文章
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】机器学习、深度学习、强化学习和迁移学习简介、相互对比、区别与联系。
机器学习、深度学习、强化学习和迁移学习都是人工智能领域的子领域,它们之间有一定的联系和区别。下面分别对这四个概念进行解析,并给出相互对比、区别与联系以及应用场景案例分析。
8 1
|
15天前
|
机器学习/深度学习 开发者 Python
Python 与 R 在机器学习入门中的学习曲线差异
【8月更文第6天】在机器学习领域,Python 和 R 是两种非常流行的编程语言。Python 以其简洁的语法和广泛的社区支持著称,而 R 则以其强大的统计功能和数据分析能力受到青睐。本文将探讨这两种语言在机器学习入门阶段的学习曲线差异,并通过构建一个简单的线性回归模型来比较它们的体验。
37 7
|
18天前
|
机器学习/深度学习 运维 算法
【阿里天池-医学影像报告异常检测】3 机器学习模型训练及集成学习Baseline开源
本文介绍了一个基于XGBoost、LightGBM和逻辑回归的集成学习模型,用于医学影像报告异常检测任务,并公开了达到0.83+准确率的基线代码。
25 9
|
15天前
|
人工智能
LLama+Mistral+…+Yi=? 免训练异构大模型集成学习框架DeePEn来了
【8月更文挑战第6天】DeePEn是一种免训练异构大模型集成学习框架,旨在通过融合多个不同架构和参数的大模型输出概率分布,提升整体性能。它首先将各模型输出映射至统一概率空间,然后进行聚合,并最终反转回单一模型空间以生成输出。实验证明,在知识问答和推理任务上,DeePEn相比单一大模型如LLaMA和Mistral有显著提升,但其效果受模型质量和数量影响,并且计算成本较高。[论文: https://arxiv.org/abs/2404.12715]
28 1
|
18天前
|
机器学习/深度学习
【机器学习】模型融合Ensemble和集成学习Stacking的实现
文章介绍了使用mlxtend和lightgbm库中的分类器,如EnsembleVoteClassifier和StackingClassifier,以及sklearn库中的SVC、KNeighborsClassifier等进行模型集成的方法。
25 1
|
29天前
|
机器学习/深度学习 算法 前端开发
集成学习的力量:Sklearn中的随机森林与梯度提升详解
【7月更文第23天】集成学习,作为机器学习中一种强大而灵活的技术,通过结合多个基础模型的预测来提高整体预测性能。在`scikit-learn`(简称sklearn)这一Python机器学习库中,随机森林(Random Forest)和梯度提升(Gradient Boosting)是两种非常流行的集成学习方法。本文将深入解析这两种方法的工作原理,并通过代码示例展示它们在sklearn中的应用。
41 10
|
6天前
|
机器学习/深度学习 人工智能 算法
AI人工智能(ArtificialIntelligence,AI)、 机器学习(MachineLearning,ML)、 深度学习(DeepLearning,DL) 学习路径及推荐书籍
AI人工智能(ArtificialIntelligence,AI)、 机器学习(MachineLearning,ML)、 深度学习(DeepLearning,DL) 学习路径及推荐书籍
15 0
|
1月前
|
机器学习/深度学习 算法 前端开发
集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。
集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。
|
22天前
|
机器学习/深度学习 人工智能 缓存
人工智能平台PAI使用问题之如何配置学习任务
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
1月前
|
机器学习/深度学习 算法 Python
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。

热门文章

最新文章