XGB-17:模型截距

2024-03-05 10:28
文章标签 模型 17 截距 xgb

本文主要是介绍XGB-17:模型截距,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 XGBoost 中,模型截距(也称为基本分数)是一个值,表示在考虑任何特征之前模型的起始预测。它本质上是处理回归任务时训练数据的平均目标值,或者是分类任务的赔率对数。

在 XGBoost 中,每个叶子节点都会输出一个分数,而模型的最终预测是将所有叶子节点的分数相加得到的。这些分数在树的训练过程中被学习得到,但当没有任何输入特征时,模型需要一个基准值,这就是截距的作用。

从2.0.0版本开始,XGBoost支持在训练时根据目标值自动估计模型截距(名为base_score)。该行为可以通过将base_score设置为常数来控制。以下代码段禁用了自动估计:

import xgboost as xgbreg = xgb.XGBRegressor()
reg.set_params(base_score=0.5)

此外,这里的0.5代表应用逆链接函数后的值。

除了base_score之外,用户还可以通过数据字段base_margin提供全局偏置,这个字段是一个向量或矩阵,取决于任务的类型。对于多输出和多分类任务,base_margin是一个大小为(n_samples, n_targets)(n_samples, n_classes)的矩阵。

import xgboost as xgb
from sklearn.datasets import make_regressionX, y = make_regression()reg = xgb.XGBRegressor()
reg.fit(X, y)# Request for raw prediction
m = reg.predict(X, output_margin=True)reg_1 = xgb.XGBRegressor()
# Feed the prediction into the next model
reg_1.fit(X, y, base_margin=m)
reg_1.predict(X, base_margin=m)

它为每个样本指定了偏置,并可以用于将XGBoost模型堆叠在其他模型之上,有关从预测中提升的示例,请参见Demo。当指定了base_margin时,它会自动覆盖base_score参数。如果正在堆叠XGBoost模型,那么使用应该是相对直接的,前面的模型提供原始预测,而新模型使用预测作为偏置。对于更自定义的输入,用户需要额外注意链接函数。设F为模型,g为链接函数,由于当样本特定的base_margin可用时base_score会被覆盖:

g ( E [ y i ] ) = F ( x i ) g(E[y_i]) = F(x_i) g(E[yi])=F(xi)

当提供基线偏置(base margin)b时,它会加到模型的原始输出F上。

g ( E [ y i ] ) = F ( x i ) + b i g(E[y_i]) = F(x_i) + b_i g(E[yi])=F(xi)+bi

并且最终模型的输出是:

g − 1 ( F ( x i ) + b i ) g^{-1}(F(x_i) + b_i) g1(F(xi)+bi)

以使用伽马偏差目标函数reg:gamma为例,该函数具有对数链接函数,因此:

ln ⁡ ( E [ y i ] ) = F ( x i ) + b i E [ y i ] = exp ⁡ ( F ( x i ) + b i ) \begin{split}\ln{(E[y_i])} = F(x_i) + b_i \\ E[y_i] = \exp{(F(x_i) + b_i)}\end{split} ln(E[yi])=F(xi)+biE[yi]=exp(F(xi)+bi)

因此,如果正在输入来自具有相应目标函数的模型(如GLM)的输出,请确保这些输出尚未通过逆链接函数(激活函数)进行转换。

在估计之后,可以通过save_config()访问base_score(截距)。与base_margin不同,返回的值代表应用逆链接函数后的值。以逻辑回归和逻辑链接函数为例,给定base_score为0.5,

g ( i n t e r c e p t ) = l o g i t ( 0.5 ) = 0 g(intercept) = logit(0.5) = 0 g(intercept)=logit(0.5)=0会被加到模型的原始输出上:

E [ y i ] = g − 1 ( F ( x i ) + g ( i n t e r c e p t ) ) E[y_i] = g^{-1}{(F(x_i) + g(intercept))} E[yi]=g1(F(xi)+g(intercept))

而0.5等同于 b a s e _ s c o r e = g − 1 ( 0 ) = 0.5 base\_score = g^{-1}(0) = 0.5 base_score=g1(0)=0.5 。如果忽略模型并只考虑截距,这将更加直观,截距是在模型拟合之前估计的:

E [ y ] = g − 1 ( g ( i n t e r c e p t ) ) E [ y ] = i n t e r c e p t \begin{split}E[y] = g^{-1}{(g(intercept))} \\ E[y] = intercept\end{split} E[y]=g1(g(intercept))E[y]=intercept

对于一些目标函数,如平均绝对误差(MAE),存在接近的解,而对于其他目标函数,则是使用一步牛顿方法进行估计。

参考

  • https://xgboost.readthedocs.io/en/latest/python/examples/boost_from_prediction.html#sphx-glr-python-examples-boost-from-prediction-py
  • https://xgboost.readthedocs.io/en/latest/tutorials/intercept.html

这篇关于XGB-17:模型截距的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/776214

相关文章

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt