質問内容
アンサンブル学習(特にvotingとstacking)を行う際に、現在はランダムサーチ的なことをしてモデルの良い組み合せを模索しております(詳しくは後述)。もしかしたら、optunaを使って選定するモデルを最適化できるのではないかなと考えたのですが、どのようにコーディングしたら良いか思いつかず今回質問させて頂きました。
以下に示すコードのstack_modelsの引数である、選抜するモデル(estimator_list)をパラメーターとして、optunaでモデルの最適な組み合わせを模索出来るのではないかと考えたのですが、どのようなコードを書けばいいのか思いつきません。
モデルをまとめたリストから、複数のモデルをoptunaに選択させたいです。
開発環境:VScode
使用言語:python
現在行っているモデルのランダムサーチ
PyCaretを使って作製したモデルをリスト化して、そこからランダムにモデルを選抜してstackingすることで、最終的に得られたアンサンブルモデルから精度の高いモデルを選抜しています(mlflowでログを記録しています)。
python
1import random 2 3#PyCaretで作製したモデルをリスト化 4model = [ada,ard,br,dt,en,et,gbr,huber,knn,kr,lar,lasso,lightgbm,llar,lr,mlp,omp,par,ransac,rf,ridge,svm,tr,xgboost] 5 6#ランダムサーチを1000回実行 7for num in range(1000): 8 print(num) 9 numbers = random.randint(2, 20) #使用するモデル数をランダムに決定 10 modeling = random.sample(model, k=numbers) #アンサンブルするモデルのリストを作製 11 meta = random.choice(model) #メタモデルをランダムに決定 12 stacker = stack_models(estimator_list = modeling, meta_model = meta, choose_better = False, optimize = 'RMSE')

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/22 06:00