目次
こんにちは.高山です.
KaggleのUM - Game-Playing Strength of MCTS Variants というコンテストに参加していました.
普段は専門である手話言語処理のことばかり考えているのですが,もう少し一般的なデータサイエンスも勉強しないといけないな,と感じており参加を決めました.
Boosting や専門外の特徴エンジニアリングに苦戦して,最終順位も 209/1608 位とイマイチでしたが,その分学びの多いコンテストでした.
コンテストの紹介
突然ですが,モンテカルロ木探索 (MCTS: Monte Carlo tree search) というアルゴリズムは聞いたことがありますか?
このアルゴリズムはゲーム AI に良く使われており,今回のコンテストではゲーム AI の勝率を予測するのが目的となります.
図1に概要を示します.
このコンテストでは,MCTS を用いた 2種類のゲームAI (コンテストでは Agent と呼んでいます) をボードゲームで対戦させます.
各エージェントには,それぞれ異なる MCTS アルゴリズムとパラメータが与えられており,勝率データが与えられています.
ボードゲームは Ludii [Piette'20] というゲーム記述システムで定義されており,定義されている各種パラメータが特徴量になります.
特徴量には,2値データ,整数データ,連続データ,および文字データなどが含まれます.
これらの特徴量と勝率データを用いて,勝率予測モデルを学習し,テストデータ (特徴量だけが与えられます) における勝率予測の正確さを競い合います.
このコンテストでは,有効な特徴を見出して取捨選択,および変換する特徴エンジニアリングと,予測モデルの選択およびチューニングが大きなポイントになります.
今回は様々な特徴量から回帰予測で勝率を求めるというタスクでしたので,LightGBM [Ke'17] と CatBoost [Prokhorenkova'17] を Optuna でチューニングして,予測値の平均を用いる (所謂アンサンブルという手法です) というアプローチを用いました.
大きく性能向上はしませんでしたが,Boosting や離散データの特徴エンジニアリング,および Optuna など今まで触ってこなかった手法を経験して色々と勉強になりました.
トップチームのアプローチは公開されているので,時間があれば勉強して試してみたいと思います.
- [Piette'20]: E. Piette, et al., "Ludii -- The Ludemic General Game System," Proc. of the ECAI, available here, 2020.
- [Ke'17]: G. Ke, et al., "LightGBM: A Highly Efficient Gradient Boosting Decision Tree," Proc. of the NIPS, available here, 2017.
- [Prokhorenkova'17]: L. Prokhorenkova, et al., "CatBoost: unbiased boosting with categorical features," arXiv: 1706.09516, available here, 2017.