当前位置:

首页 > 业界资讯 > 梯度提升算法决策过程的逐步可视化

梯度提升算法决策过程的逐步可视化

梯度提升算法是最常用的集成机器学习技术之一,该模型使用弱决策树序列来构建强学习器。这也是XGBoost和LightGBM模型的理论基础,所以在这篇文章中,我们将从头开始构建一个梯度增强模型并将其可视化。梯度提升算法介绍梯度提升算法(GradientBoosting)是一种集成学习算法,它通过构建多个弱分类器,然后将它们组合成一个强分类器来提高模型的预测准确率。梯度提升算法的原理可以分为以下几个步骤:初始化模型:一般来说,我们可以使用一个简单的模型(比如说决策树)作为初始的分类器。计算损失函数的负梯度:计

梯度提升算法是最常用的集成机器学习技术之一,该模型使用弱决策树序列来构建强学习器。这也是XGBoost和LightGBM模型的理论基础,所以在这篇文章中,我们将从头开始构建一个梯度增强模型并将其可视化。

梯度提升算法介绍

梯度提升算法(Gradient Boosting)是一种集成学习算法,它通过构建多个弱分类器,然后将它们组合成一个强分类器来提高模型的预测准确率。

梯度提升算法的原理可以分为以下几个步骤:

  1. 初始化模型:一般来说,我们可以使用一个简单的模型(比如说决策树)作为初始的分类器。
  2. 计算损失函数的负梯度:计算出每个样本点在当前模型下的损失函数的负梯度。这相当于是让新的分类器去拟合当前模型下的误差。
  3. 训练新的分类器:用这些负梯度作为目标变量,训练一个新的弱分类器。这个弱分类器可以是任意的分类器,比如说决策树、线性模型等。
  4. 更新模型:将新的分类器加入到原来的模型中,可以用加权平均或者其他方法将它们组合起来。
  5. 重复迭代:重复上述步骤,直到达到预设的迭代次数或者达到预设的准确率。

由于梯度提升算法是一种串行算法,所以它的训练速度可能会比较慢,我们以一个实际的例子来介绍:

假设我们有一个特征集Xi和值Yi,要计算y的最佳估计

梯度提升算法决策过程的逐步可视化

我们从y的平均值开始

梯度提升算法决策过程的逐步可视化

每一步我们都想让F_m(x)更接近y|x。

梯度提升算法决策过程的逐步可视化

在每一步中,我们都想要F_m(x)一个更好的y给定x的近似。

首先,我们定义一个损失函数

梯度提升算法决策过程的逐步可视化

然后,我们向损失函数相对于学习者Fm下降最快的方向前进:

梯度提升算法决策过程的逐步可视化

因为我们不能为每个x计算y,所以不知道这个梯度的确切值,但是对于训练数据中的每一个x_i,梯度完全等于步骤m的残差:r_i!

所以我们可以用弱回归树h_m来近似梯度函数g_m,对残差进行训练:

梯度提升算法决策过程的逐步可视化

然后,我们更新学习器

梯度提升算法决策过程的逐步可视化

这就是梯度提升,我们不是使用损失函数相对于当前学习器的真实梯度g_m来更新当前学习器F_{m},而是使用弱回归树h_m来更新它。

梯度提升算法决策过程的逐步可视化

也就是重复下面的步骤

1、计算残差:

梯度提升算法决策过程的逐步可视化

2、将回归树h_m拟合到训练样本及其残差(x_i, r_i)上

3、用步长alpha更新模型

梯度提升算法决策过程的逐步可视化

看着很复杂对吧,下面我们可视化一下这个过程就会变得非常清晰了

决策过程可视化

这里我们使用sklearn的moons 数据集,因为这是一个经典的非线性分类数据

import numpy as np
 import sklearn.datasets as ds
 import pandas as pd
 import matplotlib.pyplot as plt
 import matplotlib as mpl
 
 from sklearn import tree
 from itertools import product,islice
 import seaborn as snsmoonDS = ds.make_moons(200, noise = 0.15, random_state=16)
 moon = moonDS[0]
 color = -1*(moonDS[1]*2-1)
 
 df =pd.DataFrame(moon, columns = ['x','y'])
 df['z'] = color
 df['f0'] =df.y.mean()
 df['r0'] = df['z'] - df['f0']
 df.head(10)

让我们可视化数据:

梯度提升算法决策过程的逐步可视化

下图可以看到,该数据集是可以明显的区分出分类的边界的,但是因为他是非线性的,所以使用线性算法进行分类时会遇到很大的困难。

梯度提升算法决策过程的逐步可视化

那么我们先编写一个简单的梯度增强模型:

def makeiteration(i:int):
"""Takes the dataframe ith f_i and r_i and approximated r_i from the features, then computes f_i+1 and r_i+1"""
clf = tree.DecisionTreeRegressor(max_depth=1)
clf.fit(X=df[['x','y']].values, y = df[f'r{i-1}'])
df[f'r{i-1}hat'] = clf.predict(df[['x','y']].values)
 
eta = 0.9
df[f'f{i}'] = df[f'f{i-1}'] + eta*df[f'r{i-1}hat']
df[f'r{i}'] = df['z'] - df[f'f{i}']
rmse = (df[f'r{i}']**2).sum()
clfs.append(clf)
rmses.append(rmse)

上面代码执行3个简单步骤:

将决策树与残差进行拟合:

clf.fit(X=df[['x','y']].values, y = df[f'r{i-1}'])
 df[f'r{i-1}hat'] = clf.predict(df[['x','y']].values)

然后,我们将这个近似的梯度与之前的学习器相加:

df[f'f{i}'] = df[f'f{i-1}'] + eta*df[f'r{i-1}hat']

最后重新计算残差:

df[f'r{i}'] = df['z'] - df[f'f{i}']

步骤就是这样简单,下面我们来一步一步执行这个过程。

第1次决策

梯度提升算法决策过程的逐步可视化

Tree Split for 0 and level 1.563690960407257

梯度提升算法决策过程的逐步可视化

第2次决策

梯度提升算法决策过程的逐步可视化

Tree Split for 1 and level 0.5143677890300751

梯度提升算法决策过程的逐步可视化

第3次决策

梯度提升算法决策过程的逐步可视化

Tree Split for 0 and level -0.6523728966712952

梯度提升算法决策过程的逐步可视化

第4次决策

梯度提升算法决策过程的逐步可视化

Tree Split for 0 and level 0.3370491564273834

梯度提升算法决策过程的逐步可视化

第5次决策

梯度提升算法决策过程的逐步可视化

Tree Split for 0 and level 0.3370491564273834

梯度提升算法决策过程的逐步可视化

第6次决策

梯度提升算法决策过程的逐步可视化

Tree Split for 1 and level 0.022058885544538498

梯度提升算法决策过程的逐步可视化

第7次决策

梯度提升算法决策过程的逐步可视化

Tree Split for 0 and level -0.3030575215816498

梯度提升算法决策过程的逐步可视化

第8次决策

梯度提升算法决策过程的逐步可视化

Tree Split for 0 and level 0.6119407713413239

梯度提升算法决策过程的逐步可视化

第9次决策

梯度提升算法决策过程的逐步可视化

可以看到通过9次的计算,基本上已经把上面的分类进行了区分

梯度提升算法决策过程的逐步可视化

我们这里的学习器都是非常简单的决策树,只沿着一个特征分裂!但整体模型在每次决策后边的越来越复杂,并且整体误差逐渐减小。

plt.plot(rmses)

梯度提升算法决策过程的逐步可视化

这也就是上图中我们看到的能够正确区分出了大部分的分类

如果你感兴趣可以使用下面代码自行实验:

​https://github.com/trenaudie/GradientBoostingVisualized/blob/main/fromScratch.ipynb​


本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
业界资讯 机器学习
相关文章 更多
机器学习之父MichaelJordan:AGl是炒作,AI的下一个战场是经济学
机器学习之父MichaelJordan:AGl是炒作,AI的下一个战场是经济学

机器学习奠基人MichaelJordan认为AGI是公关炒作,AI的真正挑战在于让系统学会协调。他主张机器学习必须与经济学结合,关注不确定性、激励机制和数据流动等社会系统性问题,而非单纯追求模型能力。

手写线程池,对照学习ThreadPoolExecutor线程池实现原理!
手写线程池,对照学习ThreadPoolExecutor线程池实现原理!

持续坚持原创输出,点击蓝字关注我吧 ❝ 沉淀、分享、成长,让自己和他人都能有所收获! ❞ 目录 一、前言二、面试题三、线程池讲解1. 先看个例子2. 手写一个线程池3. 线程池源码分析四、总结五、系列推荐一、前言人看手机,机器学习!正好是2020年,看到这张图还是蛮有意思的。以前小时候总会看到一些科

deepseek-智能助手入口
deepseek-智能助手入口

当前数字时代,deepseek入口智能助手凭借前沿技术架构为用户带来革新体验 在如今这个数字浪潮翻涌的时代,deepseek入口智能助手凭借其前沿的技术架构,为用户带来了真正意义上的革新体验。这个平台巧妙融合了自然语言处理与知识图谱技术,能够精准解析那些看似复杂的语义需求,已然成为提升工作效率的智能

用相关性分析消除“冗余特征”
用相关性分析消除“冗余特征”

刚开始学机器学习时,我也像大部分人 一样,有个很朴素的想法:特征越多,模型能学到的信息就越多,效果自然越好。 所以每次拿到数据,我就拼命往模型里塞特征——能算出来的统计量全加上,能衍生出来的比率全拼上。 一个原本 20 列的数据集,经常被我搞到七八十列。 然后我就发现事情不太对劲了: 训练时间明显变

用方差阈值过滤掉“惰性特征”
用方差阈值过滤掉“惰性特征”

机器学习实战中,大家往往把精力花在调参和选模型上,却忽略了一个更基础的问题:喂给模型的数据里,有多少特征是真正有用的? 刚开始学机器学习那会儿,很多人特别喜欢堆特征——不管有用没用先一股脑全塞进去,总觉得特征越多模型越聪明。直到有一次跑练习数据集,X_train.shape 直接干到了 (50000

超细空气颗粒物每年致约199万人早亡
超细空气颗粒物每年致约199万人早亡

空气中直径小于100纳米的超细颗粒物每年导致约199万人早逝,其中近半因心血管疾病。该颗粒物主要来自化石燃料,可通过呼吸进入血液,引发氧化应激和内皮功能紊乱,是未被充分认识的心血管危险因素。若年均浓度控制在每立方厘米5000个以下,全球超额死亡率可降低约45%。

当我们用错误的尺子量对了东西,会发生什么?
当我们用错误的尺子量对了东西,会发生什么?

这项研究来自Ezgi Korkmaz,论文以预印本形式发布于2026年7月8日,编号为arXiv:2607.07769,发表于cs.LG(机器学习)领域,并将出版于2026年人工智能促进协会(AAAI)会议论文集。有兴趣深入了解的读者可以通过arXiv编号2607.07769查询完整论文。 深度强化

学少儿编程还是机器人编程
学少儿编程还是机器人编程

机器人编程侧重硬件组装与程序驱动,编程受限于特定机器人;少儿编程系统化教授编程知识,从Scratch启蒙延伸至Python、C++等高级语言。两者各有侧重,选择取决于希望孩子提升的能力方向。

少儿编程分类全解析:软件编程 VS 硬件编程,孩子该怎么选?
少儿编程分类全解析:软件编程 VS 硬件编程,孩子该怎么选?

少儿编程分为软件与硬件两大方向。软件编程侧重逻辑与代码能力,含图形化、Python、C++,适配学业竞赛;硬件编程侧重动手与工程实践,含乐高搭建与机器人。选择应基于孩子兴趣与年龄。

Python 基础(一):入门必备知识
Python 基础(一):入门必备知识

学习Python,从基础语法开始是最稳妥的路径。这篇文章整理了Python入门阶段必须掌握的核心概念,包括标识符、关键字、引号、编码、输入输出、缩进、多行、注释、数据类型以及运算符等,后面还整理了基础进阶、爬虫、自动化、数据分析、小游戏、趣味项目以及自学路线等系列内容,方便你按需查阅。 目录 1 标

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。