当前位置: 首页 > article >正文

CatBoost中的预测偏移和排序提升

CatBoost 中,预测偏移(Prediction Shift)排序提升(Ordered Boosting) 是其关键概念和创新点。CatBoost 通过引入 排序提升 解决了梯度提升决策树(GBDT)算法中常见的 预测偏移问题,从而提高了模型的稳定性和性能。以下是对这两个概念的详细解释:


1. 预测偏移(Prediction Shift)

概念

预测偏移是指在梯度提升决策树(GBDT)训练过程中,由于在模型训练阶段同时使用特征和目标变量可能会导致未来信息泄漏,从而影响模型性能和稳定性。

  • 原因
    在标准 GBDT 算法中,训练样本的目标变量会被用来更新模型,而同时目标变量也会被用于特征变换(如目标统计编码)。这种特征变换过程中可能会使用目标变量的全局信息,从而导致未来样本的信息被泄漏到当前训练样本中。

  • 结果

    • 训练误差较低,但在测试集上表现较差(过拟合)。
    • 对目标变量统计不准确,尤其是分类特征的目标统计编码可能引入偏差。

示例

假设有一个分类特征 x x x 和目标变量 y y y

样本 i i i分类特征 x i x_i xi目标变量 y i y_i yi
1A1
2A0
3A1

如果在第 3 个样本训练过程中使用整个数据集的目标统计均值(包括第 3 个样本本身的 y 3 = 1 y_3 = 1 y3=1),则会导致信息泄漏。例如:

目标统计编码:
编码值 = 总目标值 总样本数 = 1 + 0 + 1 3 = 0.67 \text{编码值} = \frac{\text{总目标值}}{\text{总样本数}} = \frac{1 + 0 + 1}{3} = 0.67 编码值=总样本数总目标值=31+0+1=0.67

这会将第 3 个样本的目标变量泄漏到其特征变换中。


2. 排序提升(Ordered Boosting)

概念

排序提升是 CatBoost 提出的用于解决 预测偏移问题 的方法。其核心思想是在每一轮训练中,严格按照样本的时间或排列顺序,只使用当前样本之前的数据计算特征变换(如目标统计编码),避免了未来信息泄漏。


Ordered Boosting 的实现原理

CatBoost 的 排序提升 使用了一种特殊的数据划分和特征计算方式:

  1. 样本顺序化:

    • 假设样本被排列为 ( x σ 1 , y σ 1 ) , ( x σ 2 , y σ 2 ) , … , ( x σ n , y σ n ) (x_{\sigma_1}, y_{\sigma_1}), (x_{\sigma_2}, y_{\sigma_2}), \dots, (x_{\sigma_n}, y_{\sigma_n}) (xσ1,yσ1),(xσ2,yσ2),,(xσn,yσn),其中 σ \sigma σ 表示样本的排列顺序。
    • 在训练第 i i i 个样本时,仅使用前 i − 1 i-1 i1 个样本的数据来计算特征值。
  2. 目标统计的顺序计算:

    • 对于分类特征,目标统计值的计算严格遵循样本顺序。例如,计算第 i i i 个样本的目标统计值 T S ( x i ) TS(x_i) TS(xi) 时,仅基于样本 ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x i − 1 , y i − 1 ) (x_1, y_1), (x_2, y_2), \dots, (x_{i-1}, y_{i-1}) (x1,y1),(x2,y2),,(xi1,yi1) 的目标变量 y j y_j yj
    • 避免了将当前样本 y i y_i yi 或未来样本的目标值泄漏到统计值中。
  3. 模型更新的顺序化:

    • CatBoost 使用排序提升算法训练决策树时,每棵树的分裂决策仅基于当前模型状态和之前的数据更新。

排序提升算法的伪代码

如下图 14-2 中描述的伪代码:

  1. 对训练样本 ( x , y ) (x, y) (x,y) 按顺序排列为 ( x σ 1 , y σ 1 ) , ( x σ 2 , y σ 2 ) , … , ( x σ n , y σ n ) (x_{\sigma_1}, y_{\sigma_1}), (x_{\sigma_2}, y_{\sigma_2}), \dots, (x_{\sigma_n}, y_{\sigma_n}) (xσ1,yσ1),(xσ2,yσ2),,(xσn,yσn)
  2. 初始化模型 M 0 M_0 M0
  3. 对于每个样本 i i i
    • 根据模型状态 M i − 1 M_{i-1} Mi1 和前 i − 1 i-1 i1 个样本的目标变量 y σ j y_{\sigma_j} yσj 计算目标统计值。
    • 更新模型状态 M i = M i − 1 + Δ M M_i = M_{i-1} + \Delta M Mi=Mi1+ΔM,其中 Δ M \Delta M ΔM 是模型的增量更新(如一棵树的增量效果)。
  4. 输出最终模型 M n M_n Mn

排序提升的优点
  1. 避免信息泄漏:

    • 通过按顺序计算特征值和模型更新,确保每个样本的特征计算只依赖于之前的样本信息。
    • 解决了传统梯度提升算法中的预测偏移问题。
  2. 提高模型鲁棒性:

    • 排序提升能够更好地适应分类特征中高基数、稀疏类别的情况。
    • 即使样本数量有限,也能生成稳定的特征统计值。
  3. 改进模型性能:

    • 避免了模型过拟合,提升了测试集上的性能。

排序提升的一个例子

假设训练样本如下:

样本 i i i分类特征 x i x_i xi目标变量 y i y_i yi
1A1
2B0
3A1
4B1
目标统计值的计算:

对于分类特征 x x x,计算目标统计值 T S ( x i ) TS(x_i) TS(xi) 时:

  1. 第 1 行:

    • T S ( x 1 ) TS(x_1) TS(x1):没有之前的样本,所以使用全局均值 p p p
  2. 第 2 行:

    • T S ( x 2 ) TS(x_2) TS(x2):类别 B B B 的目标统计值基于之前样本:
      T S ( x 2 ) = p TS(x_2) = p TS(x2)=p
  3. 第 3 行:

    • T S ( x 3 ) TS(x_3) TS(x3):类别 A A A 的目标统计值基于第 1 行:
      T S ( x 3 ) = y 1 1 = 1 TS(x_3) = \frac{y_1}{1} = 1 TS(x3)=1y1=1
  4. 第 4 行:

    • T S ( x 4 ) TS(x_4) TS(x4):类别 B B B 的目标统计值基于第 2 行:
      T S ( x 4 ) = y 2 1 = 0 TS(x_4) = \frac{y_2}{1} = 0 TS(x4)=1y2=0

总结

  1. 预测偏移(Prediction Shift)

    • 是由于目标变量泄漏到特征变换中引起的模型训练问题,导致过拟合和不稳定性。
  2. 排序提升(Ordered Boosting)

    • 是 CatBoost 的核心创新,通过严格按照时间或排列顺序训练模型,避免了预测偏移问题。
    • 在分类特征处理、目标统计值计算和模型更新中都有应用。

http://www.kler.cn/a/391134.html

相关文章:

  • 在 Service Worker 中caches.put() 和 caches.add()/caches.addAll() 方法他们之间的区别
  • 文献解读-DNAscope: High accuracy small variant calling using machine learning
  • 万字长文分析函数式编程
  • wafw00f源码详细解析
  • PHP爬虫快速获取京东商品详情(代码示例)
  • 海外云手机在出海业务中的优势有哪些?
  • 数据结构-递归函数的调用栈过程
  • 如何编写jenkins的流水线
  • DB-GPT系列(四):DB-GPT六大基础应用场景part1
  • C#中Task和Thread的全解析
  • C++编程:嵌入式Linux-ARM与外设中断交互的程序设计
  • 【疑难杂症】电脑休眠后无法开机,进入 steamVR 时电脑突然黑屏关机
  • React官网生成Recat项目的区别
  • hbase的安装与简单操作
  • C语言实现IIR型零相位带通滤波器
  • 如何使用XSL-FO生成PDF格式的电子发票的技术博文示例
  • 负梯度方法与Newton型方法-数值最优化方法-课程学习笔记-4
  • Spring Boot基础教学:Spring Boot的核心特性
  • sql表的约束练习题
  • git commit 校验
  • 数学建模---利用Matlab快速实现机器学习(上)
  • 技术人,在数字化转型中如何为企业赋能?
  • Vuex 与 Pinia:Vue 状态管理库的选择与对比
  • 基于YOLOv5的人群密度检测系统设计与实现
  • Oracle 数据库创建导入
  • 基于Multisim温度计温度测量温度超限报警电路(含仿真和报告)