本篇文章主要介绍在sklearn中采用GridSearchCV和RandomizedSearchCV进行超参数选择。
一、超参数介绍:
1,超参数:在模型训练中,有些参数不能通过对数据进行学习得到,这种参数叫做超参数。比如,神经网络的层数,每层的神经元数量等。
2,超参数的重要性: 在做参数数的选择时计算量是很大的,为了节省开销,我们可以对模型的超参数进行分类,分为:重要,次重要,不重要。这种分类方法很直观,也是个人分类观点。具体得到重要程度可以通过改变该超参数观察对模型的影响程度。
二、超参数的网格搜索: 网格搜索就是提前设置参数的可以选取的值,然后在对于每个选择情况下训练,选取最好的情况。适合数据量小的时候。
GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数。但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果。这个时候就是需要动脑筋了。数据量比较大的时候可以使用一个快速调优的方法——坐标下降。它其实是一种贪心算法:拿当前对模型影响最大的参数调优,直到最优化;再拿下一个影响最大的参数调优,如此下去,直到所有的参数调整完毕。这个方法的缺点就是可能会调到局部最优而不是全局最优,但是省时间省力,巨大的优势面前,还是试一试吧,后续可以再拿bagging再优化(按重要程度进行坐标下降)。
from sklearn.model_selection import GridSearchCV
from sklearn import svm,datasets
def gs