我最近开始使用 CatBoost 对机器学习模型进行快速原型设计,这受到CatBoost 与 XGBoost、LightGBM 和 h2o 相比出色的性能基准的启发。
由于 XGBoost 只能接受数字特征,因此 CatBoost 和 XGBoost 之间的比较需要对分类特征进行通用预处理。我并不完全清楚在基准测试实验中使用什么样的预处理来编码分类特征,以及不使用简单的 one-hot 编码的理由。
我试图阅读实验的文档。据我了解,对分类特征进行编码的过程j
大致相当于以下内容:
- 在
train
集合上,将响应分组y
,j
与mean
函数聚合。让我们调用结果df_agg_j
- 左加入
train
集合并df_agg_j
在分类列上j
,删除原始分类列j
并改用新的数字列 - 左加入
valid
集合并df_agg_j
在分类列上j
,删除原始分类列j
并改用新的数字列
我仍然不明白需要“随机排列第 j 个分类特征和第 i 个对象的对象”,以及在“准备”部分下的最终公式中的分子加 1 和分母加 2分裂”的文档。
可以在这里找到拆分和预处理数据的代码。
是否有关于本实验中用于编码分类特征的方法的解释(或文献中的一些参考),以及该方法与 one-hot 编码之间的比较?