勾配ブーステイング決定木(GBT)で、使用パラメータグリッドを以下のように作成します。
また、ランダムサーチを実行します。
from sklearn.ensemble import GradientBoostingRegressor from sklearn.model_selection import RandomizedSearchCV param_dist = {'max_features' : ['log2',1.0], 'max_depth' : [3, 5, 7, 10], 'min_samples_leaf' : [2, 3, 5, 10], 'n_estimators': [50, 100], 'learning_rate' : [0.0001,0.001,0.01,0.05,0.1,0.3], 'loss' : ['ls','huber'] } pre_gs_inst = RandomizedSearchCV(GradientBoostingRegressor(warm_start=True), param_distributions = param_dist, cv=3, n_iter = 30, n_jobs=-1) pre_gs_inst.fit(X_train, y_train)
上記の結果から、別のランダムサーチを実行します。
param_dist = {'max_features' : ['sqrt',0.5,'log2'], 'max_depth' : [4,5,6], 'min_samples_leaf' : [1,2,3], 'n_estimators': [50, 100], 'learning_rate' : [0.01,0.05,0.1], 'loss' : ['ls','huber'] } pre_gs_inst = RandomizedSearchCV(GradientBoostingRegressor(warm_start=True), param_distributions = param_dist,cv=3,n_iter = 30, n_jobs=-1) pre_gs_inst.fit(X_train, y_train)
さらに、上記の結果から、変数rs_gbtに格納し、最後に4000個の推定器での訓練を実施する。
rs_gbt = GradientBoostingRegressor(warm_start=True, max_features = 0.5, min_samples_leaf = 2, learning_rate=0.05, max_depth = 4, n_estimators = 4000,loss = 'huber') rs_gbt.fit(X_train, y_train)
上記のように、ランダムサーチを2回繰り返し、その結果をrs_gbtに変数入力するアルゴリズム
です。
これを、自動入力にしたいのです。
1度目のランダムサーチの最適値(mean_scoreが高いもの)を、2回目のランダムサーチに
自動でいれる。(lossは、huberとlsは固定で2つ入れる)そして、2回目のランダムサーチ
では、最適値の前後値も自動で設定する。最後に、2回目のランダムサーチの最適値をrs_gbtに
自動で変数入力する。
ランダムサーチの最適値を取り入れる変数が設定されていれば、できそうなのですが、わかる
かた、いらっしゃいますでしょうか。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。