Python xgboost型号的大小是否倾向于较大(磁盘上有MB)?

Python xgboost型号的大小是否倾向于较大(磁盘上有MB)?,python,xgboost,Python,Xgboost,我一直在Python中使用XGBoost(特别是XGBRegressionor)。我用它创建了一个有200个估计器的模型,最大深度为14。它在大约2米的训练数据点上进行训练。它只有3个功能和1个输出。 模型非常精确,我还检查了它是否过拟合。但是,当我保存模型时,它是巨大的!它在磁盘上占用160 MB,当我将其转换为C(使用Treelite)时,磁盘上的容量为490 MB。 我必须最终在没有python的机器上部署它,并且它必须与另一个只能加载C文件的软件接口。如此庞大的规模是一个重大的实施挑战

我一直在Python中使用XGBoost(特别是XGBRegressionor)。我用它创建了一个有200个估计器的模型,最大深度为14。它在大约2米的训练数据点上进行训练。它只有3个功能和1个输出。 模型非常精确,我还检查了它是否过拟合。但是,当我保存模型时,它是巨大的!它在磁盘上占用160 MB,当我将其转换为C(使用Treelite)时,磁盘上的容量为490 MB。 我必须最终在没有python的机器上部署它,并且它必须与另一个只能加载C文件的软件接口。如此庞大的规模是一个重大的实施挑战

有什么事情我做得不对吗?或者xgboost型号通常有这么大?我已经在网上到处找过了,但是没有找到这个问题


我正在使用Python3.7和Anaconda构建我的模型。我不确定还应该发布哪些详细信息。

是的。根据我的经验,拥有大量估计器和高
max_depth
可以创建大型模型。我会尽量降低最大深度(而不牺牲准确性)。要转换为
C
,请再看一件事。200个估计器可能有点过头了。你可以试着提高学习率,减少估计数。这在过去对我很有效。谢谢。最大深度来自于在14号附近进行的详尽的网格搜索。我认为,如果准确性没有提高,xgboost模型的早期停止应该停止n_估计。但这是个好消息。我会看看我有多大的空间来牺牲准确性,让模型保持合理的形状。你不能牺牲任何准确性。事实上,它可能会改进您的测试/验证保持集。而且,即使模型非常大。在移植到
C
之后,它仍然非常快。是的。根据我的经验,拥有大量估计器和高
max_depth
可以创建大型模型。我会尽量降低最大深度(而不牺牲准确性)。要转换为
C
,请再看一件事。200个估计器可能有点过头了。你可以试着提高学习率,减少估计数。这在过去对我很有效。谢谢。最大深度来自于在14号附近进行的详尽的网格搜索。我认为,如果准确性没有提高,xgboost模型的早期停止应该停止n_估计。但这是个好消息。我会看看我有多大的空间来牺牲准确性,让模型保持合理的形状。你不能牺牲任何准确性。事实上,它可能会改进您的测试/验证保持集。而且,即使模型非常大。在移植到
C
之后,它仍然非常快。