Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UM - Game-Playing Strength of MCTS Variants 11t...

Ryushi
April 13, 2025
130

UM - Game-Playing Strength of MCTS Variants 11th. Place solution

Ryushi

April 13, 2025
Tweet

Transcript

  1. overview : dataset データ数 説明変数 エージェント Train.csv : 233,234 row

    × 814 columns ゲーム名 ゲームルールに関する特徴量 ゲームの勝敗に関わる特徴量 本コンペの特徴量は以下に⼤別される MCTS(モンテカルロ⽊探索)アルゴリズム。選択戦略やパラメーターを変えた72種類 1377種類のボードゲーム ゲームのルールを定義する特徴量。詳しくは次ページ。 ⽬的変数(勝率)を含む、ゲームの勝利数と引き分け数など
  2. preprocessing training inference agenda pipeline overview cv strategy multi target

    feature engineering flip augmentation data generation stacking submittion selection
  3. preprocessing : feature engineering(1/2) 特徴量としての情報が少ないものは学習から除いた。 具体的には以下のようなもの。 ユニークな値が1つしかない 95%以上⽋損しているもの ”_frequency”系特徴量と ”_components”系特徴量

    相互相関が90%以上の特徴量はいずれかを残して、削除(RYUSHIのみ) 例えば、 [ʻScoreDifferenceVarianceʼ, ʻScoreDifferenceMedianʼ, ʻScoreDifferenceMaximumʼ, ʻScoreDifferenceChangeAverageʼ, ʻScoreDifferenceMaxDecreaseʼ, ʻScoreDifferenceAverageʼ, ʻScoreDifferenceMaxIncreaseʼ, ʻScoreDifferenceChangeLineBestFitʼ] の相互相関が90%超えていた場合、”ScoreDifferenceVariance” のみを残して他を削除
  4. preprocessing : feature engineering(2/2) “LudRules”から以下のような特徴量を追加する “LudRules” 内に 'Draw'、'Win'、'Loss' が登場する回数を抽出 start、play、end

    の各セクションに分割し、それぞれにTF-IDFを適⽤ セクション内のネストの深さ(() や {} の数を⽤いて計算) セクション内の "if" ステートメントの数。 セクション内の "place" の出現回数。 その他にも特徴量は作っていますが、⼀番効いたのは“LudRules”由来のもの
  5. preprocessing : flip augmentation “LMSYS ‒ Chatbot Arena Human Preference

    Predictions” 2nd Place solutionに着想を得て Flip Augmentationを実施 agent1 agent2 AdvantageP1 utility_agent1 "MCTS-UCB1Tuned-0.1- MAST-false" "MCTS-UCB1Tuned-0.6- NST-true" 0.6 0.333333 agent1 agent2 AdvantageP1 utility_agent1 "MCTS-UCB1Tuned-0.6- NST-true" "MCTS-UCB1Tuned-0.1- MAST-false" 0.4 -0.333333 エージェントと勝率だけでなくAdvantageP1(100回対戦したときのagent1の勝率) を”1-AdvantageP1”とするのがポイント
  6. preprocessing training inference agenda pipeline overview cv strategy multi target

    feature engineering flip augmentation data generation stacking submittion selection
  7. pipeline 2g single model PUBLIC: 0.422 PRIVATE: 0.430, 0.431 RYUSHI

    single model PUBLIC: 0.422, 0.424 PRIVATE: 0.432 ktm single model PUBLIC: 0.427~0.430 PRIVATE: 0.433~0.436 LGBM stacking PUBLIC: 0.4196 PRIVATE: 0.4249 1st stage: catboost single modelを各々が作成。 2nd stage: LGBM stacking(詳細は後ほど) 5 models 4 models 5 models
  8. preprocessing training inference agenda pipeline overview cv strategy multi target

    feature engineering flip augmentation data generation stacking submittion selection
  9. submission selection Seed間のLBのズレや、fold間のCVのズレなどLBに多くの不安があったため 最終提出はPublicLBを捨てて、CVスコアを起点に以下の2つとした。 CV + LB ベストモデル CV ベストモデル

    結果的に本コンペはPublicLBを起点に選んでもあまり揺れなかったのだが、 (我々のsubmissionの中では)CVを起点にprivate bestを選択できた。 やはり信頼できるCVに基づいた、Trust CVは⼤切 2nd stageで、Stackingを⽤いたもので、CVとLBを総合的に判断して⼀番良かったもの 2nd stageで、nelder-meadを⽤いたもので、CVが⼀番良かったもの
  10. reference 本資料の元となった、我々のチーム(Kansai-kaggler)のソリューションです。 11th Place solution / RYUSHI(Team:Kansai-kaggler) https://qiita.com/DataRobot_PR/items/7e8195d1bcd11394ccaa Kaggleコンペ「UM -

    Game-Playing Strength of MCTS Variants 」3位⼊賞解法徹底解説 / Senkin https://speakerdeck.com/rist/solution-um-game-playing-strength-of-mcts-variants モンテカルロ⽊探索のパフォーマンスを予測する Kaggleコンペ解説 〜⽣成AIによる未知のゲーム⽣成〜 / smly https://www.kaggle.com/competitions/um-game-playing-strength-of-mcts-variants/discussion/549708 Soloで3位⼊賞されたSenkin⽒の解説記事です。本コンペに限らず、テーブルコンペで⼤切な考え⽅を述べてくれています。 Rist Inc.による解説記事です。優勝解法が採⽤していたアプローチと⽣成AIによる未知のゲーム⽣成について詳しく説明しています。
  11. reference 23位で銀メダルを獲られたmirandora⽒の振り返り記事です。solutionに加えて、⾦メダルとの差分を丁寧に分析しています。 Kaggle UMコンペ振り返り(Silver / 23th) / mirandora https://www.mirandora.com/?p=5076 https://zenn.dev/ryushi496/articles/ddd480808f6a86

    kaggle(UM-MCTSコンペ)振り返り(11th Place) &上位解法 / RYUSHI ⼿前味噌ですが、私の記事です。参考になれば幸いです。 https://catboost.ai/docs/en/concepts/loss-functions-multiregression Multiregression: objectives and metrics Catboostのmultiregressionに関する公式ドキュメントです。