模型调参时常用到的Grid Search是什么意思?

  统计/机器学习 模型验证 开放问题    浏览次数: 1104
0

模型调参时常用到的Grid Search是什么意思?最好能有直白一点的解释,谢谢!


 

信春哥   2018-02-08 21:06



   3个回答 
7

正如mosthated说的,Grid Search就是穷举,穷举所有的超参组合。

当你对决策树调参,如果只对一个超参优化,比如树的最大深度,尝试[3, 5, 7]。那么可以表示为

如果你还想对分裂标准进行调参,分别试试gini和entropy,那么就相当要对$2\times 3 = 6$组参数进行尝试。如下图

所以这就是为什么叫做gird search,网格搜索。grid search是对网格中每个交点进行遍历,从而找到最好的一个组合。

网格的维度就是超参的个数。如果有$k$个超参,每个超参有$m$个候选,那么我们就要遍历$k^m$个组合。所以说尽管效果不错,但是计算代价是非常非常大的。


五丁大包   2018-02-27 12:23

3

官网介绍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_


betten   2018-02-27 15:32

2

就是穷举法,你把想测试的参数的数值以字典形式搞进去,这个东西能给你列出来对应的预测精度

mosthated   2018-02-25 03:01



  相关主题

训练误差、测试误差、泛化误差的区别   2回答

micro和macro F1 score分别是什么意思?   2回答

如果我用交叉验证,还是否需要单独分出测试集?   1回答

测试集和验证集的区别?   4回答

k-fold cross validation的k怎么选   2回答

十折交叉验证   1回答

交叉验证是如何进行的?   1回答

回归问题中的stratified cross validation?   2回答

Stratified k-fold cross validation(分层交叉验证)   1回答

如何在保持查全率不变的情况下提高查准率?   1回答

python里怎么求多元分类的F1 score?   1回答

如何理解PAC Learning?   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!