自学内容网 自学内容网

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=1i1[xσj,k=xσi,k]+aj=1i1[xσj,k=xσi,k]Yσj+ap


公式的意义

公式用于计算分类特征 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=nj=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=1i1[xσj,k=xσi,k]Yσj
        当前样本之前,与 x σ i , k x_{\sigma_i,k} xσi,k 特征值相同的样本目标值之和。
      • a ⋅ p a \cdot p ap
        平滑项,表示全局目标均值对统计值的贡献。
  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=1i1[xσ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=1i1[xσj,k=xσi,k]j=1i1[xσj,k=xσi,k]Yσj

  • 问题:当 i − 1 i-1 i1 中满足 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,,i1,使用指示函数 [ 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
1A1
2B0
3A1
4A0
5B1

全局目标均值:
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=12[xσj,k=xσ3,k]Yσj+ap=1+20.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=12[xσ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.20.733


原文地址:https://blog.csdn.net/u013172930/article/details/143695529

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!