《XGBoost算法的原理推导》12-14决策树复杂度的正则化项 公式解析

本文是将文章《XGBoost算法的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。


我们定义一颗树的复杂度 Ω Ω Ω,它由两部分组成:

  • 叶子结点的数量;
  • 叶子结点权重向量的 L 2 L2 L2范数;
    在这里插入图片描述

公式(12-14)是:

Ω ( f t ) = γ T + 1 2 λ ∑ j = 1 T w j 2 \Omega(f_t) = \gamma T + \frac{1}{2} \lambda \sum_{j=1}^{T} w_j^2 Ω(ft)=γT+21λj=1Twj2

是在 XGBoost 中用于正则化的公式,它描述了第 t t t 轮生成的树 f t f_t ft 的复杂度惩罚项。XGBoost 的正则化项通过控制树的复杂度来防止过拟合,从而提高模型的泛化能力。

公式中的符号解释

  1. Ω ( f t ) \Omega(f_t) Ω(ft):表示第 t t t 轮生成的树 f t f_t ft 的正则化项,作为模型复杂度的惩罚。XGBoost 的目标函数包含损失项和正则化项,正则化项的目的是控制树的复杂度。

  2. T T T:树的叶子节点总数。树的复杂度通常与叶子节点数量直接相关,更多的叶子节点通常意味着更复杂的树结构。

  3. γ \gamma γ:控制叶子节点数的正则化参数。它决定了树的叶子节点数对模型复杂度的影响。较大的 γ \gamma γ 值会增加每增加一个叶子节点的成本,从而限制树的生长。

  4. w j w_j wj:第 j j j 个叶子节点的权重值。每个叶子节点都有一个预测值(权重),用于预测所有落入该节点的样本的值。

  5. λ \lambda λ:控制叶子节点权重大小的正则化参数。它用于限制叶子节点权重的大小,防止权重过大导致模型对训练数据的过拟合。

公式的分解与理解

公式可以分为两个部分:

第一部分:叶子节点数量惩罚项

γ T \gamma T γT

  • 这一部分表示树中叶子节点数量的惩罚, γ \gamma γ 是正则化参数,控制每增加一个叶子节点的复杂度成本。
  • 树的叶子节点越多,模型的表达能力越强,但也更容易出现过拟合。因此,通过增加叶子节点的成本,XGBoost 可以有效地限制树的复杂度。
  • 较大的 γ \gamma γ 值会让树的叶子节点数量减少,从而使模型更加简单,增强泛化能力。
第二部分:叶子节点权重惩罚项

1 2 λ ∑ j = 1 T w j 2 \frac{1}{2} \lambda \sum_{j=1}^{T} w_j^2 21λj=1Twj2

  • 这一部分是对叶子节点权重的正则化,通过惩罚权重的平方和来限制权重的大小。
  • λ \lambda λ 是控制权重大小的正则化参数。较大的 λ \lambda λ 值会对权重 w j w_j wj 施加更大的惩罚,从而抑制每个叶子节点的输出值。
  • 权重 w j w_j wj 的平方和表示所有叶子节点的权重复杂度。通过限制权重的大小,XGBoost 可以防止某些叶子节点权重过大,以避免模型对训练样本的过拟合。

正则化项的作用

  1. 防止过拟合:正则化项通过限制叶子节点数量 T T T 和叶子节点权重 w j w_j wj 的大小,来控制树的复杂度,从而减少模型的过拟合风险。
  2. 增强泛化能力:通过控制模型的复杂度,XGBoost 可以更好地在新数据上表现。正则化项让模型不再过于依赖训练数据中的特定模式,而是更关注数据的整体结构。
  3. 控制模型复杂度 γ \gamma γ λ \lambda λ 参数为用户提供了控制模型复杂度的手段,用户可以通过调整这两个超参数,来选择合适的树结构和节点权重,找到泛化能力和训练精度之间的最佳平衡。

总结

公式(12-14)

Ω ( f t ) = γ T + 1 2 λ ∑ j = 1 T w j 2 \Omega(f_t) = \gamma T + \frac{1}{2} \lambda \sum_{j=1}^{T} w_j^2 Ω(ft)=γT+21λj=1Twj2

XGBoost 的正则化项,用于控制树的复杂度。第一部分 γ T \gamma T γT 惩罚树的叶子节点数量,防止模型过于复杂;第二部分 1 2 λ ∑ j = 1 T w j 2 \frac{1}{2} \lambda \sum_{j=1}^{T} w_j^2 21λj=1Twj2 惩罚叶子节点权重的大小,防止某些节点权重过大而导致的过拟合。通过正则化项,XGBoost 可以有效地控制模型的复杂度,从而在训练精度和泛化能力之间取得平衡。


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

相关文章

代码随想录之字符串刷题总结

目录 1.反转字符串 2.反转字符串II 3.替换数字 4.翻转字符串里面的单词 5.右旋&&左旋字符串 1.反转字符串 题目描述: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外…

十五:java web(7)-- Spring Boot

目录 1. Spring Boot 简介 1.1 简介 1.2 Spring Boot 的特点 1.3 Spring Boot 和 Spring 的关系 2. Spring Boot 快速入门 2.1 创建第一个 Spring Boot 项目 3. Spring Boot 配置管理 3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐…

计算机网络——TCP篇

TCP篇 基本认知 TCP和UDP的区别? TCP 和 UDP 可以使用同一个端口吗? 可以的 传输层中 TCP 和 UDP在内核中是两个完全独立的软件模块。可以根据协议字段来选择不同的模块来处理。 TCP 连接建立 TCP 三次握手过程是怎样的? 一次握手:客户端发送带有 …

VMware 虚拟机使用教程及 Kali Linux 安装指南

VMware 虚拟机使用教程及 Kali Linux 安装指南 在现代计算机科学与网络安全领域,虚拟化技术的应用越来越广泛。VMware 是一款功能强大的虚拟化软件,可以帮助用户在同一台物理机上运行多个操作系统。本文将详细介绍如何使用 VMware 虚拟机,并…

R包下载太慢安装中止的解决策略-R语言003

在使用R语言的过程中,经常会遇到因R包下载速度太慢而导致安装失败或中断的情况。几乎每个使用R的生物信息学研究人员都体会过这种困扰!这主要是由于网络环境和服务器位置的原因,使得R包下载速度极为缓慢,进而影响了正常的研究工作…

修改openeuler系统uio映射内存读写权限方法一览表

在 openEuler 系统中,要修改 UIO 驱动映射的内存区域的读写属性,可以通过以下几个方法来实现,具体方法取决于你使用的 UIO 驱动类型和是否需要对设备树进行更改。 ### 方法 1:使用设备树(DTS)配置读写属性…

大模型学习笔记------CLIP模型解读与思考

大模型学习笔记------CLIP模型详解 1、为什么提出CLIP模型2、CLIP模型详解3、CLIP模型的意义4、一些思考 上文说到,多模态大模型应该是非常有发展前景的,首先来学习 CLIP(Contrastive Language-Image Pretraining)这个多模态模型…

C++ 并发专题 - 条件变量的使用

一:概述: 在 C 中,条件变量(std::condition_variable)是一种用于线程间同步的机制,主要用于在多线程环境中让一个线程等待某个条件满足后再继续执行。条件变量通常配合互斥锁(std::mutex&#…