集成学习-树模型

news2025/1/13 15:34:55

可以分为三部分学习树模型:

  1. 基本树(包括 ID3、C4.5、CART).
  2. Random Forest、Adaboost、GBDT
  3. Xgboost 和 LightGBM。

基本树

选择特征的准则

ID3:信息增益max

C4.5:信息增益比max

CART:基尼指数min

优缺点

ID3

核心思想是奥卡姆剃刀(决策树小优于大)

缺点:

  • ID3 没有剪枝策略,容易过拟合;
  • 信息增益准则对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于 1;
  • 只能用于处理离散分布的特征;
  • 没有考虑缺失值。

C4.5

有剪枝策略。最大的特点是克服了 ID3 对特征数目的偏重这一缺点,引入信息增益率来作为分类标准。

缺点:

  • C4.5 只能用于分类;
  • C4.5 使用的熵模型拥有大量耗时的对数运算,连续值还有排序运算;
  • C4.5 在构造树的过程中,对数值属性值需要按照其大小进行排序,从中选择一个分割点,所以只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时,程序无法运行。

CART

ID3 和 C4.5 虽然在对训练样本集的学习中可以尽可能多地挖掘信息,但是其生成的决策树分支、规模都比较大,CART 算法的二分法可以简化决策树的规模,提高生成决策树的效率。

集成学习/决策树

常见的集成学习框架有三种:Bagging,Boosting 和 Stacking

Bagging

投票法

随机森林random forest

RF 算法由很多决策树组成,每一棵决策树之间没有关联。建立完森林后,当有新样本进入时,每棵决策树都会分别进行判断,然后基于投票法给出分类结果。

在以决策树为基学习器构建 Bagging 集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,算法包括四个部分:

  1. 随机选择样本(放回抽样);
  2. 随机选择特征;
  3. 构建决策树;
  4. 随机森林投票(平均)。

优点

  1. 在数据集上表现良好,相对于其他算法有较大的优势
  2. 易于并行化,在大数据集上有很大的优势;
  3. 能够处理高维度数据,不用做特征选择。

Boosting

每个基模型都会在前一个基模型学习的基础上进行学习,最终综合所有基模型的预测值产生最终的预测结果

AdaBoost(Adaptive Boosting,自适应增强)

核心思想是:利用错分样本来弥补模型的不足

可以加入正则化项

自适应在于:

  1. 前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。
  2. 在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数

算法有三步:

  1. 初始化训练样本的权值分布,每个样本具有相同权重;
  2. 训练弱分类器,如果样本分类正确,则在构造下一个训练集中,它的权值就会被降低;反之提高。用更新过的样本集去训练下一个分类器;
  3. 将所有弱分类组合成强分类器,各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,降低分类误差率大的弱分类器的权重。
  1. 分类精度高
  2. 可以用各种回归分类模型来构建弱学习器,非常灵活
  3. 不容易发生过拟合
对异常点敏感,异常点会获得较高权重

GBDT(Gradient Boosting Decision Tree)

核心思想是:通过算梯度来弥补模型的不足(利用残差)

GBDT 由三个概念组成:Regression Decision Tree(即 DT)、Gradient Boosting(即 GB),和 Shrinkage(一个重要演变)

  • 回归树:对于分类树而言,其值加减无意义(如性别),而对于回归树而言,其值加减才是有意义的(如说年龄)。GBDT 的核心在于累加所有树的结果作为最终结果,所以 GBDT 中的树都是回归树,不是分类树
  • 梯度迭代(Gradient Boosting):
  • Shrinkage 的思想认为,每走一小步逐渐逼近结果的效果要比每次迈一大步很快逼近结果的方式更容易避免过拟合。即它并不是完全信任每一棵残差树
  1. 可以自动进行特征组合,拟合非线性数据;
  2. 可以灵活处理各种类型的数据。
对异常点敏感

XGBoost(Extreme Gradient Boosting)

核心思想是:在GBDT的基础上,通过正则化以及更高阶的优化方法来防止过拟合;

同时通过特殊的数据存储和并行计算来提高计算效率;并且可以自动处理缺失值

GBDT在优化过程中只使用了损失函数的一阶导数信息,而XGBoost使用了损失函数的一阶和二阶导数。这使得XGBoost在优化过程中考虑了目标函数的曲率,可以更准确快速地找到最优解。

缺点:1、空间消耗大。要保存数据的特征值和特征排序的结果。2、时间开销大,遍历分割点的时候需要进行分裂增益的计算,消耗的代价大。3、对cache优化不友好。在预排序后,特征对梯度的访问是一种随机访问,并且不同的特征访问的顺序不一样,无法对cache进行优化

XGBoost、LightGBM-深度简化版 - 知乎 (zhihu.com)

LightGBM(Light Gradient Boosting Machine)

是对传统GBDT和XGBoost的优化和改进

  1. 高效率:使用了直方图优化、特征并行和数据并行,训练速度非常快。

  2. 高准确率:使用了Leaf-wise的生长策略,可以更快地降低训练误差。

  3. 低内存使用:使用了直方图优化,内存使用远低于传统GBDT。

  4. 支持类别特征:无需进行one-hot编码,更方便使用

  1. 可能过拟合:由于使用了Leaf-wise的生长策略,如果不进行深度限制,可能会过拟合。

  2. 对小数据集可能效果不佳:对于数据集数量较小的情况,可能无法充分利用LightGBM的优点,甚至可能表现不如传统的GBDT。

Stacking

  1. 先用全部数据训练好基模型
  2. 每个基模型都对每个训练样本进行的预测,其预测值将作为训练样本的特征值,最终会得到新的训练样本
  3. 基于新的训练样本进行训练得到模型,然后得到最终预测结果。

总结

偏差(Bias)描述的是预测值和真实值之差;方差(Variance)描述的是预测值作为随机变量的离散程度。

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

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

相关文章

【uniapp关联unicloud,阿里云云服务空间】unicloud本地调试服务启动失败:当前项目未关联unicloud服务空间,请调整后重新运行,已解决

最近开发app项目,很多都是第一次上手 1、在Hbuider中运行项目,出现如下提示 2、项目根目录下已有uniCloud文件夹 3、如果云开发环境未创建,可以右击项目,选择创建uniCloud云开发环境 4、创建好的目录如下,index.js中…

图解三重积分的对称性

1.图解三重积分的对称性 关于三重积分详见:三重积分(Triple Integral) 三重积分的对称性原理与二重积分类似,关于二重积分的对称性详见:图解二重积分的对称性 被积函数 f ( x , y , z ) f(x,y,z) f(x,y,z)可以有不同的物理意义,…

查询设计之查询条件对结果的影响

在sql使用中,最常用的就是查询。 在实践过程中,丰富的查询场景也使得查询sql有多种写法,不同的写法会带来不同的效果 以下,就查询条件对结果的影响。 一、数据 二、需求 把查询 type A’的 user 以及 type ‘A’ 的 department…

网络爬虫的意义:连接信息世界的纽带

本文将探讨网络爬虫的意义及其在连接信息世界中的重要作用。网络爬虫作为一种自动化程序,通过收集和提取互联网上的数据,为搜索引擎、数据分析和机器学习等领域提供了宝贵的资源。同时,我们也将探讨网络爬虫的伦理和法律责任,以及…

5、DVWA——文件上传

文章目录 一、文件上传原理二、low2.1 源码分析2.2 通关步骤 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 一、文件上传原理 文件上传漏洞一般指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。文件上传…

C语言经典100例题(45)--学习使用register定义变量的方法

目录 题目 问题分析 代码 运行结果 题目 学习使用register定义变量的方法 问题分析 register是做声明的,为了提高效率。 register变量不能做取地址运算符&操作。 声明变量具有register储类型就要求编译器把变量存储在寄存器中,而不是像其他变量…

第4篇 vue的基本语法操作以及组件,声明周期,路由的操作

一 vue常用操作案例 1.1 事件渲染 1.数据渲染的方式:使用插值表达式{{}}进行数据渲染 2.数据渲染的方式:以使用 v-bind指令,它的简写的形式就是一个冒号(:),v-bind 特性被称为指令。指令带有前缀 v- 代…

OLED透明屏交互技术:开创未来科技的新篇章

OLED透明屏交互技术作为一项前沿的科技创新,正在以其高透明度、触摸和手势交互等特点,引领着未来科技的发展。 不仅在智能手机、可穿戴设备和汽车行业有着广泛应用,还在广告和展示领域展现出巨大的潜力。 那么,尼伽在这篇文章中将…

无涯教程-JavaScript - DDB函数

描述 DDB函数使用双倍余额递减法或您指定的某些其他方法返回指定期间内资产的折旧。 语法 DDB (cost, salvage, life, period, [factor])争论 Argument描述Required/OptionalCostThe initial cost of the asset.RequiredSalvage 折旧结束时的价值(有时称为资产的残值)。 该…

三、lock类的编写与解析 —— TinyWebServer

lock类的编写与解析 —— TinyWebServer 一、前言 这个类的作用作者已经给了解释 —— “多线程同步,确保任一时刻只能有一个线程能进入关键代码段.” 对于这句话其实看了,会有似懂非懂的感觉,然后写代码的时候,就会完全不懂。其…

分享一个开发者和设计者的免费图标库

图标是现代界面设计的不可或缺的一部分,无论是移动应用、网页设计还是软件界面。然而,许多开发者和设计师都面临着一个共同的挑战:寻找高品质、开源且免费的矢量图标资源。在这个领域,Yesicon 脱颖而出,成为了一个备受…

【计算机网络】UDP数据包是如何在网络中传输的?

List item 创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多计算机网络知识专栏&#xff1a;计算机网络&#x1f525;…

【性能测试】中间件优化

1、Tomcat 优化连接数、线程池 打开tomcat安装目录\conf\server.xml文件&#xff0c;在server.xml中 有以下配置&#xff1a; tomcat HTTP/1.1 <Connector port"8080" protocol"HTTP/1.1" maxThreads"1000" acceptCount"1500" c…

Python网络爬虫库:轻松提取网页数据的利器

网络爬虫是一种自动化程序&#xff0c;它可以通过访问网页并提取所需的数据。Python是一种流行的编程语言&#xff0c;拥有许多强大的网络爬虫库。在本文中&#xff0c;我们将介绍几个常用的Python网络爬虫库以及它们的使用。 Requests库 Requests是一个简单而优雅的HTTP库&…

mysql中GROUP_CONCAT函数详解

GROUP_CONCAT是MySQL中的一个聚合函数&#xff0c;它用于将多行数据按照指定的顺序连接成一个字符串&#xff0c;并返回结果。下面是对GROUP_CONCAT函数的详解&#xff1a; 语法&#xff1a; GROUP_CONCAT([DISTINCT] expr [,expr …] [ORDER BY {unsigned_integer | col_name…

揭秘动态网页与JavaScript渲染的处理技巧

大家好&#xff01;作为一名互联网技术爱好者&#xff0c;今天我要和大家分享一个关于Python数据采集的重要技巧——处理动态网页与JavaScript渲染&#xff01;这是一项在数据获取领域中非常关键的技能&#xff0c;让我们一起揭秘它的神秘面纱吧&#xff01; 首先&#xff0c;让…

antd-vue - - - - - select自定义渲染[封装select组件]

select自定义渲染[封装select组件] 1. 期望效果2. 代码展示 1. 期望效果 标签值和option展示不一致&#xff01; 2. 代码展示 官网地址:【antd-vue select】 封装的select组件&#xff1a; <template><a-form ref"refForm" :model"selectConfig&…

K8S1.23.6版本详细安装教程以及错误解决方案(包括前置环境,使用部署工具kubeadm来引导集群)

准备工作&#xff08;来自官方文档&#xff09; 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令。每台机器 2 GB 或更多的 RAM&#xff08;如果少于这个数字将会影响你应用的运行内存&#xf…

Python中的包管理方法

在Python开发中&#xff0c;包管理与依赖问题一直是开发者头疼的问题之一。随着项目规模的增大和复杂性的增加&#xff0c;管理各种依赖包和解决版本冲突变得尤为重要。本文将分享解决Python中的包管理与依赖问题的方法和工具&#xff0c;帮助开发者更好地管理项目中的依赖关系…

Chrome浏览器旧版本和驱动114113老版本下载

搜了下硬盘&#xff0c;只发现了78版本和113版本的&#xff0c;找114版本的没找到 浏览器安装包和驱动都有&#xff0c;配套使用 113版本已关闭自动更新&#xff0c;78版本包含360极速浏览器 链接&#xff1a;点击进入网盘下载 提取码&#xff1a;XjAu