CatBoost 中对分类特征进行目标变量统计编码 公式解析

公式 14-2 是 CatBoost 中对分类特征进行目标变量统计编码的一种改进版本,加入了平滑项,用于处理稀疏数据和类别样本不足的情况。下面是对公式的详细解释:

公式 14-2

x ^ k i = ∑ j = 1 i − 1 x σ j , k = x σ i , k Y σ j + a ⋅ p ∑ j = 1 i − 1 x σ j , k = x σ i , k + a \hat{x}k^i = \frac{\sum{j=1}^{i-1} x_{\\sigma_j,k} = x_{\\sigma_i,k} Y_{\sigma_j} + a \cdot p}{\sum_{j=1}^{i-1} x_{\\sigma_j,k} = x_{\\sigma_i,k} + a} x^ki=∑j=1i−1xσj,k=xσi,k+a∑j=1i−1xσj,k=xσi,kYσj+a⋅p


公式的意义

公式用于计算分类特征 x k x_k xk 的目标变量统计值 x ^ k i \hat{x}_k^i x^ki。

统计值 x ^ k i \hat{x}_k^i x^ki 是基于当前样本 i i i 之前的训练样本数据计算得到的。

通过引入平滑参数 a a a 和全局目标变量均值 p p p,公式能够避免统计值在样本数量较少时过于极端或不稳定。


公式中的符号含义
  1. x ^ k i \hat{x}_k^i x^ki:

    • 表示第 i i i 个样本在分类特征 k k k 上的目标变量统计值。
  2. x σ j , k x_{\sigma_j,k} xσj,k 和 x σ i , k x_{\sigma_i,k} xσi,k:

    • x σ j , k x_{\sigma_j,k} xσj,k:第 j j j 个样本在分类特征 k k k 上的取值。
    • x σ i , k x_{\sigma_i,k} xσi,k:第 i i i 个样本在分类特征 k k k 上的取值。
  3. 指示函数 x σ j , k = x σ i , k x_{\\sigma_j,k} = x_{\\sigma_i,k} xσj,k=xσi,k

    • 当 x σ j , k = x σ i , k x_{\sigma_j,k} = x_{\sigma_i,k} xσj,k=xσi,k 时,其值为 1;否则为 0。
    • 用于选择与当前样本 i i i 的特征值 x σ i , k x_{\sigma_i,k} xσi,k 相同的样本。
  4. Y σ j Y_{\sigma_j} Yσj:

    • 样本 j j j 的目标变量值。
  5. a a a:

    • 平滑参数,控制全局均值 p p p 对目标统计值的影响。
      • 如果 a a a 较大,则统计值更依赖全局均值 p p p;
      • 如果 a a a 较小,则统计值更依赖于当前类别的历史统计值。
  6. p p p:

    • 全局目标变量均值,即所有样本目标变量 Y Y Y 的平均值:
      p = ∑ j = 1 n Y j n p = \frac{\sum_{j=1}^n Y_j}{n} p=n∑j=1nYj
      n n n 为总样本数。
  7. σ \sigma σ:

    • 表示样本的排列顺序,确保计算过程中只使用当前样本之前的数据。
  8. 分子:

    • 包含两部分:
      • ∑ j = 1 i − 1 x σ j , k = x σ i , k Y σ j \sum_{j=1}^{i-1} x_{\\sigma_j,k} = x_{\\sigma_i,k} Y_{\sigma_j} ∑j=1i−1xσj,k=xσi,kYσj:
        当前样本之前,与 x σ i , k x_{\sigma_i,k} xσi,k 特征值相同的样本目标值之和。
      • a ⋅ p a \cdot p a⋅p:
        平滑项,表示全局目标均值对统计值的贡献。
  9. 分母:

    • 同样包含两部分:
      • ∑ j = 1 i − 1 x σ j , k = x σ i , k \sum_{j=1}^{i-1} x_{\\sigma_j,k} = x_{\\sigma_i,k} ∑j=1i−1xσj,k=xσi,k
        当前样本之前,与 x σ i , k x_{\sigma_i,k} xσi,k 特征值相同的样本数量。
      • a a a:
        平滑因子,防止分母为零。

公式分解与逐步解释

1. 未引入平滑项时的目标统计值

目标统计值是当前类别目标变量的历史加权均值:
x ^ k i = ∑ j = 1 i − 1 x σ j , k = x σ i , k Y σ j ∑ j = 1 i − 1 x σ j , k = x σ i , k \hat{x}k^i = \frac{\sum{j=1}^{i-1} x_{\\sigma_j,k} = x_{\\sigma_i,k} Y_{\sigma_j}}{\sum_{j=1}^{i-1} x_{\\sigma_j,k} = x_{\\sigma_i,k}} x^ki=∑j=1i−1xσj,k=xσi,k∑j=1i−1xσj,k=xσi,kYσj

  • 问题:当 i − 1 i-1 i−1 中满足 x σ j , k = x σ i , k x_{\sigma_j,k} = x_{\sigma_i,k} xσj,k=xσi,k 的样本数量较少时(稀疏类别或训练早期),分母较小,统计值可能过于极端。
2. 引入平滑项后的目标统计值

通过加入全局目标均值 p p p 和权重因子 a a a,使得统计值更平滑、更鲁棒:

  • 当样本数量较多时:
    • 分母中的 a a a 对总值的贡献较小,公式更依赖于当前类别的目标统计。
  • 当样本数量较少时:
    • 分母中的 a a a 占比较大,公式更依赖于全局均值 p p p。

这有效缓解了稀疏类别问题。


计算步骤

  1. 定位与当前样本 x σ i , k x_{\sigma_i,k} xσi,k 特征值相同的历史样本

    • 遍历当前样本之前的所有样本 j = 1 , 2 , ... , i − 1 j = 1, 2, \dots, i-1 j=1,2,...,i−1,使用指示函数 x σ j , k = x σ i , k x_{\\sigma_j,k} = x_{\\sigma_i,k} xσj,k=xσi,k 筛选出特征值相同的样本。
  2. 累加目标变量 Y Y Y

    • 对筛选出的样本目标变量 Y σ j Y_{\sigma_j} Yσj 求和,得到该类别的目标值总和。
  3. 加上平滑项

    • 将全局目标均值 p p p 乘以平滑参数 a a a,作为额外的平滑贡献。
  4. 计算分母

    • 累加与当前样本 x σ i , k x_{\sigma_i,k} xσi,k 特征值相同的历史样本数量,再加上平滑参数 a a a。
  5. 计算目标统计值

    • 将分子除以分母,得到平滑后的目标统计值。

公式的作用

  1. 解决稀疏类别问题

    • 当类别 x σ i , k x_{\sigma_i,k} xσi,k 的样本数量较少时,统计值会更依赖于全局均值 p p p,从而避免过拟合。
  2. 避免数据泄漏

    • CatBoost 通过排序提升方法(Ordered Boosting),保证计算当前样本的目标统计值时,仅使用当前样本之前的历史数据,避免目标变量泄漏。
  3. 提高模型稳定性

    • 引入平滑项 a a a 和全局均值 p p p,使得模型在稀疏数据或早期训练阶段更加稳定。

示例

假设有如下数据:

样本 i i i 分类特征 x i x_i xi 目标值 Y i Y_i Yi
1 A 1
2 B 0
3 A 1
4 A 0
5 B 1

全局目标均值:
p = 1 + 0 + 1 + 0 + 1 5 = 0.6 p = \frac{1 + 0 + 1 + 0 + 1}{5} = 0.6 p=51+0+1+0+1=0.6

平滑因子:
a = 2 a = 2 a=2

计算 x ^ k 3 \hat{x}_k^3 x^k3(第 3 行,类别 A A A):

  1. 历史样本中 x σ j , k = x σ 3 , k = A x_{\sigma_j,k} = x_{\sigma_3,k} = A xσj,k=xσ3,k=A:

    • 第 1 行: Y 1 = 1 Y_1 = 1 Y1=1。
    • 所以,分子为:
      ∑ j = 1 2 x σ j , k = x σ 3 , k Y σ j + a ⋅ p = 1 + 2 ⋅ 0.6 = 2.2 \sum_{j=1}^{2} x_{\\sigma_j,k} = x_{\\sigma_3,k} Y_{\sigma_j} + a \cdot p = 1 + 2 \cdot 0.6 = 2.2 j=1∑2xσj,k=xσ3,kYσj+a⋅p=1+2⋅0.6=2.2
    • 分母为:
      ∑ j = 1 2 x σ j , k = x σ 3 , k + a = 1 + 2 = 3 \sum_{j=1}^{2} x_{\\sigma_j,k} = x_{\\sigma_3,k} + a = 1 + 2 = 3 j=1∑2xσj,k=xσ3,k+a=1+2=3
  2. 目标统计值:
    x ^ k 3 = 2.2 3 ≈ 0.733 \hat{x}_k^3 = \frac{2.2}{3} \approx 0.733 x^k3=32.2≈0.733

相关推荐
程序员老猫1 小时前
当 AI 能写 80% 的代码时,后端工程师的核心价值还剩什么?
人工智能
想会飞的蒲公英1 小时前
计算机怎样读取中文文本:编码、清洗与标准化
人工智能·python·自然语言处理
CIO_Alliance2 小时前
AI+iPaaS解决方案深度整合:让跨系统业务流程自动化一步到位
人工智能·ipaas·系统集成·ai+ipaas·企业cio联盟·企业级ai化转型
苏州IT威翰德2 小时前
算力资产“续命”专家:苏州威翰德科技赋能NVIDIA高端AI芯片芯片级维修
大数据·人工智能
天上路人2 小时前
A59P双波束语音模块:神经网络降噪在远场拾音中的工程实现分析
人工智能·深度学习·神经网络·ai降噪·ai语音·麦克风·回音消除
冬奇Lab2 小时前
AI 评测系列(03):LLM-as-Judge——让 LLM 评价 LLM 的正确姿势
人工智能·llm
Miao121312 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
冬奇Lab2 小时前
每日一个开源项目(第164篇):毕昇(BISHENG)- 面向企业的开源 LLM DevOps 平台
人工智能·开源·agent
声讯电子3 小时前
录音笔AI降噪方案:从录得到到听得清的听觉革命
人工智能·语音识别
小小测试开发3 小时前
Playwright vs Selenium vs Cypress:从浏览器协议到 API 设计的全面对比与实测
人工智能·selenium·测试工具