1. 一眼看穿题目本质:它到底在问什么
2026华数杯ICM的Problem B题目全称是“Who Will Win the Global Competition in Artificial Intelligence?”,中文翻译过来就是“全球人工智能竞争谁会赢”。很多队伍拿到题的第一反应,是去搜各种AI大模型报告、排行榜,想直接找到现成答案。我个人的建议是:先别急。这类“预测谁赢”的题,表面上是一道数据题,真正考的是你如何定义“赢”、如何构造评价指标、如何在充满不确定性的数据里给出一个能自圆其说的结论。
准备数学建模竞赛,尤其是带ICM字样的题,评委更看重的是建模思路和论文逻辑,而不是你最终猜中了哪个国家。哪怕你预测的结果和真实发展完全不同,只要模型合理、分析到位,照样能拿奖。换句话说,这道题的本质不是“占卜”,而是“用数据说话”。这篇文章适合所有正在备赛的学生队伍,也适合想学习综合评价、时间序列预测和情景模拟这类建模方法的同学参考。下面我会把从破题、数据、建模到论文输出的完整流程拆开讲清楚。
1.1 “赢”的定义是最大的坑
题目问“谁会赢”,但这个“赢”字本身就有多种解释。是算力最强算赢,还是论文最多算赢?是产业规模最大算赢,还是人才培养最猛算赢?不同定义下,排名结果可以完全不同。比如一个样本科研产出很强,但人才供给跟不上,按学术指标排第一,按产业落地指标可能只排第三。所以第一步不是急着找数据,而是把“赢”的可操作定义写清楚。
我见过有队伍直接拿单一指标,比如“AI论文总数”,排个序就说谁赢。这种做法的最大问题在于:论文数反映的是过去几年的存量,不能代表未来趋势,更无法反映一个国家的产业转化能力。还有队伍用“算力规模”作为唯一标准,结果排出来以后自己都觉得不靠谱。正确做法是,把“赢”拆成一个多维度的综合竞争力指数,再用这个指数去比较和预测。题目里给的虽然是竞赛场景,但内核就是综合评价问题。
1.2 评委真正想看的四件事
参加华数杯这类赛事,队伍之间的模型水平差距其实没有想象中那么大。真正拉开分数差的,往往是以下四件事。
第一,可解释性。选哪些指标、为什么选这些指标,必须给出逻辑,不能“因为数据好获取就选”。第二,稳健性。换一套权重、换一个年份区间,排名不能剧烈变化,否则结论没有说服力。第三,动态性。题目问的是未来,不能只给一个静态排名,必须有时序预测和趋势判断。第四,结论简洁。评委看完论文,要能立刻知道“预测谁会在未来胜出”,以及“在什么条件下结果会强烈变化”。这几个要素会在后面的建模路线里逐一展开。
2. 数据准备:把AI实力变成可计算的数字
这道题没有直接给定数据集,所以数据工作至少占工作量的一半。AI发展水平不是一个可以直接点击下载的数字,必须把抽象能力转化为多个可量化的指标。数据源的选择要遵循两个原则:公开、可追溯。尽量使用国际组织、知名行业报告或学术数据库发布的数据,并在论文附录里写清数据来源和获取时间。这样评委既容易复现,也会觉得你的工作扎实。
数据准备阶段最容易犯的错,是一上来就把能找到的所有指标堆在一起,然后跑个算法。堆指标的问题在于:冗余度太高,指标之间高度相关,最后模型解释起来一团乱。比如“AI企业数量”和“AI融资总额”大概率正相关,都放进指标体系,等于变相把产业规模这个维度加了两次权重。所以先建框架,再选指标,最后才去找数据。
2.1 指标体系怎么搭才完整
我建议从五个维度来搭这个框架:科研产出、人才储备、产业落地、基础设施、开放生态。每个维度下再选2到3个具体指标。这里列一个可以直接参考的初版框架:
| 维度 | 观测指标示例 | 数据来源方向 |
|---|---|---|
| 科研产出 | 顶级期刊论文数、高被引论文占比、核心论文被引次数 | 公开学术数据库 |
| 人才储备 | AI相关专业毕业生数量、从业人数、顶尖人才数量 | 行业报告、教育统计 |
| 产业落地 | AI企业数量、融资总额、专利授权量 | 投资数据库、专利机构 |
| 基础设施 | 算力规模、数据中心数量、网络带宽水平 | 行业白皮书、基础设施统计 |
| 开放生态 | 国际合作论文数、开源项目参与度、国际会议主办次数 | 学术平台、开源社区 |
为什么用这个框架?因为它覆盖了“从基础到应用再到影响力”的完整链条。算力是燃料,人才是引擎,论文是积累,产业是变现,开放生态是外部环境。少任何一个维度,都会让“赢”的评判失去公信力。
指标选好后,还需要做一个动作:相关性分析。如果两个指标之间的相关系数超过0.85,建议只保留其中一个,或者用主成分分析法降维。这一步能避免后续熵权法权重失真。不要以为指标越多越严谨,指标之间的信息重复才是常见问题。
2.2 数据缺失、滞后与量纲处理
公开数据大概率会缺年份、缺部分样本,这是常态。处理缺失值时,不要直接把整个样本删掉,可以先看缺失比例。如果缺失比例超过20%,建议放弃这个指标;如果只是个别年份空缺,可以用前一年数值填充,或者用相邻两年的均值平滑。更稳妥的办法是从另一个数据源做交叉验证。比如论文数据缺了某一年,可以查同一份机构的其他出版版本。
这里还要特别提一个容易被忽略的点:滞后效应。AI投入不会在当年就体现到全部产出上。今天投进去的算力和人才,可能要两三年后才能反映到论文和产业成果上。所以在建模时,尽量把“投入类指标”(如资金、算力)做滞后处理,比如用当年的基础设施数据去解释两年后的科研产出。这会让整个模型在逻辑上更顺,评委一问“为什么用当年数据预测当年结果”时,你也答得出来。
数据量纲是另一个麻烦。论文数可能是几万,融资额可能是几十亿美元,两者不能直接相加。一般用极差归一化或Z-score标准化,把所有指标压缩到同一量级。我习惯用极差归一化,因为它保留“该样本在所有样本中的相对位置”这一含义,后续解释起来更方便。唯一注意点是,如果有逆向指标,比如“人才流失率”,要先做正向化处理,让所有指标都变成“越大越好”。
3. 建模主线:评价、预测、情景三层递进
光有指标还不够,更高分的关键在于把模型做成一个三层递进的结构:先用综合评价算“当前谁领先”,再用时序预测算“未来各自怎么走”,最后用情景模拟算“有没有可能逆转”。这层结构既回答了“现在谁赢”,也回答了“未来谁赢”,还回答了“凭什么相信你会赢”。
备赛时最容易走的一条弯路,是直接对总排名做时间序列预测。比如算出了今年的综合得分,明年、后年也直接拿这个综合得分去外推。这种做法不够严谨,因为综合得分的指标权重每年可能不同,直接预测一个聚合指标会丢失结构性信息。正确做法是先对底层指标分别预测,再代入评价模型算未来得分。这样还能解释清楚:某个国家明年的排名上升,是因为论文增速快,还是因为算力投入上来了。
3.1 第一层:当前竞争力评价(熵权TOPSIS)
评价模型有很多种,比如层次分析法、CRITIC法、主成分分析、TOPSIS。这道题我比较推荐熵权TOPSIS。理由很简单:层次分析法权重靠专家打分,主观性太强,答辩时容易被挑战;主成分分析虽然降维效果好,但成分含义往往模糊;熵权法则完全基于数据离散程度来定权,数据波动越大,说明信息量越大,权重越高。结合TOPSIS,可以计算每个样本与“最优解”的距离,从而得到综合得分。逻辑很直白:越靠近理想最优方案,竞争力越强。
实操步骤一般是这样:指标正向化与归一化;计算每个指标的熵值和权重;按权重计算加权规范化矩阵;确定正理想解和负理想解;计算各样本到正负理想解的欧氏距离;最后算贴近度作为综合得分。有些队伍还会在熵权基础上人为微调,比如某个维度你特别认为重要,就给一个修正系数,这同样可以,但必须在论文里写明理由。
熵权法有一个要注意的边界情况:某个指标在所有样本上的数值几乎一样,它的熵会接近1,权重接近0。这时候不要直接认为这个指标没用,要回头看一下是不是数据取错口径了,或者样本之间差异确实很小。如果是后者,可以在模型里保留但降低权重;如果是前者,需要重新处理数据。
3.2 第二层:时间序列预测(灰色模型与机器学习对照)
当前得分算完后,下一步是预测未来。样本的时间跨度通常不会太长,可能只有五年到十年的年度数据。这种“小样本、短时序”的场景,灰色预测模型GM(1,1)非常实用。它不要求太多历史数据,对指数型增长趋势的拟合也比较好,正适合AI这样处于快速上升期的领域。但灰色模型的缺点是只适合单调序列,如果某个指标出现明显波折,预测效果就会下降。
另一条路线是用随机森林、XGBoost这类机器学习模型做回归预测。优点是能纳入多个解释变量,比如用过去三年的论文增速、融资增速去预测下一年综合得分。缺点是对历史样本量要求高,数据点太少时很容易过拟合。所以我的建议是:不要只押一种模型。把GM(1,1)、ARIMA和机器学习模型各跑一遍,然后按误差加权组合。用2010到2020年数据训练,用2021到2024年数据做验证,选误差最小的组合方式。预测未来的2026到2030年,就用这个组合模型。这样既稳妥,又能在论文里放一个“模型对比表”展示工作量。
3.3 第三层:情景模拟与“逆转”分析
预测永远有误差,比预测结果更重要的是判断“什么时候结果可能翻转”。我当时做这类题的常用方法,是在预测值上施加随机扰动,做蒙特卡洛模拟。举个例子:假设某样本在基准情景下论文年均增速是8%,那我在情景模拟里让这个增速在5%到11%之间随机波动,跑一千次,统计最终排名为第一的次数占比。这能很自然地回答“谁赢的概率更大”。
情景也可以人为设置成三种。乐观情景:头部样本加速投入,算力和资金增速上调20%。中性情景:维持基准增速。悲观情景:地缘合作受阻,国际交流指标下降。注意这里不要过度解读环境因素,而是把它当作模型参数的变化来讨论。模拟完成后,画一张“夺冠概率分布图”或者“排名变化区间图”,这往往是全篇最抓评委眼球的部分,因为它把不确定性和判断结合起来了。
4. 实操记录:从空表格到答辩全流程
实操阶段最忌讳的是“模型都会,代码全崩”。很多队伍卡在数据处理这一步,最后没时间写论文,分数自然上不去。这一章我会把实操中必经的几个关键动作讲一遍,包括一个可以直接照抄的熵权法计算示例,以及灵敏度分析和排查bug的方法。以下过程基于通用实践,具体数据请根据你找到的数据集替换。
4.1 熵权法权重计算:一个可抄作业的完整示例
假设现在有3个样本,代号分别是S1、S2、S3,选了3个指标:论文产出X1、专利数量X2、人才规模X3。原始数据给成这样:
| 样本 | X1论文 | X2专利 | X3人才 |
|---|---|---|---|
| S1 | 92 | 78 | 85 |
| S2 | 70 | 88 | 90 |
| S3 | 56 | 64 | 60 |
先做极差归一化。以X1为例,最大值是92,最小值是56,那么S1的归一化值为(92-56)/(92-56)=1,S2为0.389,S3为0。用同样方法处理X2和X3,得到归一化矩阵。
接下来计算每个指标的比重矩阵:每个值除以所在列的和。以X1为例,三个样本的归一化值求和是1.389,则S1的比重为1/1.389,约0.72;S2为0.389/1.389,约0.28;S3为0。再按熵值公式 e_j = -1/ln(n) * Σ(p * ln p) 计算各指标熵值。n为3,ln3约1.099。最后通过 w_j = (1 - e_j) / Σ(1 - e_j) 得到权重。这里为了表述清晰,我当时算出的权重大约为:论文权重0.38、专利权重0.33、人才权重0.29。不同数据集结果会不同,但计算流程就是这个。
算完权重后,把加权规范化矩阵代入TOPSIS。S1在论文上最强,S2在专利和人才上稍占优,所以最后结果通常是S1>S2>S3,但差距并没有原始数据看起来那么大。这里还想提醒一个习惯:不要直接展示一个巨大的原始数据矩阵,挑3到5个代表性样本、2到3个核心指标做示例即可,完整数据附在附录。
4.2 灵敏度分析与排名稳定性图
模型搭好之后,评委最常问的一个问题是:“你的权重怎么来的?换一组权重结果还成立吗?”所以灵敏度分析不是可选动作,而是必须做的防守动作。我一般会让每个指标权重在基准值上下浮动20%,做500到1000次随机组合,重新计算所有样本的排名,再统计排名的均值和标准差。如果前三名几乎不变,说明结论很稳健;如果一换权重就大洗牌,就要反思是不是某几个样本得分太接近。
这里给一个我常用的Python模拟思路,稍作修改就能用:
import numpy as np # 假设得分矩阵是 samples x indicators score = np.array([ [92, 78, 85], [70, 88, 90], [56, 64, 60] ]) n_sim = 1000 rank_matrix = [] for _ in range(n_sim): # 在基准权重附近随机扰动 base_w = np.array([0.38, 0.33, 0.29]) noise = np.random.uniform(0.8, 1.2, size=base_w.shape) w = base_w * noise w = w / w.sum() weighted = score * w total = weighted.sum(axis=1) rank = total.argsort()[::-1] rank_matrix.append(rank) rank_matrix = np.array(rank_matrix) # 统计每个样本排第一名的次数 first_place_count = (rank_matrix == 0).sum(axis=0) print("夺冠次数占比:", first_place_count / n_sim)跑完模拟后,我会画两张图:一张是排名的频数柱状图,另一张是箱线图展示每个样本综合得分的分布。这样就能直观看到哪些样本排名稳定,哪些样本存在“逆袭”可能。这一小节的内容放到论文里,说服力会大幅提升。
4.3 常见bug与排查思路
建模过程中会遇到很多让人想摔键盘的问题。我把常见问题整理成一张速查表,方便你对号入座:
| 现象 | 可能原因 | 排查思路 |
|---|---|---|
| 熵权法某个指标权重接近0 | 该指标在样本间方差太小 | 检查数据是否取错口径,或者替换为区分度更高的指标 |
| 灰色预测出现负值 | 原始数据有负数或剧烈波动 | 把原始数列做平移变换,或在模型前先做平滑 |
| 预测未来几年后排名完全不变 | 权重设置太均匀,指标增长速率接近 | 增加情景模拟,对关键指标增长率做差异化扰动 |
| 灵敏度分析排名剧烈变化 | 头部样本综合得分差值过小 | 重新考虑指标筛选,或改用主效应更大的指标 |
| 数据年份混乱,无法构建时序 | 不同指标来源年份范围不一致 | 统一以“自然年”为基准,缺年份做交叉验证填充 |
| 模型精度过高,误差几乎为0 | 可能信息泄漏,比如用未来数据训练 | 严格按时间切分训练集和验证集,不能用全样本训练后回验 |
排查这些问题时,我最大的心得是:先用一个小样本把链路跑通,再加数据。不要一上来就追求全量数据建模。先拿5个样本、3个指标跑完一遍,确认每步代码输出符合预期,再扩展到全量。这样能节省大量调试时间,避免“数据一大堆,报错一脸懵”的窘境。
5. 论文写作与最后一公里
到这里,模型已经跑完,图表也画得差不多了,但分数还没落袋。数学建模竞赛最终比拼的是论文表达。同一个模型,有的队伍写出来像技术报告,有的队伍写出来像科研论文,得分差距就在这一层。论文写作不需要多么华丽,但要做到“逻辑闭环、重点突出、可复现”。
正式动笔前,先把所有图表、核心结论、模型假设列在一张草稿纸上。论文要围绕题目要回答的问题组织,不要按“我做了A、我做了B”的顺序流水账。按问题组织是按“先定义赢、再评价现状、再预测未来、再检验稳健性”的逻辑展开,这样读起来节奏很顺。
5.1 摘要和关键词:给评委的第一印象
摘要大约占了评委第一印象的百分之八十。千万不要在摘要里堆砌“本文运用了层次分析法、熵权法、TOPSIS、灰色预测……”这类罗列。好的摘要应该四句话讲完:第一句亮明“要解决什么问题”,第二句指出“用什么思路和数据”,第三句给出“最核心的定量结论”,第四句说明“结果经过哪些检验”。如果你想写得更扎实,再加一句“模型在未来拓展中的应用价值”。
关键词选择也不要全堆模型名。可以用“人工智能竞争力评价”、“动态预测”、“情景模拟”、“排名稳健性”这类能反映问题核心的词。这样搜索引擎和评委都能快速定位你的研究重点。很多队伍把“熵权法”、“TOPSIS”当关键词,不是不行,但这只是工具,不是问题本身。
5.2 模型检验表格的写法
评委非常喜欢看到对比和检验,因为这是“科学态度”的体现。不要只在文字里说自己模型好,要放对比表格。比如将三种预测模型在同一段历史数据上的误差进行比较:
| 模型 | 平均绝对百分比误差 | 对2026年预测值 | 优点 |
|---|---|---|---|
| 灰色模型 GM(1,1) | 3.2% | 78.4 | 适合短样本、趋势稳定 |
| ARIMA | 4.1% | 77.9 | 能处理波动,但需要更长历史 |
| 随机森林回归 | 5.5% | 80.1 | 特征灵活,但小样本易过拟合 |
| 组合预测 | 2.8% | 78.8 | 综合三类模型优势,误差最小 |
这张表放上去,评审老师能一眼看到“为什么最后选了组合模型”。同样的逻辑也适用于权重验证。把灵敏度分析后的排名变化情况整理成一张“不同权重情景下的前五名排名表”,比在正文里写一百句“模型稳健”都有用。
5.3 我的三条避坑心得
第一条,不要为了预测精确牺牲解释性。有的队伍用深度神经网络,跑出来精度很高,但评委问“为什么这个样本排名上升”,队伍支支吾吾答不上来。宁可模型简单一点,也要保证每个变化都能讲清楚原因。
第二条,别忽略“2026”这个时间坐标。题目直接点明了年份,说明它要的是面向未来的判断,而不是历史回顾。所以论文结论必须落到“截至2030年的趋势判断”上,至少要讨论“3到5年后谁赢面更大”。很多队伍把所有精力放在历史数据拟合上,最后忘了讨论未来,这是方向性错误。
第三条,团队分工要前置。我见过不少队伍临近提交时才发现论文没人写,代码和文字对不上。建议从第一天就确定“数据组”、“建模组”、“写作组”,写作组从第二天开始跟进度写框架,不要把写论文压缩到最后几小时。文档同步用在线协作文档,截图和数据表格实时更新,这样能减少大量重复沟通。
最后再分享一个小技巧:提交前一定要有一份“给决策者的一页摘要”,把核心结论、关键数据、置信程度浓缩在一页内。这在答辩和评委快速翻阅时非常加分。哪怕竞赛没有现场答辩,一页摘要也能让评审在几十份论文里更快记住你的工作。真正亲测有效的做法是,等论文写完后,让一个不懂建模的同学花三分钟读这页摘要,如果他读懂了,你的论文就成功了大半。