我有一个简单的问题:
我正在使用XGBoost对一些数据进行分类:1。对于100个估计量,我有以下分数(Roc_score):train_data : 98.5 validation_data : 97.2
2.)有500个估计量,我有以下分数(Roc_score):train_data : 99.4 validation_data : 97.7
雅高。对于以上情况,我们可以说有500个估计量的模型工作得更好。或者,我应该将验证数据更改几次,看看是否通过从100到500的估计量来实现类似的增量。
发布于 2019-10-02 15:52:18
乍一看,你的结论似乎是正确的,但有一些重要的注意事项要记住。
首先,您的培训和验证集的大小是多少?如果您的验证集太小,那么所观察到的差异可能在统计上并不显著。
其次,您应该验证您的验证集是一个有代表性的示例。(也就是说,它应来自与培训集相同的分布)。如果它没有代表性,那么它可能会给出糟糕的绩效评估。
第三,在调优超参数时,最好将数据集分成三个碎片--培训、验证和测试。您可以使用培训和验证集来找到最优的超级参数(正如您所做的那样),然后使用测试集为调优模型生成性能评估。如果您信任在超参数调优过程中获得的验证精度,那么您可能会遇到一种微妙的过度拟合形式,在这种情况下,超参数是为验证集专门化的。
最后,如果您有计算资源,那么使用交叉验证来评估准确性总是一个好主意,而不是使用火车测试分割。这将给你一个更加可靠的准确性评估。
如果您已经检查了所有这些框,那么您就有充分的理由相信500位估计者比100位估计者更好!
S是否应该将验证数据更改几次,看看是否会通过从100到500个估计量来实现类似的增量?
是的,尝试多种不同的超参数配置总是一个好主意。您可以使用scikit-learn的GridSearchCV或RandomizedSearchCV轻松地在超参数空间上运行搜索。
发布于 2019-10-02 17:27:49
只是为了在其他的答案中加入一些一般性的想法。通过增加树的数量,梯度增强对过度拟合具有相当的鲁棒性。如果学习率较低,则增加树数将提高性能。因此,人们普遍认为,最好是通过早期停止来设置树的数量,而不是像对待其他超参数那样对待它们。
您将设置一个较小的学习速率( \eta <0.1)和大量的树,并在没有看到单独的验证集上的任何改进时停止添加树。
作为最后一个可选步骤,由于添加越来越多的树会带来越来越小的性能收益,一旦您找到了满意的模型并希望将其投入生产,您就可以分析可以在不显著降低性能的情况下减少树数的程度。然后,如果速度是问题,您可以减少树的数量,以加快生产中的计算速度。这个想法也经常被用于随机森林,因为在这里增加更多的树永远不会降低性能。
https://datascience.stackexchange.com/questions/61140
复制相似问题