我有一个包含 300 000 行的数据集和一个集成模型,其中包括网格搜索以找到每个算法的最佳参数。不幸的是,网格搜索需要很长时间,而且我在为不同的算法(xgb、lightgbm ..)实现 gpu 运行时遇到问题。来自 scikit-learn 的模型(如随机森林)也不能在 gpu 上运行。现在的想法是,我将创建一个最大的小数据集,而不是 300 000 行。500 行,比完整数据集需要的时间更少。
所需的最小样本量计算有帮助吗?
样本应该有多大?获得大数据集的良好数据分布?
我有一个包含 300 000 行的数据集和一个集成模型,其中包括网格搜索以找到每个算法的最佳参数。不幸的是,网格搜索需要很长时间,而且我在为不同的算法(xgb、lightgbm ..)实现 gpu 运行时遇到问题。来自 scikit-learn 的模型(如随机森林)也不能在 gpu 上运行。现在的想法是,我将创建一个最大的小数据集,而不是 300 000 行。500 行,比完整数据集需要的时间更少。
所需的最小样本量计算有帮助吗?
样本应该有多大?获得大数据集的良好数据分布?
这种对数据集使用小样本来搜索超参数的想法称为多保真方法。一个很好的起点是 Frank Hutter、Lars Kotthoff、Joaquin Vanschoren 的书自动化机器学习:开放获取的方法、系统、挑战。
您还可以使用Sklearn Randomized Search,它的效率比 Grid Search 低一些,因为它不会测试所有的组合,但可以找到最好的组合之一,然后您通过稍微调整参数来手动结束调整随机搜索给了你。我认为这比对数据集进行下采样以使 GridSearch 工作更有利可图,因为您将使用最好的调整方法,但使用效率较低的数据集。