开学季,班主任拿到一份新生档案:选了文科还是理科、高中社团类型、平时作业完成度……她最想知道的是,这些“背景信息”到底能不能预测期末成绩。有人提了一个聪明的办法:统计每个班的平均期末成绩,用它作为这个班所有学生的“预测分”。这听起来很合理,却藏着一个致命的漏洞——如果某个学生的成绩也被算进自己班级的平均分里,那就等于让学生自己给自己的卷子评分,他多半会偷偷给自己加两分。这种“自己评分自己”的现象,在机器学习里叫目标泄漏(Target Leakage)。 CatBoost 解决这类问题的核心思路,可以浓缩成一句话:不让自己评价自己。它把样本排成一条名单,计算某个样本的统计量时,只用站在他前面的人的信息,确保他的真实标签从未参与构造他自己的特征;它还设计了对称树结构和有序提升过程,让模型在训练时和预测时“看到”的东西保持一致。这套有序机制,让 CatBoost 在表格数据竞赛中风头无两,也让处理高基数类别特征从此不再让人头疼。

岗位关联

对 AI 从业者而言,理解 CatBoost 的有序思想,能帮你避开特征工程和数据泄漏的经典陷阱,在风控、广告、推荐等结构化数据场景中快速做出更稳健、更可解释的模型。

目录
  1. 可视化演示
  2. 梯度提升基础
  3. 目标编码问题
  4. 有序目标编码
  5. 对称树结构
  6. 有序提升法
  7. 类别特征工程
  8. CatBoost工具箱
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示CatBoost的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

CatBoost:CatB CatBoost概述与核心创新 Ordered Target 核心机制可视化 CatBoost整体架构与关键组件

梯度提升基础

新学期,班主任拿到了上一届学生的“背景卡”:选了哪几门课、社团类型、平时作业完成度。她想知道这些能否预测期末成绩。最直接的方法不是让一个老师猜全科,而是每周根据每个学生的短板请一位新老师:第一次月考后,发现大家普遍在“解析几何”上薄弱,就派一位补课老师;第二周再看剩下的缺口,再派另一位老师专攻“函数综合”。每轮补课都只针对上一轮结束后的“残差”,这就是梯度提升的直观动作。

算法层面,一个梯度提升模型是把 M 棵树按权重相加:

每轮学习“短板”靠的是损失函数:回归常用平方误差,分类常用对数损失。新树拟合的是损失函数对当前预测的负梯度,也就是当前最值得补的方向。基学习器通常选 CART 决策树,它们能自动寻找特征分割点,可解释性也好。

传统提升模型的隐患也随之而来:当特征里出现高基数类别时,人们会先做目标编码把文本变数字,但一不小心就让样本自己的真实标签混进特征,造成目标泄漏;残差更新时也有类似“自己影响自己”的路径。CatBoost 的“有序”思想,正是为这两个漏洞而设计。

FM(x)=∑m=1Mαm hm(x)F_M(x)=\sum_{m=1}^{M}\alpha_m\,h_m(x)
通俗理解:整个集成模型就是把 M 位补课老师的提分建议按各自权重加起来。
  1. 基学习器 $h_m(x)$第 m 棵决策树的预测输出,就像一位补课老师给出的提分方案。
    hm(x)h_m(x)
  2. 权重 $\alpha_m$控制这位老师的“发言权”,防止单棵树过于激进。
    αm\alpha_m
  3. 求和 $\sum$把多轮成果一层层叠加成最终预测。
    ∑m=1M\sum_{m=1}^{M}

目标编码问题

学校开了“文科”“理科”“艺术”三个班,这就是典型的类别特征——它们不能直接做加减乘除。传统做法是独热编码(one-hot):文科变成 [1,0,0]。但如果类别有 1000 个城市名,这种编码会变成一张巨大的稀疏矩阵,既占内存又难学。

于是有人想到一条捷径:目标编码(target encoding)——用“该类别学生的平均期末成绩”去替换类别本身。这个思路本身不坏,可一旦计算平均值时把自己期末分也算进去,就相当于学生自己给自己评分,特征里悄悄藏进了答案:

特征里一旦包含自己的真实标签,模型就会偷懒地依赖这条“作弊捷径”。训练误差看起来非常低,但验证时样本的真实标签没有参与统计,预测就会整体被拉向标签方向,线上表现立刻崩溃。这种训练与预测不一致的现象,就是预测偏移(prediction shift)。

x^c=∑i : ci=cyi∑i : ci=c1\hat{x}_c=\frac{\sum_{i\,:\,c_i=c}y_i}{\sum_{i\,:\,c_i=c}1}
通俗理解:把某个类别下所有样本的真实标签求平均,再把平均值当作这个类别的“替代数值”。
  1. 类别集合 $\{ic_i=c\}$:找出所有同班、同组、同标签类别的样本。
    {i : ci=c}\{i\,:\,c_i=c\}
  2. 分子 $\sum y_i$把这些样本的真实标签累加。
    ∑i : ci=cyi\sum_{i\,:\,c_i=c}y_i
  3. 分母 $\sum 1$统计这个类别到底有多少个样本。
    ∑i : ci=c1\sum_{i\,:\,c_i=c}1
  4. 编码值 $\hat{x}_c$用全体平均分充当这个类别的数值特征。
    x^c\hat{x}_c

有序目标编码

CatBoost 给出的解法非常朴素:不让自己给自己评分。它先把训练样本随机打乱,形成一条“名单”;对名单上第 k 个样本做编码时,只统计排在他前面的同类样本的目标均值。前面的样本越多,统计越稳;前面样本太少时,再用全局先验来兜底。整套操作被称为 Ordered Target Statistics(有序目标统计):

为了减少随机排序带来的波动,CatBoost 会做多次随机排列,每次生成一套在线统计量,最后取平均。这样,每个训练样本的类别特征都“看不到自己”,测试阶段则直接套用训练阶段学到的统计表,彻底绕开目标泄漏。

x^jk=∑i : i<k, ci=cjyi  +  ap∑i : i<k, ci=cj1  +  a\hat{x}_{jk}=\frac{\sum_{i\,:\,i<k,\ c_i=c_j}y_i\;+\;a p}{\sum_{i\,:\,i<k,\ c_i=c_j}1\;+\;a}
通俗理解:给每个样本打分时,只能参考名单上排在他前面的人,外加一个全局先验做保险,绝不使用他自己和他后面的人的信息。
  1. 前置条件 $i<k$只使用名单上排在 k 之前的样本,从源头阻断自己影响自己。
    i<ki<k
  2. 同类别匹配 $c_i=c_j$必须和当前样本属于同一个类别才合并统计。
    ci=cjc_i=c_j
  3. 分子 $\sum y_i + a p$前方同类样本的真实标签之和,再加上先验项。
    ∑i : i<k, ci=cjyi\sum_{i\,:\,i<k,\ c_i=c_j}y_i
  4. 先验项 $a p$$p$ 是全局标签均值,$a$ 是平滑系数,用来缓解前方样本太少时的抖动。
    apa p
  5. 分母 $n_{j,k}+a$前方同类样本数量加上平滑系数,实现对稀疏类别的收缩。
    nj,k+an_{j,k}+a

对称树结构

学校翻新教学楼,设计师做了一个大胆决定:每一层的走廊、教室门、楼梯完全一致,同层房间共用同一张图纸。树的结构也可以这样设计——对称树(symmetric tree,也叫 oblivious tree)在每一层用同一个特征进行分裂,因此同一层上的所有节点拥有完全相同的分割条件。

这个设计带来了三个明显好处。第一,叶子编号可以看成一条 0/1 组成的位向量,用位运算一步到位定位到叶子,推理极快;第二,同层统一分裂把大量操作变成向量化计算,GPU 和 CPU 都能高效并行;第三,结构上强制“同层同特征”,天然是一种正则化,不会让某个叶子被局部极少数样本带得过于极端。分裂时使用的增益公式仍然和传统树一致:

在 CatBoost 中,树的深度往往不需要太大,配合这种“整层统一”的对称结构,模型既快又稳,这也是它在中小规模表格数据上常常优于传统树模型的原因之一。

G=SL2nL+λ+SR2nR+λ−S2n+λG=\frac{S_L^2}{n_L+\lambda}+\frac{S_R^2}{n_R+\lambda}-\frac{S^2}{n+\lambda}
通俗理解:分裂前后算一笔“划分收益账”,对称树只是在每一层强迫所有节点都使用同一笔账目。
  1. 左侧梯度分数 $S_L$左子节点所有样本的一阶梯度之和,表示分裂后左半边的“补课需求”。
    SL=∑i∈LgiS_L=\sum_{i\in L}g_i
  2. 正则化分母 $n_L+\lambda$样本越少惩罚越重,防止某个叶子只剩一两个样本就开始乱猜。
    nL+λn_L+\lambda
  3. 增益 $G$分裂前后得分差,对称树用同一个准则选出每一层的统一特征。
    GG

有序提升法

即使特征已经做了有序编码,残差的学习过程里仍然藏着“自我评分”的隐患。传统提升中,第 t 棵树的拟合目标是当前预测与真实标签的残差,而当前预测是全体样本共同训练出来的——当前样本自己的梯度也参与了塑造它。为了彻底切断这条路径,CatBoost 把“有序”思想延伸到提升过程本身,这就是 Ordered Boosting。

做法很直接:先对训练样本做随机排列,并为每个样本维护一条“专属模型链”。计算第 k 个样本的残差时,只用排在他前面的样本训练出来的模型链去预测,因此模型从未见过这个样本的真实标签。每一轮新的树都基于这样的“干净残差”来学习:

代价是计算量变大:原本一套树,现在要维护多份链式模型。CatBoost 通过近似共享与并行优化让成本可控,收益则是训练时和预测时样本分布对齐,预测偏移被大幅压缩。

hm(k)=arg⁡min⁡h∑i : i<kL(yi,  Fm−1(i)(xi)+h(xi))h_m^{(k)}=\arg\min_{h}\sum_{i\,:\,i<k}L\Big(y_i,\;F_{m-1}^{(i)}(x_i)+h(x_i)\Big)
通俗理解:每个学生都有一串只由“前面同学”教出来的私人教师,他的残差永远不会被自己曾经贡献过的模型污染。
  1. 专属模型链 $h_m^{(k)}$样本 k 拥有自己独立的模型历史,而不是全体共享同一棵树的输出。
    hm(k)h_m^{(k)}
  2. 候选预测 $F_{m-1}^{(i)}+h$把新树叠加到旧预测上,形成新的补课方案。
    Fm−1(i)(xi)+h(xi)F_{m-1}^{(i)}(x_i)+h(x_i)
  3. 有序求和 $\sum_{i\,\,i<k}$:只用排在前面的样本计算损失,等价于一种在线版本的“留一交叉验证”。
    ∑i : i<kL(⋅)\sum_{i\,:\,i<k}L(\cdot)
  4. 最小化 $\arg\min$选出对前方样本损失最小的那棵新树。
    arg⁡min⁡h\arg\min_h

类别特征工程

班主任不用再手动给“文科/理科/艺术”编数字了。CatBoost 可以直接接收类别字符串,内部先对每个类别做有序目标统计,自动转换成稳定的数值表示。更进一步,它还能把“文科+重点班”这类组合自动拼成新特征,再做一次有序编码,从而发现人工不易察觉的交互模式。

对比一下:传统 one-hot 遇到用户 ID、商品 ID 这种超高基数类别,会产生几百万列稀疏矩阵;而 CatBoost 的有序编码把整列压缩成一个平滑数值,既保留类别信息又避免维度爆炸。组合特征的有序编码公式如下:

用户不需要手工拼特征,也不需要提前做标签编码或缺失值填充,直接声明 cat_features 即可,模型会自己完成“编码—组合—分裂”的流水线。

x^jk(comb)=∑i : i<k, ci=cj, zi=zjyi  +  ap∑i : i<k, ci=cj, zi=zj1  +  a\hat{x}_{jk}^{(comb)}=\frac{\sum_{i\,:\,i<k,\ c_i=c_j,\ z_i=z_j}y_i\;+\;a p}{\sum_{i\,:\,i<k,\ c_i=c_j,\ z_i=z_j}1\;+\;a}
通俗理解:把两个类别特征联合起来,形成更细的分组,再按照同一套“只看前方样本”的规则计算编码值。
  1. 组合条件 $c_i=c_j,\ z_i=z_j$两个特征都相等时才属于同一组合,比如“文科+重点班”。
    ci=cj, zi=zjc_i=c_j,\ z_i=z_j
  2. 顺序条件 $i<k$组合编码同样只看名单前方,保证不泄漏。
    i<ki<k
  3. 平滑先验 $a p$组合样本通常更稀疏,先验项能避免少数样本主导编码。
    apa p
  4. 编码结果 $\hat{x}_{jk}^{(comb)}$把细分组合压成一个标量特征,交给树模型使用。
    x^jk(comb)\hat{x}_{jk}^{(comb)}

CatBoost工具箱

CatBoost 把这些能力封装成开箱即用的工具库。训练时,只需要告诉模型哪些列是类别特征,其余交给框架。工程上它的一大亮点是快:对称树天然适配并行,GPU 加速后,几千棵树的实验往往几十秒就能跑完。

关键参数并不复杂:iterations 控制树的数量,learning_rate 控制每棵树的步长,depth 控制对称树的层数,l2_leaf_reg 提供叶子权重正则,再配合早停机制就能稳定收敛。每一轮更新本质上是把新树打折后叠加进集成:

正因上手简单、默认参数表现稳定,CatBoost 在 Kaggle 表格竞赛中出镜率极高,也是风控评分卡、营销转化预估等结构化数据任务中常用的基线模型。用好它,就是让样本和模型都保持“诚实”。

y^i(t)=y^i(t−1)+η ht(xi)\hat{y}_i^{(t)}=\hat{y}_i^{(t-1)}+\eta\,h_t(x_i)
通俗理解:每一轮新老师的建议只采用一部分,learning_rate 就是那个“打折系数”,让学习过程更稳妥。
  1. 上一轮预测 $\hat{y}_i^{(t-1)}$前 t-1 轮累计得到的预测值。
    y^i(t−1)\hat{y}_i^{(t-1)}
  2. 新树输出 $h_t(x_i)$第 t 棵树对样本 i 给出的增量预测。
    ht(xi)h_t(x_i)
  3. 学习率 $\eta$给新树贡献打折,防止单轮步子迈得太大。
    η\eta

AI 应用场景

金融风控建模:机构代码与行业类别的自动编码

阶段:特征编码与模型训练

解决的问题:银行机构代码、客户行业分类是高基数类别,传统 one-hot 会产生海量稀疏列,手动目标编码又容易泄漏。CatBoost 的有序目标编码在训练时就规避了“自身标签参与统计”的风险,对称树也降低了小样本类别上的过拟合。

具体案例:某消费金融公司用上万个机构 ID 预测客户逾期概率,直接把机构代码作为类别列送入 CatBoost,KS 指标比“手工目标编码 + XGBoost”提升约 3 个百分点,且省去了大量特征工程时间。

营销转化率预估:多活动ID与渠道ID的冷启动

阶段:点击率/转化率分类建模

解决的问题:营销活动 ID、渠道 ID、用户地域等名义变量基数大且变化快,每个新活动或新渠道样本极少。CatBoost 用先验平滑的有序编码给冷启动类别一个合理初始值,避免小样本类别被极端估计。

具体案例:某广告平台预测用户点击概率,将活动 ID 和渠道 ID 直接作为类别特征训练 CatBoost,小渠道的过拟合显著减少,线上 AUC 从 0.72 提升到 0.76。

推荐系统排序特征融合:ID类特征的低成本建模

阶段:排序模型的特征工程与底座模型

解决的问题:推荐系统中用户 ID、视频 ID 离散且基数极大,直接 embedding 预训练成本高。CatBoost 可以快速把 ID 类特征编码为有效信号,输出 CTR 预估值作为深度排序模型的特征。

具体案例:某短视频平台的 feed 流排序中,用 CatBoost 对“用户ID + 视频ID”组合做有序编码并训练 CTR 预测,再将预测分作为精排模型的一维特征,最终精排 AUC 提升 0.4 个千分点。

Python 演示

python33 行
import numpy as npfrom sklearn.datasets import make_classificationfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_scorefrom catboost import CatBoostClassifier np.random.seed(42)X, y = make_classification(    n_samples=2400, n_features=6, n_informative=4,    n_redundant=1, random_state=42) cat_col = np.random.randint(0, 12, size=(X.shape[0], 1))X_all = np.hstack([X, cat_col]) X_train, X_val, y_train, y_val = train_test_split(    X_all, y, test_size=0.2, stratify=y, random_state=7) model = CatBoostClassifier(    iterations=300,    depth=5,    learning_rate=0.08,    cat_features=[6],    loss_function='Logloss',    verbose=50) model.fit(X_train, y_train, eval_set=(X_val, y_val))pred = model.predict(X_val)acc = accuracy_score(y_val, pred)print('val accuracy:', round(acc, 4))print('importances:', np.round(model.get_feature_importance(), 3))
目的:演示 CatBoost 在带类别特征的表格数据上的训练流程,展示有序目标编码与对称树的“开箱即用”效果。
  1. cat_col = np.random.randint(0, 12, size=(X.shape[0], 1))人为生成一个 12 种类别的类别列
  2. X_all = np.hstack([X, cat_col])把数值列和类别列拼成一张完整表格
  3. cat_features=[6]告诉 CatBoost 第 6 列是类别特征,不需要手动编码
  4. model.fit(X_train, y_train, eval_set=(X_val, y_val))训练时自动完成 Ordered Target Statistics 和对称树构建
  5. print('val accuracy:', round(acc, 4))打印验证集精度,快速判断模型效果

常见误区

误区反正训练时能看到所有数据,计算类别均值时把自己的标签也加进去,模型学到的东西更“完整”,不会有什么坏处。

正解训练数据是用来发现规律的,不是用来“背诵答案”的。均值里混进自己的真实标签后,特征会带上一层目标信息,模型在验证集上被这个假信号带偏,线上表现骤降。有序目标编码正是要把“自己的分数”从统计量中剔除,才能让模型学到真正可迁移的模式。

为何常见:我们习惯了用全表计算统计量,很容易忽略“行样本本身也是统计量分母的一部分”这个细节。

误区每层所有节点都共用同一个分裂特征,等于把树的自由度砍掉了,肯定比 XGBoost 的普通树弱。

正解对称树是一种结构归纳偏置,就像全班统一教材,虽然牺牲了部分“节点自由”,却换来了更强的正则化与并行效率。配合适当深度和更多棵树,容量并不输普通树;在中小表格数据上,这种“约束”反而能减少过拟合,泛化更强。

为何常见:因为把“节点灵活度”误当成了“模型能力”,忽略了正则化带来的泛化收益。

误区既然训练时特征是用 Ordered Target Statistics 算的,测试阶段也应该把测试样本排序,重新算一遍有序均值。

正解有序目标编码的目的是给训练样本生成无泄漏特征。模型上线后,只需套用训练阶段学到的统计表,把测试样本的类别映射成对应数值即可;如果重新排序计算,统计分布会漂移,反而破坏训练与预测的一致性。

为何常见:没分清“训练阶段的特征生成”和“推理阶段的特征映射”是两件不同的事。

误区CatBoost 名字里带着“Cat”,看来它只会处理类别列,数值特征不如 LightGBM 精细。

正解CatBoost 和所有梯度提升库一样,会在每层分裂时综合使用数值特征与类别特征。类别自动编码只是它的特色能力,数值特征照样参与分裂、照样产出特征重要性。

为何常见:被算法名字和宣传文案中的“Category”误导,忽略了它本质上仍是一个完整的 GBDT 框架。

误区one-hot 是教科书里的标准做法,高基数类别最多就是内存大一点,总比“目标编码”这种偏门方法安全。

正解当类别达到成千上万个取值时,one-hot 会造成极度稀疏的矩阵,每个类别对应列上只有少量 1,树模型很容易过拟合。CatBoost 的有序编码把整列压缩成一个平滑标量,同时用先验项兜底稀疏类别,既保留类别信息又抑制过拟合。

为何常见:初学者通常先学 one-hot,并且没有经历过高基数数据导致的严重稀疏和维度爆炸。

面试题

Q1. CatBoost 最核心的技术亮点是什么?

单选题 · easy

  • A.用有序机制巧妙避免目标泄漏← 正确答案
  • B.把线性模型升级成神经网络
  • C.只支持纯类别数据的训练
  • D.完全取代深度学习框架

答案:A。CatBoost 最鲜明的特征是“有序”,它用 Ordered Target Statistics 和 Ordered Boosting 从源头切断样本与自身标签之间的信息通路,避免了目标泄漏。其他选项显然不是它的核心功能或定位。

Q2. 用类别均值做目标编码时,最危险的错误是?

单选题 · mid

  • A.均值没有乘以学习率
  • B.把样本自己的标签算进均值← 正确答案
  • C.先对数值列做了标准化
  • D.使用了随机排列的数据

答案:B。目标编码的泄漏根源,就是“自己给自己评分”:样本自己的 y 参与了特征值的计算。这样模型在训练时能轻易借这条捷径降低损失,验证时却失效,造成预测偏移。标准化和随机排列都不是关键危险。

Q3. Ordered Target Statistics 的“有序”指的是?

单选题 · mid

  • A.按时间先后把样本分批
  • B.只用排在自己之前的样本← 正确答案
  • C.先升序算再降序算取平均
  • D.对特征值做排序搜索

答案:B。有序目标编码把样本随机打乱成一条名单,对每个样本只统计站在它前面的样本信息。前方样本的信息是“历史”,不包含当前样本的真实标签,所以能天然防泄漏,而不是单纯的时间分批或排序搜索。

Q4. 对称树结构的优点有哪些?

多选题 · hard

  • A.同层统一分裂便于并行执行← 正确答案
  • B.叶子定位可用位运算提速← 正确答案
  • C.每个节点都有独立的特征
  • D.结构约束天然抑制过拟合← 正确答案

答案:ABD。对称树每一层共用同一个分裂特征,所以同一层可以并行计算,叶子路径可以编码成位向量快速定位;这种结构约束也是一种正则化,降低了过拟合风险。C 描述的是普通决策树,不是对称树。

Q5. 高基数类别特征(如用户 ID)的最佳处理是?

单选题 · mid

  • A.全部展开成 one-hot 列
  • B.先验平滑的有序目标编码← 正确答案
  • C.直接删除以免维度爆炸
  • D.给类别胡乱随机编号

答案:B。高基数类别 one-hot 会产生海量稀疏列,随机编号又没有任何语义。CatBoost 用带先验的有序目标编码把类别压缩成平滑数值,既保留组内目标信息,又防止稀疏类别被极端估计。

Q6. 普通 GBDT 和 CatBoost 最主要的区别是?

单选题 · easy

  • A.CatBoost 不使用决策树
  • B.CatBoost 用有序机制消除偏移← 正确答案
  • C.普通 GBDT 不能做回归
  • D.CatBoost 必须采用 GPU 训练

答案:B。CatBoost 仍然是决策树集成,但它在特征编码和提升过程中加入了“有序”机制,专门消除目标泄漏与预测偏移。普通 GBDT 同样能做回归,GPU 也只是可选项,不是必需。

Q7. 关于 Ordered Boosting 的正确描述是?

多选题 · hard

  • A.每个样本用专属历史链算残差← 正确答案
  • B.能减少训练与预测的偏差← 正确答案
  • C.和传统提升的机制完全相同
  • D.计算成本更高但更稳健← 正确答案

答案:ABD。Ordered Boosting 为每个样本维护专属模型链,只用前方样本计算残差,本质是“在线版留一交叉验证”,因此能显著减少预测偏移。代价是计算量变大,但换来更稳健的泛化。C 与事实相反。

Q8. Ordered Boosting 消除偏移的原理最接近?

单选题 · extreme

  • A.用全体样本均值填充缺失值
  • B.在线版本的留一交叉验证← 正确答案
  • C.对标签做贝叶斯平滑
  • D.将类别特征做独热展开

答案:B。每个样本的残差都由“没有见过它”的历史模型链计算,这就像每一轮都对该样本做一次留一验证,把自身信息从梯度中剥离。其余选项都不涉及“自身不参与自身预测”这个核心机制。

Q9. CatBoost 在表格数据竞赛中受欢迎的原因是?

单选题 · easy

  • A.只能处理小样本数据
  • B.自动编码类别且泛化强← 正确答案
  • C.必须手工做特征归一化
  • D.从不输出特征重要性

答案:B。CatBoost 能自动处理类别特征,配合有序防泄漏机制和对称树正则化,泛化能力强,默认参数下就有不错的表现。它并不限制样本规模,也对归一化不敏感,同时自带特征重要性输出。

Q10. CatBoost 的防泄漏设计包括哪些?

多选题 · mid

  • A.有序目标统计量← 正确答案
  • B.有序提升法← 正确答案
  • C.随机森林式投票
  • D.全局样本独热编码

答案:AB。Ordered Target Statistics 防止类别编码阶段的泄漏,Ordered Boosting 防止梯度残差阶段的泄漏,两者共同构成 CatBoost 的防泄漏体系。随机森林投票和 one-hot 编码都不是防泄漏设计。