一种识别调谐参数及其可能范围的方法

数据挖掘 机器学习 xgboost 超参数调整
2022-03-11 18:16:54

我是机器学习的新手。但是当我开始学习时,我发现所有的方法都有一些调整参数,并且这些参数具有一系列可能的值。通过网格搜索,我们确定了一组优化某些功能的参数。但是有没有办法找到调整参数的可能域?这肯定会节省我的时间和计算机的工作。此外,一些方法例如xgboost具有大量的调整参数。有什么方法可以知道要调整哪一个以及保持原样。我一直在使用sklearnpython库。

2个回答

不是一个完整的答案,但评论太长了。

我总是首先尝试查看默认参数的执行情况。然后从文档或阅读中,您可以看到每个参数的全局影响是什么(我所说的影响可能是增加参数X意味着使模型复杂化,或者参数Y意味着增加对解决方案的收敛速度)。根据您获得的第一个结果,选择一个似乎对模型影响最大的参数,并使其在与您的第一个结果有意义的方式上有所不同。如果验证集的情况有所改善,请继续以这种方式移动值,如果没有则相反。通常,您无需调整每个参数即可获得良好的结果。

这是一种手工方法,不是最佳的。但是,当您确切地说自己是机器学习的初学者时,我相信这是学习“感觉”通常会影响 Xgboost 算法性能以及影响较小的最佳方法,因此对于初级粗略来说可以忽略调音。

https://xgboost.readthedocs.io/en/latest/parameter.html有一些关于什么参数影响什么的很好的信息。如果您需要,请不要犹豫,就某些特定参数提出更精确的问题:)

我同意之前关于领域知识的评论,这肯定会有所帮助。随着您积累经验,您还将对有效的方法有“感觉”。一些参数更适合 NLP,其他参数更适合图像处理。那是你只有在“在战壕里”一段时间后才能学到的东西。

为了建立这种体验,您可以尝试以这样一种方式构建您的代码,以便您尝试多个模型,每个模型都有自己独特的参数。当我使用新数据集时,我可能会创建多个循环和/或线程,每个循环和/或线程都构建自己的模型,我将比较所有模型的准确性和丢失率,然后缩小我想要调整的参数。这会为您创造更多的工作来创建这种方法,然后跟踪结果,但这是您了解做什么的好方法,它将帮助您在未来做出更好的决策。