2024美国大学生数学建模竞赛C题保姆级分析完整思路代码数据教学
C题 Momentum in Tennis 网球中的动量
在2023年温布尔登男单决赛中,20岁的西班牙新星卡洛斯·阿尔卡拉兹击败了36岁的诺瓦克·德约科维奇。这是德约科维奇自2013年以来在温布尔登的首次失利,也终结了这位大满贯史上最伟大球员之一的辉煌战绩。
这场比赛本身就是一场非凡的战斗。[1]德约科维奇似乎注定要轻松获胜,因为他以6比1的比分控制了第一局(7局中赢了6局)。然而第二局气氛紧张,最终阿尔卡雷斯在抢七局中以7 -6获胜。第三局与第一局相反,阿尔卡拉兹以6 -1轻松获胜。这位年轻的西班牙人在第四盘开始时似乎完全控制了比赛,但不知何故,比赛再次改变了方向,德约科维奇完全控制了比赛,以6比3赢得了比赛。第五盘也是最后一盘,德约科维奇从第四盘开始保持优势,但再次改变方向,阿尔卡拉兹控制局面,以6 -4获胜。本场比赛数据在提供的数据集中,“2023-温布尔登-1701”的“match_id”。你可以看到德约科维奇在第一盘领先时的所有得分,使用“set_no”列等于1。出现在看似有优势的球员身上的不可思议的挥拍,有时是多分甚至多局,往往被归结为“冲劲”。
字典上对动量的一个定义是“通过运动或一系列事件获得的力量或力量”。[2]在体育运动中,一支球队或一名球员可能会在比赛/比赛中感觉到他们有动量,或“力量/力量”,但这种现象很难测量。此外,如果动量存在的话,比赛中的各种事件是如何产生或改变动量的,这一点也不容易弄清楚。
背景分析: 2024 MCM的C题,即“网球的动量”,本赛题需要探讨一个网球比赛过程中动量变化的模型,并通过该模型对比赛结果进行预测。
背景中提到,在2023年温布尔登男单决赛中,发生了一场颇为激烈的对决,其中20岁的西班牙新星卡洛斯·阿尔卡拉兹击败了36岁的诺瓦克·德约科维奇。尽管在开场阶段德约科维奇占据了上风,但随着比赛的进行,阿尔卡拉兹逐渐扭转了局面,最终以6-4获胜。
针对动量的影响,部分教练和球员持有怀疑态度,他们认为比赛的胜负更多地取决于球员的表现而非动量的变化。因此,本题需要利用数据与数学建模来校验这一观点,并从中得出可供参考的结论。
要注意一点 由于时间关系,这个文章/视频可能并不能对完整的后面给出的数据集进行分析,只会针对性进行部分分析,需要完整分析的同学看视频简介。后续会更新
2023年温布尔登男单前两轮之后的每一分数据。您可以自行选择加入额外的球员信息或其他数据,但您必须完整地记录来源。使用这些数据:
•开发一个模型,捕捉得分发生时的比赛流程,并将其应用于一场或多场比赛。你的模型应该识别出哪位球员在比赛的特定时间表现得更好,以及他们的表现有多好。基于你的模型提供一个可视化来描述比赛流程。注意:在网球比赛中,发球的选手赢得分/局的概率要高得多。你可能希望以某种方式把这个因素考虑到你的模型中。
问题一分析:针对问题一,主要要求我们开发一个模型,捕捉得分发生时的比赛流程,并将其应用于一场或多场比赛。此模型应能识别哪位球员在特定时间表现得更好,以及他们表现有何优劣。此外,还需要提供一个基于模型的可视化来描述比赛流程。根据问题描述,这个问题可以被解构为以下几个步骤:
1 数据处理:从给定数据中提取出关于每盘比赛的数据,包括每局中的得分、发球方等信息。
2特征选择:确定影响比赛流程的关键因素,例如球员的身体状况、技术水平、心理状况、比赛场地、气候条件等。
3模型建立:运用合适的算法,构建反映比赛流程的模型。可能的算法选项包括回归分析、决策树、随机森林、支持向量机(SVM)、深度学习等。
4 模型训练与调优:使用训练数据集对模型进行训练,并通过交叉验证等方法进行模型调优。
5 模型评估:通过预留的测试数据集,评估模型的性能,如预测准确度、精确度和召回率等。
6 结果可视化:采用适当的图形(如折线图、柱状图等)反映比赛流程,并对结果进行解释。
其中,在各个球员的表现量化中,可以使用评价类算法,这里我推荐灰色综合评价法、模糊综合评价法。要注意的是 需要首先对数据集进行完整分析后,再开始进入本题的正式模型建立与求解。在数据集分析中,大家需要注意以下问题:
这里推荐的算法为拟合类算法和评价类算法。拟合类推荐:
最小二乘法(Least Squares Method):通过最小化观测值与拟合曲线之间的差距来进行拟合,适用于线性和非线性问题。
多项式拟合(Polynomial Fitting):将数据拟合为一个多项式函数,可以通过最小二乘法或牛顿插值法等方法实现。
线性回归(Linear Regression):通过拟合一个线性模型来描述观测值与预测变量之间的关系,可以使用最小二乘法来求解模型参数。
非线性回归(Nonlinear Regression):通过拟合一个非线性模型来描述观测值与预测变量之间的关系,通常需要使用迭代优化算法进行求解,如Levenberg-Marquardt算法。
曲线拟合(Curve Fitting):将数据拟合为一条曲线,可以使用多种拟合函数,如指数函数、对数函数、幂函数等。
插值法(Interpolation):通过已知数据点之间的插值来估计未知数据点的值,常见的插值方法有拉格朗日插值、牛顿插值、样条插值等。
核函数回归(Kernel Regression):通过使用核函数对数据进行加权平滑处理,来实现对非线性关系的拟合。
非参数回归(Nonparametric Regression):不依赖于事先设定的函数形式,而是根据数据的分布进行拟合,常见的方法有局部加权回归、核密度估计等。评价类算法,比如灰色综合评价法、模糊综合评价法对各个指标建立联系。
第一问前大家需要对数据进行分析和数值化处理,也就是EDA(探索性数据分析)。对于数值型数据,大家用归一化、去除异常值等方式就可以进行数据预处理。而对于非数值型数据进行量化,大家可以使用以下方法:
1标签编码
标签编码是将一组可能的取值转换成整数,从而对非数值型数据进行量化的一种方法。例如,在机器学习领域中,对于一个具有多个类别的变量,我们可以给每个类别赋予一个唯一的整数值,这样就可以将其转换为数值型数据。
2独热编码onehot
独热编码是将多个可能的取值转换成二进制数组的一种方法。在独热编码中,每个可能取值对应一个长度为总共可能取值个数的二进制数组,其中只有一个元素为1,其余元素均为0。例如,对于一个性别变量,可以采用独热编码将“男”和“女”分别转换为[1, 0]和[0, 1]。
3分类计数
分类计数是将非数值型数据转换为数值型数据的一种简单方法。在分类计数中,我们根据某些特定属性(比如学历、职业等)来对数据进行分类,然后统计每个类别的数量或频率。例如,在调查问卷中,我们可以对某个问题的回答按照“是”、“否”和“不确定”三个类别进行分类,并计算每个类别的数量或频率。
4主成分分析
主成分分析是将多维数据转换为低维度表示的一种方法。在主成分分析中,我们通过找到最能解释数据变异的主成分来对原始数据进行降维处理。这样就可以将非数值型数据转换为数值型数据。
而第一问建议大家使用一些可视化方法,可以使用常见的EDA可视化方法:
l 直方图和密度图:展示数值变量的分布情况。
l 散点图:展示两个连续变量之间的关系。
l 箱线图:展示数值变量的分布情况和异常值。
l 条形图和饼图:展示分类变量的分布情况。
l 折线图:展示随时间或顺序变化的趋势。
l 热力图:展示不同变量之间的相关性。
l 散点矩阵图:展示多个变量之间的散点图矩阵。
l 地理图:展示地理位置数据和空间分布信息。
除此之外,还可以引入一些评价类的指标,比如:
1 准确率(Accuracy): 主要用于分类模型,它被定义为正确预测的数量除以总预测的数量。
2 精确度(Precision)和召回率(Recall): 精确度表示预测为正例的样本中真正为正例的比例,召回率表示真正的正例中被预测为正例的比例。
3 F1得分: 是精确度和召回率的调和均值,可以更全面地评价模型的性能。
4 ROC曲线与AUC值: ROC曲线下面积(AUC)可以用来评价模型对于正负样本的区分能力。
5 混淆矩阵(Confusion Matrix): 通过显示TP、TN、FP、FN四个数值,可以直观反映模型判断结果的情况。
6 KS值 (Kolmogorov-Smirnov): KS值能够衡量模型对于正负样本的分辨能力。
对于后半问需要可视化,这里可以使用:
1 时间序列图: 可以展示每个球员在比赛过程中得分的变化情况。横坐标为时间(或者按照比赛的顺序),纵坐标为得分,然后分别根据两位球员的得分绘制线条。
2 堆叠柱状图或者面积图: 可以用来表示每个球员在特定时间段内的得分占比,有助于观察比赛的"动量"转换。
3 热力图: 如果我们希望展示比赛中某些特地因素如发球成功率、接球成功率等与得失分的关系,可能会选择热力图。
4 动态图表: 如果我们想要更直观地展示比赛的变化和动态,可以利用软件生成动态图表。
可以用Python的matplotlib、seaborn等库,或者R语言的ggplot2进行绘制。如果需要交互性更强的可视化,也可以考虑使用Tableau或者D3.js等工具。这里建议使用Tableau是一个很好用的BI(商业智能可视化)工具
•一位网球教练对“动量”在比赛中起作用持怀疑态度。相反,他认为一个球员在比赛中的摇摆和成功是随机的。用你的模型/指标来评估这一说法。
问题二分析:问题二的主要目标是对网球比赛中“动量”的存在进行探讨。这位网球教练认为,一个球员在比赛中的起伏和成功是随机的,而不是由所谓的“动量”决定的。我们需要使用数据和模型来评估这一说法。这道题目明显是要用数据或者你的模型来证明这位网球教练是错误的,那很简单,我建议在单个比赛中的时间维度上确定不随机和多场比赛中确定不随机来说明。具体地说,可以使用的算法是相关性分析,这里选择合适的变量来进行相关性分析或者因子分析是重要的,当然,因为是时间尺度上的问题,也可以使用隐马尔科夫模型或者循环神经网络。下面我们先确定本题思路,再针对相关性分析来做详细拆解
1 理解问题与数据:首先我们需要理解“动量”在这里是如何定义的,然后理解数据集的结构和内容。可能需要对相关的网球规则和计分方法有所了解。
2 选择或构建模型:根据问题的需求和数据的性质,选择或构建适合的模型。这可能涉及到时间序列分析、随机过程(例如马尔可夫链)等算法。如果我们假设比赛中的每一分都是独立的,那么可以使用一些基于独立同分布假设的模型;如果我们认为比赛中的分数之间存在依赖关系,那么可能需要使用一些能够处理序列数据的模型,如隐马尔科夫模型或者循环神经网络。
3 模型训练与评估:根据选定的模型,使用提供的数据进行模型的训练,并根据一些预先设定的指标来评估模型的性能。
4 结果解释与应用:最后,我们需要解释模型的结果,以及如何根据模型的结果来回答这个问题。此外,我们还需要考虑这个模型在实际中的应用,例如如何用这个模型来指导训练和比赛的策略。
相关性分析的做法:
1 得分与比赛结果的关系:了解得分如何随时间变化以及这与比赛结果之间的关系。
2 发球方与得分的关系:在网球比赛中,发球方赢得分数/局的概率要大得多,因此我们需要分析发球方和得分之间的关系。
3 “动量”与比赛结果的关系:问题中提到的“动量”,可能可以通过某些指标来衡量(比如连续得分、一个玩家连续赢得多少分等)。我们需要研究这种"动量"和比赛结果之间的关系。
为了进行这些相关性分析,我们可以使用统计方法(例如皮尔森相关系数或斯皮尔曼秩相关系数)或者可视化工具(例如散点图、线图等)。还可以画热力图
但要注意,相关性并不意味着因果关系。尽管我们可能会发现两个变量之间存在强烈的相关性,但这并不能证明其中一个变量就是另一个变量的原因。在这个题目中,即使我们找到了发球方、得分和“动量”与比赛结果之间的相关性,也不能确定它们就是影响比赛结果的唯一因素。可能还有其他未考虑到的因素,如球员的体能、技术、心理状态等。所以需要在选择变量上多花心思来做。
•教练们很想知道是否有一些指标可以帮助确定何时
比赛流程即将从有利于一名球员转变为另一名球员。
o使用至少一场比赛提供的数据,开发一个模型来预测比赛中的这些波动。哪些因素似乎最相关(如果有的话)?
o考虑到过去比赛中“动量”波动的差异,你如何建议一名球员进入一场与不同球员的新比赛?
•在一场或多场其他比赛中测试你开发的模型。你对比赛中挥杆的预测有多好?如果模型有时表现不佳,你能识别出任何可能需要纳入未来模型的因素吗?你的模型对其他比赛(如女子比赛)、锦标赛、球场表面和其他运动(如乒乓球)的泛化程度如何?
•用你的发现制作一份不超过25页的报告,并包括一到两页的备忘录,总结你的结果,并就“势头”的作用向教练提出建议,以及如何让球员准备好应对影响网球比赛过程的事件。
关于3、4问的解析及更多思路代码论文 看文末文章
总页数不超过25页的PDF解决方案应包括:•一页总结表。
•目录表。
•完整的解决方案。
•一到两页的备忘录。
•参考书目。
•AI使用报告(如果使用,不计入25页的限制)
其中更详细的思路,各题目思路、代码、讲解视频、成品论文及其他相关内容,可以点击下方群名片哦!