先说个真实感受:当 2024 年那道数学建模竞赛 C 题把“网球比赛中的势头”摆在大家面前时,很多队伍的第一反应不是兴奋,而是愣住。势头这个词,听着像解说员嘴里的玄学,像体育心理学论文里的黑话,怎么看都跟“可计算、可验证”的数学建模不搭边。尤其当我看到不少队伍还在用简单的“连续得分次数”去代表势头时,我意识到这道题真正难的地方不是算法,而是怎么把一个模糊的运动现象翻译成严谨的建模问题。
这篇内容就是围绕“AI 版论文”的思路来拆解这道 C 题。我会从势头定义、数据与特征工程、AI 建模选型、验证评估、论文呈现几个维度,完整复盘一套可复现、能拿高分的解法。无论你是刚接触数模的新手,还是想在 C 题里做出点差异化亮点、用机器学习/AI 方法拿成绩的参赛者,这篇都值得认真读完。
1. 这道 C 题到底在挖什么:势头为何难量化
1.1 先给“势头”下一个可操作的定义
势头(momentum)在体育科学里早有讨论,文献上管它叫“心理动量”,大意是运动员在一段时间内表现出的持续优势状态。但建模不能接受这种描述性定义,你没法建模一个“说不清、道不明”的东西。我的做法是先把势头拆成可观测的代理指标:
- 短期赛事结果:连续得分、连续保发、破发成功率
- 过程性指标:制胜分比例、非受迫性失误率、一发得分率
- 情境变量:局分、盘分、是否处于破发点/局点、发球权归属
但直接把这些指标拼起来也不行。网球比赛里,球员 A 连赢 5 分可能是因为状态爆棚,也可能只是因为他发球而对手接发球太弱。如果不把球员实力差和发球权剥离掉,你算出来的“势头”其实混入了真实水平差异,这是很多队伍后续模型失效的第一大原因。
所以我建议把势头定义为:在控制双方基础实力和发球权之后,运动员当前状态相对其正常水平的短期偏离量。换句话说,势头不是一个绝对指标,而是一个残差指标。这跟金融里“超额收益”的思路很像——剥离市场整体涨跌,纯粹看个股自身的超额表现。
1.2 比分结构自带时间序列特征,不能当普通回归做
很多人拿到网球逐分数据后,第一反应是把每一分当成一条独立样本,扔进 Logistic 回归或决策树完事。这个坑我踩过,后果就是模型在训练集上 AUC 能到 0.85,但一到实际预测下一分就崩,因为样本之间根本不是独立的。
网球比分结构是典型的层级时间序列:分构成局,局构成盘,盘构成比赛。某一分的发生概率会受到此前若干分、若干局甚至上一盘结果的影响。更麻烦的是,这些事件之间还存在强自相关:球员刚赢下一个破发点,可能士气大振,下一局保发概率也会上升。这种序列效应如果你不用时间结构去建模,就会把短期的真实信号当成噪声,或者反过来把噪声当成信号。
所以我在处理这道题时,放弃了一开始“把所有逐分样本打乱”的做法,改用滚动窗口构造特征,并在验证时严格按比赛时间顺序划分数据集。模型可以简单,但数据的时间结构必须保留,这是 AI 方法在这道题里能不能出效果的前提。
1.3 传统统计方法与 AI 方法的切入点差异
传统统计解法可以走状态空间模型或者隐马尔可夫模型,先假设球员存在“火热/普通/低迷”几种潜在状态,再用逐分数据去估计状态转移概率。这种方法解释性强,论文也好写,但它的致命弱点是对特征利用不充分——你很难把“这分是 ace 还是双误”“刚刚那局打了多久”这些丰富信息很好地塞进传统状态模型里。
AI 方法的优势正好在这里。你可以把逐分数据变成高维特征序列,利用树模型做非线性映射,甚至用 LSTM/Transformer 去自动捕捉长距离依赖。但 AI 方法有个竞赛场景下的问题:评委可能看不懂、不接受。所以我的策略从来不是“无脑上深度模型”,而是让传统模型做骨架,让 AI 模型做增量预测和特征发现,论文里既有清晰的机理链,又有漂亮的预测效果,两头都占。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据准备与特征工程:从逐分数据里提取动量
2.1 开源数据源怎么选:point-by-point 字段能告诉我们什么
公开可用的网球数据源里,我首推 Jeff Sackmann 维护的 tennis_atp 系列数据集,它包含 ATP/WTA 从 1991 年至今的赛事元数据、逐分数据(point-by-point)和逐局数据。逐分数据是建模势头的主战场,它通常包含:
- 比赛标识、年份、赛事级别
- 两名球员的 ID 和姓名
- 逐分的发球者、比分序列
- 该分结束类型(Ace、双误、制胜分、受迫/非受迫失误、网前得分等)
- 局分、盘分
- 发球局归属
这份数据不是所有比赛都有逐分记录,早年大满贯和近几年的部分大师赛覆盖较好。建模前我建议先统计一下每个赛事、每个年份的逐分覆盖率,别一上来就跑全量,不然因为大量缺失比赛导致样本选择偏差,后面模型效果和结论都容易翻车。
2.2 清理与对齐:最大的坑其实是球员标识和发球权
拿
