集成学习详细介绍

news/2024/9/21 18:51:39 标签: 人工智能, boosting, 算法, 集成学习

以下内容整理于:

  1. 斯图尔特.罗素, 人工智能.现代方法 第四版(张博雅等译)
  2. 机器学习_温州大学_中国大学MOOC(慕课)
  3. XGBoost原理介绍------个人理解版_xgboost原理介绍 个人理解-CSDN博客

集成学习(ensemble):选择一个由一系列假设h1, h2, …, hn构成的集合,通过投票、平均或其他形式的机器学习方法将他们的预测进行组合。我们称单独的假设为基模型(base model),其组合后的模型称为集成模型(ensemble model)

集成学习主要有三种集成方法,Bagging(自主聚合法),boosting(提升法) 和stacking(堆叠法)。

在统计学中,有放回的重复采样方法被称为Bootstrap (自助法),Bagging是bootstrap aggregating的缩写。

目录

1. Bagging(自主聚合法)

随机森林模型(Random forest):

2. Boosting(提升法)

boosting%EF%BC%8C%E8%87%AA%E9%80%82%E5%BA%94%E6%8F%90%E5%8D%87%E6%B3%95)%3A-toc" style="margin-left:40px;">AdaBoost(adaptive boosting,自适应提升法):

XGBoost(eXtreme Gradient Boosting,极端梯度提升)算法:

GBDT(Gradient Boosting Decision Tree)算法

LightGBM算法

3. Stacking(堆叠法):


1. Bagging(自主聚合法)

从训练集中进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果:

Bagging可应用于任何类型的模型,但最常应用于决策树模型。

Bagging的优点:可以并行计算,非常高效。

随机森林模型(Random forest):

随机森林模型是Bagging在决策树模型上应用的一种形式。

主要思想:在分割点的属性选择上进行随机化,具体操作就是,假如我们总共有n个属性,在构建决策树为每个节点选择split属性时,在全部n个属性中随机挑选n1/2(即根号n)个属性作为属性子集(对于分类问题),或选择n/3个属性作为属性子集(对于回归问题),让算法只在这个子集中选择split属性。如此操作,使得随机森林模型实现了众多决策树基模型之间的低关联性或没有关联,而基础的Bagging做不到这一点。


2. Boosting(提升法)

序贯算法,按次序一一训练(实现上可以做到并行),生成一系列基模型。在序贯训练过程中,基模型使用的训练集每次都按照某种策略进行一定的调整。

boosting%EF%BC%8C%E8%87%AA%E9%80%82%E5%BA%94%E6%8F%90%E5%8D%87%E6%B3%95)%3A" style="margin-left:0px;text-align:justify;">AdaBoost(adaptive boosting,自适应提升法):

核心思想:给每个样例赋予一个权重Wj,该权重代表样例在训练过程中应计数的次数,样例的权重越大代表样例在模型训练的过程中发挥的作用越大。自适应提升法从训练集所有样例具有相等的权重wj开始,根据该训练集,我们训练第1个基模型h1,h1会对一些训练样例进行正确分类,而对另一些训练样例错误分类。我们希望第二个基模型能在被分类错误的样例中表现得更好,因此我们将增加在第一个基模型中被错误分类的样例的权重,同时减小在第一个基模型中被正确分类的样例的权重,然后开始训练第2个基模型………………按照次序,训练一系列的基模型。最后将所有基模型按照不同的权重综合成一个集成模型,预测效果比较好的树占有的权重大,预测效果差的基模型占了权重小。

后一个基模型的训练永远是在前一个基模型的基础上完成的!


XGBoost(eXtreme Gradient Boosting,极端梯度提升)算法:

XGBoost算法又快又准确,颇受欢迎!

XGBoost算法是一种加法模型,往模型中不断添加新的树。XGBoost算法将模型上一次预测(由t-1棵树组合而成的模型)产生的误差作为参考建立下一棵树(第t棵树)

加法策略:

初始化(模型中没有树时,其预测结果为0):

往模型中加入第一棵树:

往模型中加入第二棵树:这里的f2即为由上一次预测产生的误差作为参考建立的第2棵树,f2(xi)为第2棵树的预测结果。

…………

往模型中加入第t棵树:

其中表示第棵树,表示组合了棵树的模型对样本的预测结果。

注:一棵树等同于基模型


GBDT(Gradient Boosting Decision Tree)算法

是一种迭代的决策树算法,该算法由多棵决策树组成,GBDT和XGBoost算法很相似,都是累加所有树的结果作为最终结果,两者的区别在于两者对目标函数(即代价函数)的求解过程不同,GBDT算法在求解过程中用到了残差(residual)思想,XGBoost算法在求解过程中用到了n阶泰勒展开的思想。其他方面,两者基本无区别。

GBDT算法的代价函数的部分求解过程:

泰勒展开式:

XGBoost算法的代价函数的部分求解过程:

XGBoost算法代价函数详细求解过程请参考:XGBoost原理介绍------个人理解版_xgboost原理介绍 个人理解-CSDN博客


LightGBM算法

LightGBM算法是以XGBoost算法为基础改进的算法,相较于XGBoost算法,LightGBM算法训练速度更快,内存占用更少。XGBoost算法和LightGBM算法都是目前使用较多的算法

LightGBM与XGBoost相比,主要有以下几个改进:
• 基于梯度的单边采样算法(Gradient-based One-Side Sampling, GOSS);
• 互斥特征捆绑算法(Exclusive Feature Bundling, EFB);
• 直方图算法(Histogram);
• 基于最大深度的 Leaf-wise 的垂直生长算法
LightGBM = XGBoost + GOSS + EFB+ Histogram


3. Stacking(堆叠法):

在相同训练集中使用不同基模型类训练多个基模型,然后将这些基模型组合成集成模型。

将训练好的所有基模型对训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,然后使用(来自基模型预测的)新的训练集和预先留出的验证数据对集成模型进行训练。

这种方法适合于团队分工,团队内的每个人独立工作,使用共同的训练集训练完善自己负责的基模型,最后把每个人的基模型汇聚到一起,建立最终的堆叠集成模型。


http://www.niftyadmin.cn/n/5669281.html

相关文章

【Python】Anaconda插件:Sublime Text中的Python开发利器

上班的时候没人问我苦不苦,下班的时候总有人问为什么走这么早。 Anaconda 是一个专为Sublime Text打造的开源Python开发插件,旨在为开发者提供类似于IDE的丰富功能,提升Python编码效率。该插件提供了代码补全、语法检查、代码片段提示等多项…

基于FPGA+GPU异构平台的遥感图像切片解决方案

随着遥感和成像技术的不断进步和普及,获取大量高分辨率的遥感图像已成为可能。这些大规模的遥感图像数据需要进行有效的处理和分析,以提取有用的信息,进行进一步的应用。遥感图像切片技术应运而生,该技术可以将大型遥感图像分割成…

C++初始化列表详解 + explicit关键字

构造函数初始化列表 构造函数: class Date { public:// 构造函数Date(int year 0, int month 1, int day 1){_year year;_month month;_day day;//可以修改值_year 2024;_month 9;_day 21;} private:int _year;int _month;int _day; }; 这样的构造函数和…

神经网络 归一化层

为什么要进行网络归一化层? 神经网络训练过程中,当网络层数较多的时候,每一轮训练每个网络层的参数都会发生变化,那么网络层参数变化会有什么影响呢? 1. 向网络中输入相同分布的样本时,由于每一层网络的参…

PCF8563驱动源码

提供年、月、日、星期,时、分、秒计时,使用外置32.768Khz晶振。低后备电流:0.25uA,VDD3.0V,温度25℃。IIC接口,速度最高400KHz。可编程时钟输出,可以供其他设备使用,可输出的时钟频率…

Java 19 新特性-结构化并发(Structured Concurrency)[Preview]

Java 19 新特性:结构化并发(Structured Concurrency)[预览] Java 19 在并发编程领域引入了一个全新的概念——结构化并发(Structured Concurrency),作为预览功能发布。这一特性旨在简化并发任务的管理&…

[Python数据可视化]探讨数据可视化的实际应用:三个案例分析

数据可视化是理解复杂数据集的重要工具,通过图形化的方法,可以直观地展示信息、趋势和模式。本文将深入探讨三个实际案例,包括健康数据分析、销售趋势分析、城市交通流量分析。每个案例将提供假设数据、详细注释的代码及分析结果。 案例 1: …

mdadm 命令:软RAID管理

一、命令简介 ​mdadm​ 是 Linux 下用于管理软件 RAID 设备的工具,可以创建、管理和监控软件 RAID 阵列。 ‍ 创建 RAID 需要多个环节,多个命令搭配使用: ​gdisk​ ​命令创建格式为 Linux RAID​ ​的磁盘分区​mdadm​ ​命令将多个 …