《从机器学习到深度学习》笔记(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

相关文章
|
1月前
|
机器学习/深度学习 数据采集 算法
深度学习和机器学习中针对非时间序列的回归任务,有哪些改进角度?
本文探讨了在深度学习和机器学习中针对非时间序列的回归任务的多种改进策略,包括数据预处理、数据集增强、特征选择、模型选择、模型正则化与泛化、优化器选择、学习率调整、超参数调优以及性能评估与模型解释,旨在提升模型的性能和可解释性。
47 1
深度学习和机器学习中针对非时间序列的回归任务,有哪些改进角度?
|
13天前
|
机器学习/深度学习 人工智能 搜索推荐
如何让你的Uno Platform应用秒变AI大神?从零开始,轻松集成机器学习功能,让应用智能起来,用户惊呼太神奇!
【9月更文挑战第8天】随着技术的发展,人工智能与机器学习已融入日常生活,特别是在移动应用开发中。Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 开发跨平台应用(涵盖 Windows、macOS、iOS、Android 和 Web)。本文探讨如何在 Uno Platform 中集成机器学习功能,通过示例代码展示从模型选择、训练到应用集成的全过程,并介绍如何利用 Onnx Runtime 等库实现在 Uno 平台上的模型运行,最终提升应用智能化水平和用户体验。
27 1
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习:从线性回归到深度学习
【9月更文挑战第4天】在这篇文章中,我们将深入探讨机器学习的世界,从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过实际的代码示例,揭示这些模型背后的数学原理,以及如何在现实世界的问题中应用它们。无论你是初学者还是有经验的数据科学家,这篇文章都将为你提供新的视角和深入的理解。
|
18天前
|
机器学习/深度学习 存储 数据采集
Elasticsearch 与机器学习的集成
【9月更文第3天】Elasticsearch 不仅仅是一个强大的分布式搜索和分析引擎,它还是一个完整的数据平台,通过与 Kibana、Logstash 等工具结合使用,能够提供从数据采集、存储到分析的一站式解决方案。特别是,Elasticsearch 集成了机器学习(ML)功能,使得在实时数据流中进行异常检测和趋势预测成为可能。本文将详细介绍如何利用 Elasticsearch 的 ML 功能来检测异常行为或预测趋势。
28 4
|
20天前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
27 1
|
25天前
|
机器学习/深度学习 人工智能 算法
探索AI的魔法:机器学习与深度学习的奥秘
【8月更文挑战第27天】在这篇文章中,我们将深入探讨人工智能的两个重要分支:机器学习和深度学习。我们将首先理解它们的基本概念,然后通过Python代码示例,展示如何应用这些技术解决实际问题。无论你是AI新手,还是有经验的开发者,这篇文章都将为你提供新的知识和启示。让我们一起开启这场AI的魔法之旅吧!
|
27天前
|
监控 数据安全/隐私保护 异构计算
借助PAI-EAS一键部署ChatGLM,并应用LangChain集成外部数据
【8月更文挑战第8天】借助PAI-EAS一键部署ChatGLM,并应用LangChain集成外部数据
53 1
|
12天前
|
机器学习/深度学习 人工智能 自动驾驶
探索人工智能的未来:机器学习和深度学习的融合之旅
本文将带你进入人工智能的奇妙世界,一起探索机器学习和深度学习的融合如何引领我们走向更加智能化的未来。我们将从基础概念出发,逐步深入到技术细节和应用实例,揭示这一技术革新如何改变我们的生活和工作方式。通过深入浅出的解释和生动的例子,本文旨在为读者提供一次内容丰富、启发思考的技术之旅。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】机器学习、深度学习、强化学习和迁移学习简介、相互对比、区别与联系。
机器学习、深度学习、强化学习和迁移学习都是人工智能领域的子领域,它们之间有一定的联系和区别。下面分别对这四个概念进行解析,并给出相互对比、区别与联系以及应用场景案例分析。
25 1
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能的未来:从机器学习到深度学习
本文将探讨人工智能的发展历程,特别是机器学习和深度学习的兴起。我们将深入了解这些技术如何改变我们的生活,并讨论未来的发展趋势。
30 1