1 GBDT:梯度提升决策树

       1 前言

        前面简单梳理的基本的决策树算法,那么如何更好的使用这个基础算法模型去优化我们的结果是本节要探索的主要内容。

        梯度提升决策树(Gradient Boosting Decision Trees)是一种集成学习方法,通常用于解决回归和分类问题。它通过串联多棵决策树来构建一个强大的模型。在训练过程中,每棵树(CART树)都试图纠正前一棵树的错误,以逐步改进模型的性能。

        在boosting算法家族中,除了adaboost会使用分类决策树为基学习器以外,其余算法如GBDT、XGBoost等,都是建立在CART回归树的基础上,换句话说就是不管处理分类问题还是回归问题,基学习器都是CRAT回归树

2 梯度提升树

2.1 整体架构

       提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树(boosting tree)。

2.1.1 提升树算法

提升树算法采用前向分步算法 :

f_{0}(x) = 0

f_{1} (x)= T_{1}(x;\phi _{1}) + f_{0}(x)

...

f_{m} (x)= T_{m}(x;\phi _{m}) + f_{m-1}(x)

通过经验风险最小化确定参数,

\hat{\phi }_{m} = argmin\sum_{i=1}^{N}L(y_{i},f_{m-1}(x_{i})+T(x_{i});\phi _{m}))

简单来说,前面大众(继承树)没有完成的由后面的人(决策树)继续完成。

2 CART树

1 回归树

ref: 决策树一一CART算法(第三部分)-CSDN博客


输入: 训练数据集D;

输出:回归树f(x);

  1. 循环遍历每个特征 j ,每个特征的值 c:寻找最佳分割点(左边是c_1, 右边是c_2):
  2. \underset{j,s}{min}[ \underset{c_{1}}{min}\sum_{x_{i} \epsilon R_{1}(j,s) } (y_{i}-c_{1})^2) + \underset{c_{2}}{min}\sum_{x_{i} \epsilon R_{1}(j,s) } (y_{i}-c_{2})^2) ]
  3. 选定j,s之后,对数据进行切分,计算切分之后的区域值大小(改区域样本的均值)。

               \hat{c}_{1} = avg(y_{i}|x_{i}, x_{i}\epsilon R_{1}(j,s)))

                \hat{c}_{2} = avg(y_{i}|x_{i}, x_{i}\epsilon R_{2}(j,s))); 

  • 4 继续迭代,一直到满足条件为止;

分类树

2 GDBT算法原理

         GBDT 无论分类还是回归基本树都是cart,每一颗的树都是去弥补前面树的不足(即残差:真实值与预测值之间的差异),然后一步一步的迭代。

        何以梯度能够代表残差呢?如果损失函数是平方损失或者指数损失时候,按照拟合残差的原理每一步优化就很直观,但是其他损失函数呢?

                                                     损失函数求导: -[\frac{\partial L(y,f(x_{i}))}{\partial f(x_{i})}]_{f(x_{i})=f_{m-1}(x_{i})}

                                                     L(y,f(x)) = \frac{(y-f(x))^2}{2}\\\\ -[\frac{\partial L(y,f(x))}{\partial f(x)}] = y-f(x)

二分类

损失函数求导过程:

l = loss(y_i,\hat{y}_i))) = - \sum (y_ilog\hat{y}_i +(1-y_i)log(1-\hat{y}_i))\\ \frac{\partial l}{\partial f(x)} = -(\sum y_ilog\frac{\hat{y_i}}{1-\hat{y_i}} + log(1-\hat{y_i})\\ 1 - \hat{y_i} = \frac{1}{1+e^{f(x_i)}}\\ \hat{y_i} = \frac{e^{f(x_i) }}{1+e^{f(x_i)} }\\ l = -(\sum y_if(x_i)) + log(1+e^{f(x_i) })\\ \frac{\partial l}{\partial f(x)} = y_i - f(x_i)

多分类

多分类我们在训练的时候,是针对样本X每个可能的类都训练一个分类回归树。

总之二分类 一棵树,多分类多棵树。

3 面试常见题目

  • gbdt如何选择特征?

        遍历每一个点,分裂后误差(损失函数)最小的,就是最优的。 原始的gbdt的做法非常的暴力,首先遍历每个特征,然后对每个特征遍历它所有可能的切分点。

ref: GBDT算法原理及实战-CSDN博客

ref: GBDT算法详解&算法实例(分类算法)_gbdt二分类预测值-CSDN博客

ref:决策树一一CART算法(第三部分)_cart树案例-CSDN博客

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

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

相关文章

DC/DC电源模块直流升压变换器电压控制输出5V12V24V转0-50V80V110V150V180V200V250V300V500V800V1000V

特点 效率高达 75%以上1*2英寸标准封装单电压输出可直接焊在PCB 上工作温度: -40℃~75℃阻燃封装,满足UL94-V0 要求温度特性好电压控制输出,输出电压随控制电压线性变化 应用 GRB 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、…

【ElasticSearch】安装

1.官网寻找合适版本下载 这里我选择的是8.11.1 2.解压并启动 然后在浏览器输入http://localhost:9200/,判断是否启动成功 如下所示,则表示启动成功 安装过程中遇到过几个bug,记录在这篇文章中 【ElasticSearch】安装(bug篇&am…

六、OpenFeign服务接口调用

一、提问 已经有loadbalancer为什么还要学习OpenFeign? 两个都有道理的话,日常用那个? 二、是什么 OpenFeign是什么 官网翻译 Feign是一个声明性web服务客户端。它使编写web服务客户端变得更容易。使用Feign创建一个接口并对其进行注释。它具有可…

一键生成绘画作品,国内提供的7款AI绘画软件推荐

随着人工智能的迅猛发展,给我们的工作和兴趣带来了极大的便利。尤其是在绘画领域,随着越来越多的AI绘画工具的问世,我们能够以惊人的速度创作出精美的插图和照片。因此,本文将为大家介绍7款备受推崇的AI绘画软件~ 1.爱制作AI 爱制…

连连看游戏页面网站源码,直接使用

可以上传自己喜欢的图片 游戏页面 通关页面 源码免费下载地址抄笔记 (chaobiji.cn)

Java面试题:2024面试全攻略+BTA内部密卷 视频教程+springboot

基础篇 1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 阿里内部资料 基本类型 大小(字节) 默认值 封装类 6、Java自动装箱与拆箱 装箱就是…

ChatGPT 可以预测未来吗?

推荐 4月13日的一篇有趣的 paper,特来分享。 👉 当前的大型语言模型(LLMs)具有强大的数据合成和推理能力,但它们在直接预测尚未发生事件的准确性上常常受到限制。传统的预测方法依赖于直接询问模型关于未来的问题。 …

算法思想总结:链表

一、链表的常见技巧总结 二、两数相加 . - 力扣(LeetCode) class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {//利用t来存进位信息int t0;ListNode*newheadnew ListNode(0);//创建一个哨兵节点,方便尾插List…

现在新开两融账户融资利率最低可以多少?5%~4.5%

两融是融资和融券的简称,是一种信用交易的方式,可以让投资者在股票市场上放大收益,也放大风险。融资是指投资者向证券公司借入资金,用于买入股票或其他证券,期待价格上涨后卖出,赚取差价,并在约…

记录Python链接mysql数据的增删改查方法

一、添加方法 db pymysql.connect(hostlocalhost,userroot,password123456,dbpython) cursor db.cursor() sql """insert into EMPLOYEEVALUES(3,张,天爱,35,F,8000) """ try:cursor.execute(sql)db.commit() #提交后,数据才会变 …

顺序表(快速上手数据结构)

在介绍ArrayList之前, 我们需要先了解List. List是一个接口,它继承于Collection接口(Collection又继承于最顶层的接口Iterable). 从数据结构的角度来看,List就是一个线性表(Linear List),即n个具有相同类型元素的有限序列, 在该序列上可以执行增删查改等操作. 注意: List是一…

自动化测试之httprunner框架hook函数实操

本篇介绍httprunner中hook函数的使用,以及通过编程能力实现建设自动化测试更全面的场景覆盖 前置: 互联网时代让我们更快的学习到什么是Httprunner 正文: 经过上文了解到这个框架怎么使用之后,我们开始来探讨一下我们为什么要用…

【教程】一个比较良心的C++代码混淆器

这是一个比较良心的C代码混淆器,用于信息竞赛训练和保护代码免受抄袭。本文将介绍这个混淆器的使用方法、混淆效果和已知的一些bug。同时,我们也会给出一些示例来演示混淆器的具体操作。 引言 在信息竞赛训练和实际开发中,保护代码的安全性和…

汇编程序设计

文章目录 第一章8086的存储器组织寻址方式立即数寻址方式寄存器寻址方式存储器寻址方式直接寻址方式寄存器间接寻址寄存器相对寻址方式寄存器基址变址寻址相对基址变址寻址相对方式的补充 数据寻址方式的组合 第一章 8086的存储器组织 存储单元的地址 “段基地址:段…

Adobe AE(After Effects)2021下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件,由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能,可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…

【C语言】每日一题,快速提升(2)!

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 题目:杨氏矩阵 有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个…

error: failed to push some refs to ‘https://gitee.com/zhao-zhimin12/gk.git‘

git push origin master发现以下报错: 解决办法: 一、强制推送 git push origin master -f (加上 -f 就是强制) 二、 先拉取最新代码,再推送 1.git pull origin master 2.git push origin master

保护视力,从 CareUEyes 开始 —— 你的电脑护眼小助手

在数字化时代,我们的眼睛比以往任何时候都更频繁地面对屏幕。长时间盯着电脑工作,不仅影响视力,还可能导致眼疲劳和不适。今天,我要向大家推荐一款专为电脑用户设计的护眼软件——CareUEyes。 CareUEyes:你的视力守护者…

Linux系统中LVM与磁盘配额

目录 一、LVM逻辑卷管理 二、LVM的管理命令 物理卷管理 卷组管理 逻辑卷管理 *创建并使用LVM步骤 三、磁盘配额概述 实现磁盘限额的条件 Linux 磁盘限额的特点 四、磁盘配额管理 磁盘限额 一、LVM逻辑卷管理 能够在保持现有数据不变的情况下动态调整磁盘容量&#…

C++算法题 - 矩阵

目录 36. 有效的数独54. 螺旋矩阵48. 旋转图像73. 矩阵置零289. 生命游戏 36. 有效的数独 LeetCode_link 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现…