12.2 使用随机搜索选择最佳模型
问题描述
使用一种比穷举搜索更节省计算资源的方法来选择最佳模型。
解决方案
使用scikit-learn的RandomizedSearchCV:

讨论
在12.1节中,我们在一组用户定义的超参数值上使用GridSearchCV,并根据得分搜索最佳模型。比GridSearchCV的暴力搜索更有效的方法是,在用户提供的参数分布(如正态分布、均匀分布)上选取特定数量的超参数随机组合。scikit-learn使用RandomizedSearchCV实现这种随机搜索。
使用RandomizedSearchCV时,如果指定分布,那么scikit-learn将从该分布中对超参数进行无放回的随机采样。举一个例子,我们从区间(0, 4)的均匀分布中随机抽取10个样本值:

或者,如果指定一个值列表,例如两个正则化惩罚超参数值,['l1','l2'],RandomizedSearchCV将对列表进行有放回的随机抽样。
和GridSearchCV一样,我们可以查看最佳模型的超参数值:

就像GridSearchCV一样,在搜索结束后RandomizedSearchCV使用整个数据集和最佳超参数训练一个新模型。该模型和scikit-learn中的其他模型一样可以用来做预测,例如像下面这样做预测:

对超参数组合的采样数(即候选模型的数量)由参数n_iter(迭代次数)指定。
延伸阅读
● scikit-learn文档:RandomizedSearchCV(http://bit.ly/2B7p1zT)
●《使用随机搜索优化超参数》(http://bit.ly/2FrUinf)



本书评论