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

9

我正在尝试使用随机森林解决我的问题(以下是波士顿数据集的示例代码,不是我的数据)。我计划使用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_
1个回答

5
粗到精通实际上是常用于查找最佳参数的方法。您首先从一系列广泛的参数开始,然后在接近最佳结果时进行调整。
我发现一个很棒的库可以为Scikit-learn进行超参数优化,这就是hyperopt-sklearn。它可以自动调整随机森林或任何其他标准分类器。您甚至可以同时自动调整和基准不同的分类器。
我建议您从这个库开始,因为它实现了不同的方案来获取最佳参数:

随机搜索

Parzen估计树(TPE)

退火

高斯过程树

编辑:
在回归情况下,您仍然需要确认您的预测对测试集合是否良好。
无论如何,粗到精通的方法仍然适用于任何估算器。

这个不支持回归和许多算法,是吗?实际上,我的问题是回归而不是分类。我已经编辑了我的问题。 - Muhammad
我已经编辑了我的问题,抱歉造成困扰。 - Muhammad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接