返回列表

9th place solution

422. Santa 2020 - The Candy Cane Contest | santa-2020

开始: 2020-12-08 结束: 2021-02-22 游戏AI 数据算法赛
第9名解决方案
作者:toshi_k (Competition Grandmaster)

感谢主办方举办这场激动人心的比赛!我很高兴能成为 Competition Grandmaster。

代码

源代码可在此处获取:
https://github.com/toshi-k/kaggle-santa-2020

基本策略

在本次比赛中,奖励是通过比较阈值和随机生成的数字来决定的。如果我们知道阈值,计算获得奖励的概率很容易。但在游戏过程中智能体无法看到阈值,我们必须对其进行估计。

和其他团队一样,我也通过 Kaggle API 下载了历史数据,并创建了一个用于监督学习的数据集。我们可以在 API 的响应中看到每一轮 threshold 的真实值。因此,我将其作为目标变量。

在比赛中期,我发现分位数回归比传统的 L2 回归要好得多。我认为它可以通过百分位参数来调整探索利用之间的平衡。

特征

我为训练和预测制作了 32 个特征。我也尝试了其他一些特征,但效果不佳。添加不必要的特征有时会导致超时错误,所以我没有采用它们。

# 名称 解释
#1round游戏中的轮次数 (0-1999)
#2last_opponent_chosen对手智能体上一步是否选择了这台机器
#3second_last_opponent_chosen对手智能体倒数第二步是否选择了这台机器
#4third_last_opponent_chosen对手智能体倒数第三步是否选择了这台机器
#5opponent_repeat_twice对手智能体过去两轮是否连续选择了这台机器 (#2 x #3)
#6opponent_repeat_three_times对手智能体过去三轮是否连续选择了这台机器 (#2 x #3 x #4)
#7num_chosen对手和我的智能体选择这台机器的总次数
#8num_chosen_mine我的智能体选择这台机器的次数
#9num_chosen_opponent对手智能体选择这台机器的次数 (#7 - #8)
#10num_get_reward我的智能体从这台机器获得奖励的次数
#11num_non_reward我的智能体从这台机器未获得奖励的次数
#12rate_mine我的选择次数占总选择次数的比例 (#8 / #7)
#13rate_opponent对手选择次数占总选择次数的比例 (#9 / #7)
#14rate_get_reward我获得奖励的选择次数占总选择次数的比例 (#10 / #7)
#15empirical_win_rate基于我的选择和奖励得出的阈值后验期望
#16quantile_10基于我的选择和奖励得出的阈值后验分布的 10% 分位点
#17quantile_20基于我的选择和奖励得出的阈值后验分布的 20% 分位点
#18quantile_30基于我的选择和奖励得出的阈值后验分布的 30% 分位点
#19quantile_40基于我的选择和奖励得出的阈值后验分布的 40% 分位点
#20quantile_50基于我的选择和奖励得出的阈值后验分布的 50% 分位点
#21quantile_60基于我的选择和奖励得出的阈值后验分布的 60% 分位点
#22quantile_70基于我的选择和奖励得出的阈值后验分布的 70% 分位点
#23quantile_80基于我的选择和奖励得出的阈值后验分布的