【2024美国大学生数学建模竞赛】2024美赛C题网球运动中的势头,网球教练4.0没人比我更懂这个题了!!!

【2023美国大学生数学建模竞赛】2024美赛C题 问题分析、数学模型、实现代码、完整论文

在这里插入图片描述

引言

本人是计算机博士,拥有10年网球球龄,2023年的温网决赛,熬夜到半夜全称观看完了直播,对于网球规则、比赛的数据非常熟悉,这个题应该没有人比我更懂了。我们团队将会陆续更新问题分析、数学模型和实现代码,最后发布完整的论文。
在这里插入图片描述

更新进展:
(1)2024年2月1日22:00发布博客
(2)2024年2月2日6:00发布题目
(3)2024年2月2日7:00发布问题分析

【2024美国大学生数学建模竞赛】2024美赛C题网球运动中的势头,网球教练4.0没人比我更懂这个题了!!!

1 题目

A题:2024MCM问题C:网球运动中的势头

在这里插入图片描述

在2023年温布尔登网球公开赛男子组决赛中,20岁的西班牙新星卡洛斯-阿尔卡拉斯击败了36岁的诺瓦克-德约科维奇。这是德约科维奇自2013年以来首次在温布尔登输掉比赛,也结束了这位大满贯历史上最伟大球员之一的辉煌战绩。

[1]德约科维奇似乎注定会轻松获胜,他在第一盘以6-1的比分占据优势(7局比赛中赢了6局)。然而,第二盘比赛却十分紧张,最终阿尔卡雷斯在决胜盘中以7-6获胜。第三盘与第一盘相反,阿尔卡拉兹以6-1的比分轻松获胜。第四盘开始后,年轻的西班牙人似乎完全控制了局面,但不知何故,比赛的走势再次发生了变化,德约科维奇完全控制了局面,以6-3的比分赢得了这一盘。第五盘也是最后一盘比赛开始后,德约科维奇延续了第四盘的优势,但比赛的走向再次发生了变化,阿尔卡拉斯以6-4取得了胜利。本场比赛的数据在提供的数据集中,“match_id"为"2023-wimbledon-1701”。您可以使用"set_no"列(等于1)查看第一盘德约科维奇占优时的所有得分。似乎占优的一方有时会出现多分甚至多局的惊人波动,这通常归因于"势头"。

在字典中,“势头"的定义是"通过运动或一系列事件获得的力量或作用力。”[2]在体育运动中,一支球队或一名球员可能会觉得他们在比赛中拥有势头或"力量/作用力",但很难衡量这种现象。此外,如果存在"势"的话,比赛中的各种事件是如何产生或改变"势"的,也不是一目了然的。

提供2023年温布尔登网球公开赛前两轮之后所有男子比赛中每一分的数据。您可以自行决定加入其他球员信息或其他数据,但必须完整记录数据来源。使用这些数据

(1)建立一个模型,捕捉赛点发生时的比赛流程,并将其应用到一场或多场比赛中。您的模型应能确定哪位球员在比赛中的某个特定时间段表现更好,以及他们的表现好到什么程度。根据您的模型提供可视化的比赛流程描述。注意:在网球比赛中,发球的一方赢得赛点/比赛的概率要高得多。您可能希望以某种方式将这一因素考虑到您的模型中。

(2)一位网球教练对"势头"在比赛中的作用持怀疑态度。相反,他假设比赛中的波动和一名球员的成功是随机的。请使用您的模型/度量来评估这一说法。

(3)练们很想知道,是否有一些指标可以帮助判断比赛的流程何时会从偏向一名球员变为偏向另一名球员。

(4)利用提供的至少一场比赛的数据,建立一个模型来预测比赛中的这些波动。哪些因素似乎最相关(如果有的话)?

(5)考虑到过去比赛"势头"波动的差异,您如何建议球员在新的比赛中对阵不同的球员?

(6)在一场或多场其他比赛中测试您开发的模型。您对比赛中的波动预测得如何?

如果模型有时表现不佳,您是否能找出未来模型中可能需要包含的任何因素?您的模型对其他比赛(如女子比赛)、锦标赛、球场表面和其他运动(如乒乓球)的通用性如何?

(7)撰写一份不超过25页的报告,介绍您的研究结果,并附上一至两页的备忘录总结您的研究结果,并就"动力"的作用以及如何让球员做好准备,应对网球比赛中影响比赛进程的事件,向教练提出建议。

您的PDF解决方案总页数不超过25页,其中应包括

一页摘要表。

• 目录

• 您的全套解决方案

• 一至两页的备忘录。

• 参考文献列表。

• 人工智能使用报告(如已使用,则不计入25页限制。)

注意:对于提交的完整材料,没有具体的最低页数要求。你可以用最多25页的篇幅来完成所有的解答工作,以及你想包含的任何附加信息(例如:图纸、图表、计算、表格)。我们接受部分解决方案。我们允许谨慎使用人工智能,如ChatGPT,但没有必要为这一问题创建解决方案。如果您选择使用生成式人工智能,则必须遵守COMAP人工智能使用政策。这将导致一份额外的人工智能使用报告,您必须将其添加到PDF解决方案文件的末尾,并且不计入解决方案的25页总页数限制中。

2 提供的文件:

(1)Wimbledon_featured_matches.csv-2023年温布尔登网球赛第二轮之后的男子单打比赛数据集。

(2)data_dictionary.csv-数据集说明。

(3)data_examples-帮助理解所提供数据的示例。

2 问题重述

比赛描述和数据:
  1. 详细描述了2023年温布尔登网球公开赛男子组决赛的比赛情况以及提供的比赛数据。

  2. 解释了"势头"在体育运动中的定义以及难以衡量的问题。

问题:
  1. 建立一个模型,包括:

    • 捕捉赛点发生时的比赛流程的模型。
    • 应用到一场或多场比赛中以确定表现更好的球员,并提供可视化描述。
  2. 对一位怀疑"势头"作用的网球教练的说法,使用模型/度量来评估。

  3. 探讨一些指标,用于判断比赛流程何时会从偏向一名球员变为偏向另一名球员。

  4. 利用提供的比赛数据,建立一个波动预测模型,并确定最相关的因素。

  5. 提出如何建议球员在新的比赛中对阵不同的球员,考虑到过去比赛"势头"波动的差异。

  6. 在一场或多场其他比赛中测试开发的模型,并评估模型的波动预测。

  7. 撰写报告和备忘录,介绍研究结果并向教练提出建议。

3 问题分析

3.1 问题一:捕捉赛点发生时的比赛流程的模型

在这里插入图片描述

2023美网比赛数据

(1)模型思路:这是一个时间序列预测回归问题。将赛点发生时的比赛情况建模为状态转移过程,根据历史比赛数据和技术统计来预测赛点的发生。由于计分的模型是按每一盘、每一局计分的,大满贯的需要打5盘3胜出,每一盘是赢6局,或者6:6时,一局定胜负,这一局是先抢到7分的胜出,如果6:6时,需要再净胜出2分才能赢下这一局。在数据预处理部分,可以将前面的赢下的盘作为一个特征,如果前4盘中已经赢下2盘,则直接预测第三盘是否会出现赛点。并且由于将计分转为一条时间序列的数据,可以将计分数据转换为事件数据,例如记录每一个赛点的发生情况,赛点发生时双方的计分情况,以及赛点赢家等。之后用时间序列回归模型预测即可,以下给出示例代码。

(2) 模型

  • 马尔可夫链模型(Markov Chain Model): 将比赛状态建模为马尔可夫链,推断赛点发生的概率。
    隐马尔可夫模型(Hidden Markov Model): 考虑比赛状态的隐含变量,对赛点的发生进行建模。
  • 逻辑回归模型(Logistic Regression): 根据选手的技术统计特征,预测赛点的可能性。
    生存分析模型(Survival Analysis): 考虑赛点发生的时间,建立生存分析模型来预测赛点的发生。
  • 朴素贝叶斯模型(Naive Bayes): 基于历史数据和技术统计,利用贝叶斯方法预测赛点的发生。

要将网球大满贯中5盘的计分数据转换为一条时间序列的数据,可以将每个赛点的计分情况转换为时间序列中的事件,然后使用这些事件数据来建立时间序列模型,例如隐马尔可夫模型或马尔可夫链模型,来预测赛点的发生。下面是举例理解Python代码:

(3)示例:举例的5盘比赛的计分数据


import pandas as pd

# 假设我们有原始的比分数据,包括每局的比分情况
# 这里的具体每一局的分数,是我瞎编的,需要根据提供的表格计算得出准确值,后续我会更新正确。
score_data = {
    'Set1': ['4-1', '1-4', '4-2', '4-0', '4-0', '4-3', '4-2'],# 第一盘,打了7局,6:1
    'Set2': ['4-1', '1-4', '4-2', '4-0', '4-0', '4-3', '4-2', '1-4', '4-2', '4-0', '4-0', '4-3', '4-2'],# 第二盘,打了13局,7:6
    'Set3': ['4-1', '1-4', '4-2', '4-0', '4-0', '4-3', '4-2'],# 第三盘,打了7局,6:1
    'Set4': ['4-1', '1-4', '4-2', '4-0', '4-0', '4-3', '4-2','4-3', '4-2'],# 第四盘,打了9局,3:6
    'Set5': ['4-3', '4-2','4-1', '1-4', '4-2', '4-0', '4-0', '4-3', '4-2','4-3'] # 第五盘,打了10局,4:6
}

# 转换成时间序列的事件数据
events = []
for set_num in score_data:
    set_scores = score_data[set_num]
    for game_score in set_scores:
        # 分割比分
        player1, player2 = game_score.split('-')
        player1 = int(player1)
        player2 = int(player2)
        # 判断赛点情况
        if player1 >= 4 and player1 - player2 >= 2:
            events.append({'set': set_num, 'game': game_score, 'player': 'Alcaraz', 'event': '赛点'})
        elif player2 >= 4 and player2 - player1 >= 2:
            events.append({'set': set_num, 'game': game_score, 'player': 'Djokovic', 'event': '赛点'})

# 转换为DataFrame
events_df = pd.DataFrame(events)

# 打印事件数据
print(events_df)

上述代码将原始计分数据转换为了赛点事件的时间序列数据。然后可以使用events_df进行时间序列建模,例如应用隐马尔可夫模型:

from hmmlearn import hmm

# 建立隐马尔可夫模型
model = hmm.GaussianHMM(n_components=2, covariance_type="full")
X = events_df[['set', 'game']]  # 选择用于建模的特征
model.fit(X)

# 进行赛点预测
predicted_states = model.predict(X)

# 打印预测结果
print(predicted_states)

3.2 问题二:评估"势头"作用的模型

(1)模型思路:这是一个因子分析问题,通过统计和机器学习方法,评估球员的赛事表现是否受到"势头"的影响,探索势头效应的存在和程度。

(2) 模型

  • 线性回归模型(Linear Regression):分析球员的比赛表现与势头的相关性,探索线性关系。
    时间序列模型(Time Series Model):分析球员的比赛结果时间序列,检测势头效应的存在和影响。
  • 因子分析(Factor Analysis):挖掘比赛数据中的潜在因子,探索势头对表现的影响。
    贝叶斯结构学习(Bayesian Structural Learning):利用贝叶斯方法建立模型,评估势头作用的概率和影响。
  • 强化学习模型(Reinforcement Learning):通过建立马尔可夫决策过程模型来评估势头对球员战术选择的影响。

3.3 问题三: 判断比赛流程转向的指标

(1)模型思路:这是一个分类问题,是球员A赢下的概率大,还是球员B的概率大。建立状态转移模型来判断比赛流程何时转向另一名球员,考虑技术统计和比分变化。

(2) 模型:

  • 隐马尔可夫模型(Hidden Markov Model):考虑比赛状态的隐含变量,判断比赛流程的转向。
    KNN模型(K-Nearest Neighbors):根据历史数据中邻近的比赛情况来判断比赛流程的转向。
  • 决策树模型(Decision Tree):利用技术统计特征来建立决策树模型,判断比赛流程的转向。
    时间序列分析模型(Time Series Analysis):分析比赛数据的时间序列特征,判断比赛流程转向的规律。
  • 支持向量机模型(Support Vector Machine):根据技术统计特征,建立支持向量机模型来判断比赛流程的转向。

3.4 问题四: 建立波动预测模型

(1)模型思路:这是时间序列预测问题,将问题一的数学模型拿来用就行,做一些漂亮的回归分析和可视化。利用比赛数据和技术统计,建立波动预测模型来确定比赛结果的波动,并找出最相关的因素。

(2)模型:

  • 时间序列模型(Time Series Model):建立时间序列预测模型,预测比赛结果的波动。
  • ARIMA模型:利用自回归与移动平均模型,预测比赛结果的波动情况。
  • LSTM模型(Long Short-Term Memory):利用循环神经网络模型来预测比赛结果的波动。
  • 随机森林模型(Random Forest):利用多颗决策树组成的模型来预测比赛结果的波动。
  • 因果推断模型(Causal Inference Model):利用因果推断方法来确定比赛结果波动的因果关系。

3.5 问题五:战术建议

(1)建议思路:这是一个决策问题,通过比较对阵不同对手时的比赛"势头"波动差异,给出针对不同对手的战术建议,简答一点做就是用决策树做,要做复杂点就加入博弈论的思想,方法更高级。

(2)模型

  • 博弈论模型(Game Theory):分析不同对手之间的博弈关系,给出对应的战术建议。
    强化学习模型(Reinforcement Learning):通过与不同对手的交互学习,给出对应的战术建议。
  • 决策树模型(Decision Tree):根据对手的特点建立决策树模型,给出相应的战术建议。
    概率图模型(Probabilistic Graphical Model):利用概率图模型分析不同对手的特点,给出对应的战术建议。

3.6 问题六:模型评估

以上几乎都是回归问题,回归问题的模型评价方法部分举例如下:

  • 交叉验证(Cross-validation):对模型在其他比赛中的表现进行交叉验证,评估模型的波动预测能力。
  • 均方误差(Mean Squared Error):计算模型在其他比赛中的均方误差,评估模型的预测准确性。
  • ROC曲线分析(ROC Curve Analysis):通过绘制ROC曲线,评估模型的波动预测性能。
  • 查准率与召回率(Precision and Recall):计算模型的查准率与召回率,评估模型的波动预测能力。
  • AUC值评估(AUC Value Evaluation):计算模型的AUC值,评估模型的波动预测性能。

):对模型在其他比赛中的表现进行交叉验证,评估模型的波动预测能力。

  • 均方误差(Mean Squared Error):计算模型在其他比赛中的均方误差,评估模型的预测准确性。
  • ROC曲线分析(ROC Curve Analysis):通过绘制ROC曲线,评估模型的波动预测性能。
  • 查准率与召回率(Precision and Recall):计算模型的查准率与召回率,评估模型的波动预测能力。
  • AUC值评估(AUC Value Evaluation):计算模型的AUC值,评估模型的波动预测性能。

4 获取方式

在这里插入图片描述

完整资料,请看评论区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/365033.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(十六)

商家端订单管理模块 1. 订单搜索1.1 需求分析和设计1.2 代码实现1.2.1 admin/OrderController1.2.2 OrderService1.2.3 OrderServiceImpl 2. 各个状态的订单数量统计2.1 需求分析和设计2.2 代码实现2.2.1 admin/OrderController2.2.2 OrderService2.2.3 OrderServiceImpl2.2.4 …

为什么SSL会握手失败?SSL握手失败原因及解决方案

随着网络安全技术的发展,SSL证书作为网站数据安全的第一道防线,被越来越多的企业选择。SSL证书使用的是SSL协议,而SSL握手是SSL协议当中最重要的一部分。当部署SSL证书时,如果服务器和客户端之间无法建立安全连接,就会…

rasa3.X 自定义action的注册问题

rasa3.X 自定义action的注册问题 文章目录 rasa3.X 自定义action的注册问题前言一、问题重述 前言 幸好在这之前抽时间稍微看了一点django源码,让我对于python的导入机制有了一个概念。虽然还不是很确切的知道python import机制,不过在看到类似_import_…

关闭chrome/edge 浏览器打开外部应用程序的弹窗

chrome版本112.0.6167.140 一、本地应用程序用注册表注册一下,浏览器可以调用 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\signal] "signalProtocol" "URL Protocol""signalProtocol"[HKEY_CLASSES_ROOT\signal\Defau…

字符串操作函数2

我们在上次函数中学到了strcpy,strcat,strcmp,并进行了自己的模拟实现。但是这三个库函数它的安全性比较低,因为它们处理的字符串长度不受限制,并且使用它们还需要加上和scanf一样的警告语。为了弥补它们的不安全性。引进了strncpy&#xff0…

(2)(2.11) RFD900

文章目录 前言 1 概述 2 主要功能 3 状态LED指示灯 4 接口 5 使用Mission Planner进行配置 6 支持不同国家/地区 7 讨论论坛 前言 RFD900 无线电调制解调器是一款高功率 900Mhz ISM 波段无线电调制解调器,设计用于远距离串行通信。据报道,其通信…

Leetcode—382. 链表随机节点【中等】(水塘抽样法)

2024每日刷题(一零九) Leetcode—382. 链表随机节点 算法思想 我们可以在初始化时,用一个数组记录链表中的所有元素,这样随机选择链表的一个节点,就变成在数组中随机选择一个元素 实现代码 /*** Definition for si…

防火墙基础

安全技术 入侵检测系统:以提供报警和事后监督为主,不采取措施 入侵防御系统 :透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立…

六、Nacos源码系列:Nacos健康检查

目录 一、简介 二、健康检查流程 2.1、健康检查 2.2、客户端释放连接事件 2.3、客户端断开连接事件 2.4、小结 2.5、总结图 三、服务剔除 一、简介 Nacos作为注册中心不止提供了服务注册和服务发现的功能,还提供了服务可用性检测的功能,在Nacos…

【Vue3+Vite】路由机制router 快速学习 第四期

文章目录 路由简介路由是什么路由的作用 一、路由入门案例1. 创建项目 导入路由依赖2. 准备页面和组件3. 准备路由配置4. main.js引入router配置 二、路由重定向三、编程式路由(useRouter)四、路由传参(useRoute)五、路由守卫总结 路由简介 路由是什么 路由就是根据不同的 URL…

第八篇:node模版引擎Handlebars及他的高级用法(动态参数)

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 📘 引言: &#x1f…

Armv8-M的TrustZone技术之在安全状态和非安全状态之间切换

Armv8-M安全扩展允许在安全和非安全软件之间直接调用。 Armv8-M处理器提供了几条指令来处理状态转换: 下图显示了安全状态转换。 如果入口点的第一条指令是SG且位于非安全可调用内存位置中,则允许从非安全到安全软件的直接API函数调用。 当非安全程序调用安全API时,API通过…

前妻(C#)-基础03-枚举-预处理指令

前妻C#-基础语法03 枚举关于控制台IO及注释C#预处理指令 枚举 枚举是用户定义的整数类型。在声明一个枚举时,要指定改枚举的实例可以包含的一组可接受的值。不仅如此,还可以给值指定易于记忆的名称,如果在代码的某个地方,要试图把…

Java学习day24:线程的同步和锁(例题+知识点详解)

声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!) 往期回顾 Java学习day23:线程构…

ElasticSearch 8.x 使用 snapshot(快照)进行数据迁移

ElasticSearch 1、ElasticSearch学习随笔之基础介绍 2、ElasticSearch学习随笔之简单操作 3、ElasticSearch学习随笔之java api 操作 4、ElasticSearch学习随笔之SpringBoot Starter 操作 5、ElasticSearch学习随笔之嵌套操作 6、ElasticSearch学习随笔之分词算法 7、ElasticS…

儿童护眼台灯怎么选择?一文教你如何选择儿童护眼台灯

护眼台灯是家长最常为孩子购买的用品之一,但是大部分人对它的了解并不多,很多人购买之后反而会觉得眼睛更容易疲劳,有不适的情况!最主要的原因是因为挑选的台灯不够专业,次要原因则是使用方法不正确。所以今天跟大家讲…

BI是什么?

企业SaaS服务2B或者其他2C,数据都会越集越多,丰富的数据可视化展示成为销售及老板们的需求;当然通过如下BI了解 你需要思考是不是只是能做、想做、值得做一个,如果写简单的数据统计,至于用不用的上BI都另说&#xff0…

本地部署GeoServe服务并结合内网穿透实现任意浏览器远程访问

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对要素数据进行更新、删除、插入…

C#学习笔记_类(Class)

类的定义 类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。 语法格式如下: 访问标识符 class 类名 {//变量定义访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;......//方…

【Linux】-多线程的知识都收尾(线程池,封装的线程,单例模式,自旋锁)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …