我需要对catboost的源代码做哪些更改才能将最大深度提高到16以上?

2024-09-28 01:23:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用更深的树来解决我的业务问题,但catboost的树深度限制为16。我仔细检查了代码,找到了硬编码的部分。catboost/private/libs/options/oblivious_tree_options.cpp中的这一行:

const ui32 maxFullBinaryTreeDepth = 16;

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


Tags: 代码tree编码setup业务privatecpplibs
1条回答
网友
1楼 · 发布于 2024-09-28 01:23:39

这可能是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中的超参数(如果需要)

相关问题 更多 >

    热门问题