12.1 使用穷举搜索选择最佳模型
问题描述
通过搜索一系列的超参数来选择最佳模型。
解决方案
使用sciket-learn的GridSearchCV:
讨论
GridSearchCV是一种使用交叉验证进行模型选择的暴力方法。具体来说,就是用户为一个或多个超参数定义候选值的集合,然后GridSearchCV 使用其中的每个值或值的组合来训练模型。性能得分最高的模型被选为最佳模型。例如,本节的解决方案使用逻辑回归作为学习算法,它包含两个超参数:C和正则化惩罚(regularization penalty)。
如果你不知道C和正则化惩罚代表什么意思,不要担心,我们将在接下来的几章中介绍它们。目前你只需知道C和正则化惩罚可以选用一系列值,而这些值必须在训练之前指定。解决方案中首先定义了C的10个可能的值:
然后,为正则化惩罚也定义了两个可能的值:['l1','l2']。GridSearchCV使用C和正则化惩罚的所有组合来训练模型,并使用k折交叉验证对模型进行评估。我们的解决方案中有10个可能的C值,2个可能的正则化惩罚值,并采用5折交叉验证,这样的话一共有10 × 2 × 5 = 100个候选模型,要从其中选出最佳模型。
一旦GridSearchCV完成训练,就可以通过下面的方法查看最佳模型的超参数(最佳超参数):
默认情况下,在找到最佳超参数后,GridSearchCV将使用最佳超参数和整个数据集重新训练模型(而不是保留部分数据用于交叉验证)。我们可以像使用其他scikit-learn模型一样使用此模型来进行预测:
GridSearchCV的verbose参数值得注意,虽然该参数一般不需要设置,但在长搜索过程中可以设置该参数来获取一些过程进展信息。verbose参数决定了搜索期间输出的消息量,ʘ表示没有输出,1到3代表输出信息,数字越大表示输出的细节越多。
延伸阅读
● scikit-learn文档:GridSearchCV(http://bit.ly/2Fuctc4)
本书评论