模型调参时常用到的Grid Search是什么意思?最好能有直白一点的解释,谢谢!
3个回答
正如mosthated说的,Grid Search就是穷举,穷举所有的超参组合。
当你对决策树调参,如果只对一个超参优化,比如树的最大深度,尝试[3, 5, 7]。那么可以表示为
如果你还想对分裂标准进行调参,分别试试gini和entropy,那么就相当要对$2\times 3 = 6$组参数进行尝试。如下图
所以这就是为什么叫做gird search,网格搜索。grid search是对网格中每个交点进行遍历,从而找到最好的一个组合。
网格的维度就是超参的个数。如果有$k$个超参,每个超参有$m$个候选,那么我们就要遍历$k^m$个组合。所以说尽管效果不错,但是计算代价是非常非常大的。
官网介绍http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
如下给出GridSearchCV的一个例子
# 随机森林分类模型
RFC = RandomForestClassifier()
##设置备选属性用于grid search
rf_param_grid = {"max_depth": [None],
"max_features": [1, 3, 10],
"min_samples_split": [2, 3, 10],
"min_samples_leaf": [1, 3, 10],
"bootstrap": [False],
"n_estimators" :[100,300],
"criterion": ["gini"]}
#用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数
gsRFC = GridSearchCV(RFC,param_grid = rf_param_grid, cv=kfold, scoring="accuracy", n_jobs= 4, verbose = 1)
gsRFC.fit(X_train,Y_train)
#得到最佳参数组合
RFC_best = gsRFC.best_estimator_
# Best score
gsRFC.best_score_