集成学习算法笔记

一、引言

在机器学习和数据分析领域,集成学习算法因其能够显著提高模型预测性能而备受关注。然而,任何算法在应用过程中都不可避免地会遇到一些挑战和问题,集成学习算法也不例外。其中,最为常见且关键的两大问题便是欠拟合(Underfitting)与过拟合(Overfitting)。

欠拟合,指的是模型在训练数据上都无法获得良好的性能,即模型无法充分学习到数据的内在规律和特征。这通常是由于模型复杂度不足、特征选择不当或训练数据不足等原因导致的。欠拟合的模型在应用于新数据时,往往无法给出准确的预测结果,从而限制了其在实际应用中的性能。

与欠拟合相反,过拟合则是模型在训练数据上表现优异,但在新数据或测试数据上性能急剧下降的现象。过拟合通常是由于模型复杂度过高、训练数据中的噪声过多或模型训练过度等原因造成的。过拟合的模型虽然能够完美地拟合训练数据,但却无法适应新数据的分布和变化,因此在实际应用中往往效果不佳。
在集成学习算法中,如何有效地解决欠拟合和过拟合问题,是提高模型预测性能的关键所在。针对这两个问题,研究者们提出了多种策略和方法,如Boosting技术通过逐步增强学习来解决欠拟合问题,Bagging技术则通过创建多个子集并训练独立模型来降低过拟合风险。

分类算法

在机器学习算法(分类算法)中,将算法分为两类:

弱分类器:逻辑回归算法、决策树算法

强分类器:

相当于弱分类器算法而言称呼,往往是多个弱分类器算法组成的,

集成学习算法常见两类:

Bagging 算法:袋子

使用多个软分器算法构建多个模型,使用每个模型进行预测,共同决定预测结果

(典型算法:随机森林

Boosting 算法:提升

选择某个弱分类器的算法,逐步优化算法模型,逐步提升Boosting,最终获取最佳算法模型

(典型算法:梯度提升树

二、随机森林 

概述

随机森林(Random Forest)是一种集成学习方法,它基于决策树,通过构建多个决策树并将它们的预测结果结合起来,从而提高了预测的准确性和稳定性。在随机森林中,“随机”和“森林”两个词都有其特定的含义。

“随机”的含义 在随机森林中,“随机”主要体现在两个方面:

随机选择样本:对于每一棵决策树,都从原始数据集中随机有放回地抽取一部分样本作为该决策树的训练集。这种做法称为自助法(bootstrap sampling),它允许训练集中有重复的样本,同时也可能有一些样本没有被选中。通过这种方法,每棵决策树都基于一个略有不同的训练集进行训练,从而提高了整个模型的泛化能力。

随机选择特征:在构建决策树的每个节点时,不是考虑所有的特征,而是从所有特征中随机选择一部分特征(例如,选择所有特征的平方根数量),然后基于这些随机选择的特征来找到最佳的分裂点。这种做法进一步增加了每棵决策树之间的差异,提高了整个模型的多样性。

“森林”的含义 在随机森林中,“森林”指的是由多棵决策树组成的集合。这些决策树都是基于随机选择的样本和随机选择的特征进行训练的。每棵决策树都会对其输入的数据进行预测,并产生一个分类或回归的结果。然后,这些结果会被结合起来(例如,通过投票或平均),以产生最终的预测结果。

假设我们有一个数据集,用于预测一个植物是否属于某个特定的物种。这个数据集包含了许多样本,每个样本都有多个特征(如叶子的形状、颜色、大小等)。

随机选择样本:对于第一棵决策树,我们从原始数据集中随机选择一部分样本(可能有重复)作为训练集。对于第二棵决策树,我们再次随机选择一部分样本(可能与第一棵树的训练集不同)。这样,每棵决策树都是基于一个略有不同的训练集进行训练的。

随机选择特征:在构建第一棵决策树的每个节点时,我们随机选择一部分特征(例如,选择所有特征的一半),然后基于这些特征来找到最佳的分裂点。对于第二棵决策树,我们同样随机选择一部分特征(可能与第一棵树选择的特征不同)。这样,每棵决策树在构建过程中都考虑了不同的特征组合。

森林:我们重复上述过程,构建多棵决策树(例如,100棵)。这些决策树共同组成了随机森林。当我们需要预测一个新的样本时,我们将它输入到每一棵决策树中,得到每棵树的预测结果。然后,我们通过投票(对于分类问题)或平均(对于回归问题)的方式,将这些预测结果结合起来,得到最终的预测结果。

算法步骤:

1.用N来表示训练用例(样本)的个数,M表示特征数目。

2.输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。

3.从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。

4.对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征,计算其最佳的分裂方式。

5.每棵树都会完整成长而不会剪枝,这有可能在建完一棵正常树状分类器后会被采用)。

 

随机森林的优缺点:

优点:

  • 对于很多种资料,它可以产生高准确度的分类器;
  • 它可以处理大量的输入变数;
  • 它可以在决定类别时,评估变数的重要性;
  • 在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计;
  • 它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度;
  • 它提供一个实验方法,可以去侦测variable interactions;
  • 对于不平衡的分类资料集来说,它可以平衡误差;
  • 它计算各例中的亲近度,对于数据挖掘、侦测离群点(outlier)和将资料视觉化非常有用; 使用上述。它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。也可侦测偏离者和观看资料;
  • 学习过程是很快速的

缺点:

  • 对噪声和异常值敏感,受到噪声和异常值影响的时候可能会导致模型的性能下降。
  • 难以解释和理解。与简单的线性模型相比随机森林的决策边界更加难以理解。
  • 参数调整复杂。随机森林的性能受到多个参数的影响,比如树的数量、每棵树的最大深度、每个节点分裂所需的最小样本数等。
  • 可能不是最优解,对于某些特定的问题,其他的机器学习算法可能较为合适。

 

与其他分类器一样,森林分类器必须拟合(fit)两个数组: 保存训练样本的数组(或稀疏或稠密的)X,大小为 [n_samples, n_features],和 保存训练样本目标值(类标签)的数组 Y,大小为 [n_samples]:

>>> from sklearn.ensemble import RandomForestClassifier
>>> X = [[0, 0], [1, 1]]
>>> Y = [0, 1]
>>> clf = RandomForestClassifier(n_estimators=10)
>>> clf = clf.fit(X, Y)

 

三、梯度提升树

梯度提升树(Gradient Boosting Decision Tree,简称GBDT)是一种基于梯度提升(Gradient Boosting)框架的决策树算法。它的核心思想是通过迭代地构建多棵决策树,每棵树都尝试去纠正前一棵树的预测错误,从而逐渐提高模型的预测性能。

基本原理

集成学习:梯度提升树属于集成学习中的提升(Boosting)方法,它通过迭代训练多个弱学习器(在GBDT中通常为决策树),并将它们组合成一个强学习器来提高预测性能。
梯度提升:在提升方法中,每个新的学习器都针对前一个学习器的错误进行训练,以逐步减小预测误差。梯度提升是提升方法的一种实现,它利用损失函数的负梯度来指导每个新学习器的训练方向。
决策树:在GBDT中,每个弱学习器都是一个决策树。决策树是一种易于理解和实现的分类和回归方法,它通过递归地将数据集划分为更小的子集来生成一个树形结构。

算法步骤

初始化:首先,GBDT使用一个简单的学习器(如均值或众数)对训练数据进行初步预测,并计算预测值与真实值之间的残差。
迭代训练:然后,GBDT开始迭代训练多个决策树。在每次迭代中,它使用当前的残差作为目标变量来训练一个新的决策树。这个新的决策树将尝试拟合当前的残差,从而逐步减小预测误差。
更新预测:每个新的决策树训练完成后,GBDT都会将其预测结果与前一个模型的预测结果相加,得到新的预测值。同时,GBDT也会更新残差,以便在下一轮迭代中继续训练新的决策树。
重复迭代:GBDT会重复上述迭代过程,直到达到预设的迭代次数或满足其他停止条件(如验证集上的性能开始下降)。
输出结果:最后,GBDT将所有决策树的预测结果进行加权融合(通常使用等权融合),得到最终的预测结果。

GBDT优缺点 

优点:

  • 对混合型数据的自然处理(异构特征)
  • 强大的预测能力
  • 在输出空间中对异常点的鲁棒性(通过具有鲁棒性的损失函数实现)

缺点:

  • 可扩展性差(此处的可扩展性特指在更大规模的数据集/复杂度更高的模型上使用的能力,而非我们通常说的功能的扩展性;GBDT 支持自定义的损失函数,从这个角度看它的扩展性还是很强的!)。由于提升算法的有序性(也就是说下一步的结果依赖于上一步),因此很难做并行.

 GradientBoostingClassifier 既支持二分类又支持多分类问题。 下面的例子展示了如何训练一个包含 100 个决策树弱学习器的梯度提升分类器:

>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier>>> X, y = make_hastie_10_2(random_state=0)
>>> X_train, X_test = X[:2000], X[2000:]
>>> y_train, y_test = y[:2000], y[2000:]>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
...     max_depth=1, random_state=0).fit(X_train, y_train)
>>> clf.score(X_test, y_test)                 
0.913...

弱学习器(例如:回归树)的数量由参数 n_estimators 来控制;每个树的大小可以通过由参数 max_depth 设置树的深度,或者由参数 max_leaf_nodes 设置叶子节点数目来控制。 learning_rate 是一个在 (0,1] 之间的超参数,这个参数通过 shrinkage(缩减步长) 来控制过拟合。

四、总结:

Bagging通过并行训练多个基学习器并取平均(或投票)减少方差(典型算法:随机森林),而Boosting通过串行方式训练基学习器并加权组合,侧重于减少偏差(典型算法:梯度提升树)。两者均有助于降低过拟合风险,但不直接解决欠拟合。

(以上为学习笔记,侵删。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国水系数据(更新到2024年5月)

上海市水系数据地图可视化 水系数据线图层(小河/溪流、江/河、运河、下水道/排水管) 水系数据面数据(水域、水库、河岸、湿地) 水系数据字段说明 可视化预览 北京市水系可视化 上海市水系可视化 广州市水系可视化 深圳市水系可视化…

考研数学考到110+分,到底有多难?

很难! 大家平时在网上上看到很多人说自己考了130,其实这些人只占参加考研数学人数的极少部分,有个数据可以展示出来考研数学到底有多难: 在几百万考研大军中,能考到120分以上的考生只有2%。绝大多数人的分数集中在30…

Django 注册应用

上一章Django 创建项目及应用-CSDN博客 创建的应用,需要在主项目的myshop.settings.py 文件下注册 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.sta…

[DDR5 Jedec 4-1] 预充电命令 Precharge

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 1. 预充电(Precharge)含义 由于SDRAM的寻址具体独占性,因此在进行完读写操作后,若需对同一L-Bank的另一行进行寻址,则必须先关闭原…

如何创建一个线程池,为什么不推荐使用Executors去创建呢?

我们在学线程的时候了解了几种创建线程的方式,比如继承Thread类,实现Runnable接口、Callable接口等,那对于线程池的使用,也需要去创建它,在这里我们提供2种构造线程池的方法: 方法一: 通过Thre…

【vue】vue2项目将npm包管理器修改为yarn包管理器

【vue】vue2项目将npm包管理器修改为yarn包管理器 1.删除node_modules文件夹、package-lock.json文件 2.全局安装yarn npm install -g yarn3.安装项目依赖 yarn install如果执行yarn install 报类似以下这种版本不兼容错误,执行 yarn config set ignore-engines …

【Qt】探索Qt绘图世界:自定义控件与视觉效果的全面指南

文章目录 前言:1. 绘图基本概念2. 绘制各种形状3. 绘制文字(显示文字)、设置画笔4. 画刷5. 绘制图片6. 特殊的绘图设备总结: 前言: 在软件开发中,图形用户界面(GUI)的设计是至关重要…

Unity中帧动画素材的切割设置

有几个问题,美术在给我们帧动画的时候,一般都是给一个比较大的图,然后进行切割成多个sprite,导入到animation中 一般来说,进行那个autoSlide,自动切割就可以了 这个自动切割的图片会沿着有像素的最小包围…

【1】AI介绍

迎接 AGI 时代 AGI(Artificial General Intelligence),人工通用智能,AGI是一种可以执行复杂任务的人工智能,能够完全模仿人类智能的行为。应用领域涉及医疗、交通、智能家居等多个与人类活动密切相关的领域。 AGI 多久会到来? 乐观预测:明年(未来已来)主流预测:3-5…

RHEL7.9修改分区

系统RHEL7.9 他因为安装软件,需要修改分区 进入超级用户root,输入lsblk 查看分区,可见465.8G系统盘sda下有三个物理卷,其中sda3下/home有410.6G,需要这部分拆分出200G软件和100G的数据库分区 备份/home 目录下文件 c…

GDPU unity游戏开发 动画状态机

每一个动画状态都演绎着你的奔赴。 动画混合 1) 前往 Mixamo选择适合的角色模型和idle/walking/backward动画并下载。确保下载时选择FBX for Unity格式。 2) 新建Unity项目,导入下载的模型。 3) 在导入模型的Inspector窗口中,选择Materials选项卡&a…

分治策略的实现

目录 前言 分治策略的应用 最大子数组问题 矩阵乘法问题 求解递归式的三种方法 代入法求递归式 用递归树求递归式 主方法求递归式 前言 分治三个步骤: 分解:分解原问题为子问题,这些子问题为原问题的较小规模的问题。 解决&#xf…

浅谈SpringBoot日志文件

文章目录 一、日志的作用二、如何在SpringBoot中使用日志2.1、在程序中得到日志对象。2.2、通过日志对象中提供的内置方法操打印日志信息2.2.1 日志级别2.2.1.1、日志级别有什么作用??2.2.1.2、日志级别的分类2.2.1.2、在配置文件中设置日志级别[!] 三、…

Linux线程:线程分离

目录 一、什么是线程分离 1.1pthread_detach 1.2pthread线程库存在的意义 1.3__thread线程的局部存储 1.4系统调用clone 一、什么是线程分离 1.1pthread_detach 默认情况下,新创建的线程是joinable的,线程退出后,需要对其进行pthread_joi…

非对称密钥:应用场景

public class EncryptionAndSignatureExample { public static void main(String[] args) throws Exception {// 生成公私钥对KeyPairGenerator keyPairGenerator KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(1024);KeyPair keyPair keyPai…

路由策略实验2

对R7,重发布直连路由 对R2,做双向 对R3同样 先不改优先级 查看,知道所有给R3的路由为151,全部为OSPF。 知道了是错误的,先把3,4之间的线路断掉 接着对R3,让优先级全部回到100(displa…

node-sass和sass-loader安装Error经验

一、问题 当前笔记本环境版本:node-v16.15.1;npm-8.11.0,在面对五年前vue项目的依赖sass-loader8.0.2,node-sass4.14.1的情况下,怎么参考大神们的安装教程,始终存在Error,经过坚持不懈的努力&a…

微软云计算之云计算平台、云操作系统Windows Azure

微软云计算平台 微软云计算平台微软的云计算技术Windows Azure组成 微软云操作系统Windows AzureWindows Azure概述Windows Azure计算服务Windows Azure存储服务全局命名空间体系架构存储域的层次结构双复制引擎文件流层分区层 Windows Azure ConnectWindows Azure CDNFabric控…

十_信号11 - 函数sigsetjmp() 和 siglongjmp()

也就是说,正常情况下,当捕捉到一个信号,并调用该信号的信号处理程序时,被捕捉的信号会被加入到当前进程的信号屏蔽字中,以防止在本次信号处理程序还没有完成的时候,再次触发该信号, 发生重入。 …

LLaMA-Factory实战推理

LLaMA-Factory官网:https://github.com/hiyouga/LLaMA-Factory 安装环境 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ conda create -n py310 python3.10 conda activate py310按照llama-factory要求的标准格式组织数据集&#xff…