gpt4 book ai didi

machine-learning - CatBoost 基准测试中使用哪种预处理来编码分类变量?

转载 作者:行者123 更新时间:2023-11-30 09:05:02 24 4
gpt4 key购买 nike

我最近开始使用 CatBoost 来快速构建机器学习模型的原型(prototype),受到杰出的 performance benchmarks 的启发。 CatBoost 与 XGBoost、LightGBM 和 h2o 的比较。

由于 XGBoost 只能接受数字特征,因此 CatBoost 和 XGBoost 之间的比较需要对分类特征进行共同的预处理。我并不完全清楚基准测试实验中使用哪种预处理来编码分类特征,以及不使用简单的 one-hot 编码的理由。

我尝试阅读 documentation的实验。据我了解,编码分类特征j的过程大约相当于以下内容:

  1. train 集中,将响应yj 进行分组,并使用mean 函数进行聚合。我们将结果称为 df_agg_j
  2. train集和分类列j上的df_agg_j左连接,删除原始分类列j并使用新的数字列
  3. 在分类列j上左连接valid集和df_agg_j,删除原始分类列j并使用新的数字列

我仍然不明白“对第 j 个分类特征和第 i 个对象的对象进行随机排列”的需要,以及在最终公式中在分子处添加 1,在分母处添加 2 的必要性。 documentation 的“分割的准备”部分.

数据分割和预处理的代码可以在 here 找到.

是否有关于本实验中用于编码分类特征的方法的解释(或文献中的一些引用),以及该方法与one-hot编码之间的比较?

最佳答案

对于分类特征,使用了基于目标的统计数据。这是目前 GBDT 预处理分类特征的最佳方法,比 one-hot 效果更好。这与目标编码类似,但使用排列以避免过度拟合。有关此方法的详细信息和比较可以在 NIPS 2018 论文“CatBoost: unbiased boosting with categorical features”(https://arxiv.org/abs/1706.09516)中找到。

关于machine-learning - CatBoost 基准测试中使用哪种预处理来编码分类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54171680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com