返回列表

11th place solution

453. MLB Player Digital Engagement Forecasting | mlb-player-digital-engagement-forecasting

开始: 2021-06-10 结束: 2021-09-09 体育商业 数据算法赛
第11名解决方案

第11名解决方案

作者: Makotu | 排名: 11 | 发布时间: 2021-08-12

[更新]
最终,我获得了第11名,并成功留在了金牌区内。
我要感谢举办这次比赛的工作人员以及所有与我竞争的选手!非常感谢大家。

重跑(RE-RUN)的第一周已经结束。
我很幸运能够成功完成重跑。
我要感谢管理员和所有参与者组织这次活动。
距离比赛结束还有一个月的时间,但趁我还没忘记,我来描述一下我的解决方案。
(我不太擅长英语,所以我基本上是用DeepL翻译日语的。如果您阅读困难,我深表歉意。)


本次比赛的难点

  1. 目标值每天都会在0到100之间进行缩放。
  2. 投手和击球手可获得的信息存在差异。(投手和击球手的角色有着根本的不同。)

针对上述几点我的处理方法

  • 仅使用赛季中的数据进行训练
    当我检查每日中位数值时,我发现赛季中和休赛期的中位数值存在相当大的差异。
    我认为赛季中的参与度取决于赛季期间的表现和成功,而休赛期的参与度则取决于媒体曝光和社交网络,与赛季表现无关(而且我们不能使用这类数据)。
    在这次比赛中,我们要预测的是赛季期间的参与度,因此我判断休赛期的数据属于噪声,没有将其用于训练和验证。

  • 创建代表当天发生事件和比赛情况的特征
    我认为每日的参与度得分中位数可能会根据当天整体比赛的情况以及其他比赛中发生的事情而有所不同。
    因此,我创建了与全天发生的动作相关的特征。

    • 当天进行的比赛场次、总得分、本垒打、安打等。

    • 每场比赛两队的平均胜率(当天是否有胜率高的球队之间进行的激动人心的比赛)。

    • 参加比赛的球队(主队和客队)的Twitter粉丝总数占所有球队粉丝总数的百分比(比赛是否是在社交网站上受欢迎的球队之间进行的)。

    • 当天参加比赛的球员的Twitter粉丝总数占所有球员粉丝总数的百分比(当天参赛球员在SNS上的影响力如何)。

    • 赛季已经过去了多久(赛程完成了百分之几)?

      除了上述内容外,我还添加了球员的表现。

    • 每日表现

    • 赛季表现

    • 上一赛季表现(上一赛季的最终表现)

  • 构建三个不同的模型
    一个用于投手,一个用于击球手,还有一个针对2021赛季没有比赛的球员。
    每个模型中使用的特征略有不同。
    上述描述的任何给定日期或比赛的特征对于所有模型都是相同的,
    但在投手模型中,球员表现方面唯一使用的特征是与投球相关的表现。在击球手模型中,只使用了与击球相关的表现。
    对于本赛季没有比赛的球员模型,我们没有使用任何与表现相关的特征来构建模型。

    这样做的原因如前所述,是因为投手和击球手的角色截然不同。例如,即使投手打出三支安打,如果他在关键投球中被得分,他的声誉也不会高。
    此外,对于本赛季没有上场的球员,我们根本无法获得他们本赛季的表现,也没有材料来判断他们,因此我们构建了一个特征较少的独立模型。(不使用表现特征)


    作为题外话,我不使用目标滞后特征。
    当我分别测试这三个模型时,使用过去的目标值会降低投手和击球手模型的准确性,因此我决定在这次比赛中不使用与过去目标值相关的变量。

验证方案

对于训练和验证,我使用了每个赛季的数据。
此外,我没有使用2020年的数据,因为比赛场次较少,而且我们认为由于新冠疫情可能会出现异常波动。
所有模型均使用lightgbm制作。

在训练数据更新之前 (LB:1.3104(之前的排行榜))
  • 训练 : 2019/4/1 至 2019/4/30
  • 验证 : 2019/5/1 至 2019/5/30 → 在此期间检查准确性并获取参数
  • 重新训练: 使用上述期间获得的参数在 2021/4/1 至 2021/4/30 的数据上重新训练
在训练数据更新之后

训练数据更新后,我测试了两种情况。
a. 是否能很好地预测上一个常规

同比赛其他方案