随机森林超参数调整scikit-learn使用GridSearchCV

Muh*_*mad 9 python random-forest scikit-learn grid-search

我正在尝试使用随机森林来解决我的问题(下面是波士顿数据集的示例代码,而不是我的数据).我打算GridSearchCV用于超参数调整,但不同参数的值范围应该是多少?我怎么知道我选择的范围是正确的?

我正在互联网上阅读它并且有人建议在第二次网格搜索中尝试"放大"最佳值(例如,如果它是10则尝试[5,20,50]).

这是正确的方法吗?我应该对随机森林所需的所有参数使用这种方法吗?这种方法可能会错过"好"的组合,对吧?

import numpy as np
from sklearn.grid_search import GridSearchCV
from sklearn.datasets import load_digits
from sklearn.ensemble import RandomForestRegressor
digits = load_boston()
X, y = dataset.data, dataset.target
model = RandomForestRegressor(random_state=30)
param_grid = { "n_estimators"      : [250, 300],
           "criterion"         : ["gini", "entropy"],
           "max_features"      : [3, 5],
           "max_depth"         : [10, 20],
           "min_samples_split" : [2, 4] ,
           "bootstrap": [True, False]}
grid_search = GridSearchCV(clf, param_grid, n_jobs=-1, cv=2)
grid_search.fit(X, y)
print grid_search.best_params_
Run Code Online (Sandbox Code Playgroud)

Kik*_*ohs 5

粗到细实际上通常用于找到最佳参数.您首先从各种参数开始,并在接近最佳结果时对其进行细化.

我找到了一个很棒的库,它为scikit-learn,hyperopt-sklearn做了超参数优化.它可以自动调整RandomForest或任何其他标准分类器.您甚至可以同时自动调整和对不同的分类器进行基准测试.

我建议你从这开始,因为它实现了不同的方案来获得最佳参数:

随机搜索

Parzen Estimators树(TPE)

退火

高斯过程树

编辑:

在回归的情况下,您仍然需要断言您的预测是否在测试集上是好的.

无论如何,从粗到精的方法仍然适用于任何估算器.