超参数调优是为机器学习模型选择最优超参数值的过程。这些参数通常在实际训练过程开始之前设定,用于控制学习过程本身的各个方面。
有效的调优能帮助模型更好地学习模式,避免过拟合或欠拟合并实现对未知数据更高的准确率。
超参数调优的技术
模型可能具有许多超参数,找到最佳的参数组合可以被视为一个搜索问题。超参数调优的两个最佳策略是:
1. GridSearchCV 网格搜索
GridSearchCV 是一种用于超参数调优的穷举技术。它通过使用所有指定的超参数值组合来训练模型,以找出性能最佳的配置。它的速度较慢且消耗大量计算资源,这使得它在处理大型数据集或众多设置时难以使用。它的工作步骤如下:
- 为每个超参数创建潜在值的网格。
- 针对网格中的每个组合训练模型。
- 使用交叉验证评估每个模型。
- 选择得分最高的组合。
例如,如果我们想要为逻辑回归分类器模型调优两个超参数 C 和 Alpha,且具有以下数值集:
C = [0.1, 0.2, 0.3, 0.4, 0.5]
Alpha = [0.01, 0.1, 0.5, 1.0]
网格搜索技术将构建多个版本的模型,包含 C 和 Alpha 的所有可能组合,总共产生 5 * 4 = 20 个不同的模型。然后选择性能最佳的组合。
示例:使用 GridSearchCV 调优逻辑回归
下面的代码演示了如何使用 GridSearchCV。在下面的代码中:
- 我们使用 make_classification 生成样本数据。
- 我们使用对数标度定义了一系列
C值。 - GridSearchCV 尝试 param_grid 中的所有组合并使用 5 折交叉验证。
- 它返回最佳的超参数 (
C) 及其对应的验证分数
Python
CODEBLOCK_ec1645a7
输出:
> Tuned Logistic Regression Parameters: {‘C‘: 0.006105402296585327}
> Best score is 0.853
这代表了使用超参数组合 C = 0.0061 的模型所达到的最高准确率。0.853 的最佳分数意味着模型在网格搜索过程中在验证数据上达到了 85.3% 的准确率。
2. RandomizedSearchCV 随机搜索
顾名思义,RandomizedSearchCV 从给定的范围内随机选取超参数组合,而不是像 GridSearchCV 那样检查每一个单独的组合。
- 在每次迭代中,它尝试一个新的随机超参数值组合。
- 它记录每个组合的模型性能。
- 经过多次尝试后,它选择表现最好的一组参数。
示例:使用 RandomizedSearchCV 调优决策树
下面的代码演示了如何使用 RandomizedSearchCV。在这个例子中:
- 我们为每个超参数定义了一系列值,例如 maxdepth, minsamples_leaf 等。
- 随机组合被选出并使用 5 折交叉验证进行评估。
- 打印出最佳组合和分数。
Python
CODEBLOCK_05d0903a
输出:
> Tuned Decision Tree Parameters: {‘criterion‘: ‘entropy‘, ‘maxdepth‘: None, ‘maxfeatures‘: 6, ‘minsamplesleaf‘: 6}
> Best score is 0.8
0.842 的分数意味着该模型