2016-02-02 48 views
9

私の問題はランダムフォレストを使用しようとしています(私のデータではなく、ボストンのデータセットのサンプルコードです)。ハイパーパラメータチューニングにはGridSearchCVを使用する予定ですが、さまざまなパラメータの値の範囲はどのようにする必要がありますか?選択している範囲が正しいことをどのようにして知ることができますか?ランダムフォレストのハイパーパラメータチューニングScikit-Learn Using GridSearchCV

私はそれについてインターネットで読んでいましたが、誰かが第2のグリッド検索(例えば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_ 

答えて

3

実際には、粗いものから細かいものが実際に最もよく使用されます。まず、さまざまなパラメータから始めて、最良の結果に近づくように洗練します。

scikit-learnのハイパーパラメータ最適化を行う素晴らしいライブラリが見つかりました。hyperopt-sklearn RandomForestやその他の標準的な分類子を自動調整できます。異なる分類子を同時に自動チューニングしベンチマークすることもできます。

私はそれが最善のパラメータを取得するために異なるスキームを実装しているため、あなたがそれで始まるお勧め:

ランダム検索

パーゼン推定量のツリー(TPE)

アニーリング

ツリー

ガウスプロセスツリー

EDIT:回帰の場合

、あなたはまだ予測が優れている場合にアサートする必要があります。私の推測では、Regressorを、scikit-learn estimator interface.を実装するバイナリクラシファイアにラップして、hyperoptライブラリで使用するスコア関数を使用することができます。

とにかく、見積り。

+0

これは回帰と多くのアルゴリズムをサポートしていませんか?実際、私の問題は、分類ではなく回帰です。私は私の質問を編集しました。 – Muhammad

+0

あなたのコードはRandomForestClassifierを示しています... – Kikohs

+0

私は混乱のために申し訳ありません、私の質問を編集しました。 – Muhammad

関連する問題