631. UM - Game-Playing Strength of MCTS Variants | um-game-playing-strength-of-mcts-variants
首先,我要感谢 @stefanoclss 和 @xyzdivergence 组队合作!
更多内容待补充
按 GameRulesetName 的首字母进行 StratifiedGroupKFold 分组(例如 Zuz_Mel_7x7 -> Z),重复 3 次。我注意到相似的游戏在 GameRulesetName 中往往具有相同的首字母,因此使用这种方法来减少 CV 中的潜在数据泄露,因为测试数据集可能存在分布偏移。
在训练前转换了目标变量(以“修正”异常的目标分布)(LB: -0.001)
df["utility_agent1"] = df["utility_agent1"] - (- 1 + 2 * df["AdvantageP1"])
转换前:
转换后:
对代理特定特征进行独热编码 (LB: -0.000 但速度提升约 70%)
onehot_cols = [
['selection1', ['ProgressiveHistory', 'UCB1', 'UCB1GRAVE', 'UCB1Tuned']],
['selection2', ['ProgressiveHistory', 'UCB1GRAVE', 'UCB1', 'UCB1Tuned']],
['exploration_const1', ['0.1', '0.6', '1.41421356237']],
['exploration_const2', ['0.6', '0.1', '1.41421356237']],
['playout1', ['MAST', 'NST', 'Random200']],
['playout2', ['Random200', 'NST', 'MAST']],
['score_bounds1', [True, False]],
['score_bounds2', [True, False]],
]
created_feats = 0
for col, unique in onehot_cols:
for u in unique:
df[f'{col}_{u}'] = (df[col] == u).astype(np.int8)
created_feats += 1
我们非常节制地使用它们,因为初步实验表明,通过特征工程 (FE) 和特征选择 (FS) 很容易过拟合 CV。
我们尝试了两种后处理方法,两者的改进相似
CV 和 LB 的改进约为 0.004-0.005
基于 CV 分数进行爬山法集成(包括增强和未增强的模型)。如果我们基于 LB 分数来做,我们可能有机会获得金牌 😔,但我们相信 CV 是稳健的且不存在数据泄露。