【问题标题】:What changes do I need to make to the source code of catboost to increase the max_depth beyond 16?我需要对 catboost 的源代码进行哪些更改才能将 max_depth 增加到 16 以上?
【发布时间】:2021-04-28 12:01:56
【问题描述】:

我想为我的业务问题使用更深的树,但 catboost 的树深度限制为 16。我浏览了代码,找到了硬编码的部分。这行在catboost/private/libs/options/oblivious_tree_options.cpp:

const ui32 maxFullBinaryTreeDepth = 16;

我可以简单地将其更改为 64,然后运行 ​​setup.py 吗?还是会有其他依赖关系并可能导致任何问题?

【问题讨论】:

  • 好吧,为什么不试试呢?

标签: python decision-tree setup.py depth catboost


【解决方案1】:

这可能是 CatBoost 中的硬性限制。

我假设您想要调整 CatBoost 算法以获得更好的性能。您可以尝试调整不同的参数,例如learning_ratersml2_leaf_reg。根据我的经验,12 以上的深度非常高。也许这就是 CatBoost 开发人员设置硬限制的原因?

您也可以尝试 MLJAR AutoML(我是主要贡献者)https://github.com/mljar/mljar-supervised 来调整 CatBoost。 MLJAR 有两个调优选项:

  • 随机搜索+爬山
  • TPE 优化(来自 Optuna 框架)

示例代码:

automl=AutoML(algorithms=["CatBoost"], mode="Compete")
automl.fit(X, y)

或使用 Optuna 进行调整:

automl=AutoML(algorithms=["CatBoost"], mode="Optuna")
automl.fit(X, y)

MLJAR 中的所有模型都有文档记录。在 AutoML 训练之后,您可以重用 AutoML 中的超参数(如果需要)。

【讨论】:

  • 我想构建更深的树,因为我想将构建树中的信息用于某些事情。 Catboost 是唯一使用对称树的算法,这正是我想要的,但具有更多可用深度。非常感谢任何进一步的建议。
  • 您可以尝试更改 CatBoost 中的限制并编译该包。请问你想从这么深的树上得到什么?
猜你喜欢
  • 2021-12-12
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 2022-01-03
  • 2010-10-18
  • 2021-03-10
相关资源
最近更新 更多