每年研赛开场前,我微信里的数学建模群都会在赛题公布后的第一个晚上进入集体焦虑峰值:六道题摆在眼前,每一道看起来都能做,每一道又都好像哪里不对。队伍内部开始分派系,有人坚持选跟本科专业相关的,有人只看哪个模型自己会,有人干脆说随便选个顺眼的。我参加过不止一届研赛,也帮学校做过赛前选拔和评审,深知这个晚上作出的决定,往往比之后几十个小时的肝题更能决定最终名次。研赛真正的胜负手,在正文开始之前就已经埋下了。你选哪道题、用什么标准选、前48小时怎么把题分析透,基本锁定了后面三天的走向。
这篇内容不是某个具体赛题的答案,而是更值钱的“选题决策方法论”:从华为杯研赛的题目气质讲起,到队伍能力画像、题型匹配、初步分析的操作流程,再到我复盘过的翻车案例。无论你是第一次参赛的新手,还是已经冲过奖的老油条,都建议在赛题公布前把这篇过一遍,至少能帮你少走一晚上的弯路。
1. 为什么说“选对题”比“会做题”更重要
1.1 先看研赛的获奖结构,再谈选题
研究生数学建模竞赛和本科生国赛的最大区别,不是题目难了多少,而是参赛者的平均水平高了一大截。研赛队伍里,数学功底好的、编程能力强的、甚至已经发过论文的队伍都不少。你面对的不再是“谁把模型做出来了”,而是“谁在有限时间内把整套东西做得最完整、最有辨识度”。
从奖项比例看,一等奖的比例通常很低,二等奖和三等奖覆盖面稍大,但每年总参赛队伍基数摆在那里。换句话说,只要你能把一道题从数据读入到论文输出完整跑通,拿到三等奖的概率并不低;真正拉开差距的是冲二等奖和一等奖的那批人。而到了这个段位,选题的差异化就是隐形的杠杆。评委每天要面对大量内容相近的论文,如果你的题目和一半的人一样,方法也无非是那几种,即便做得规整,也很难让评委眼前一亮。
这就像一场考试,大家答同一张卷子,你的目标不是把某道难题做满分,而是保证整张卷子的综合得分排名。选题选得准,是把精力投向最容易出分的象限;选错了,就是在一道性价比很低的题上猛投入,最后只能靠情怀撑下去。
1.2 我见到的三种典型选题失误
过去几年我给校内队伍做过很多次赛前把关,也帮朋友远程看过选题。导致队伍翻车的选题失误,翻来覆去就是这三类。
第一种,凭专业背景拍脑袋。学过环境工程就觉得环境类题目稳了,学过金融就觉得金融数据题是好选题,结果题目里的专业名词只是砖,真正的难点在数据处理和模型适配。你本科那点背景知识在研赛题目里大概率只够撑到第一问。
第二种,被“看起来简单”骗上车。题目描述短、要求少、附件似乎也没几个,就认为是送分题。但这类题往往隐藏着巨大的开放性:要么需要你自己构建评价体系,要么数据清洗的复杂度远超想象,要么最后要求做的事情比表面问题多出几倍。简单是最贵的错觉。
第三种,队伍内耗在选题上。一个队三个人各执己见,从第一晚吵到第二天中午,最后随便选一个相对没人反对的,结果谁都没有热情往下做,论文质量自然不如那些一致看好的队伍。选题不只是技术判断,也是团队共识建设,选完题之后所有人能不能心齐,和题本身一样重要。
2. 华为杯赛题的“脾气”:三类题型与发力点
2.1 数据驱动型:门槛低,但容易变成堆模型的比赛
数据驱动型题目是研赛常客。通常表现形式为:给你若干张甚至几十张数据表,问题是预测、分类、聚类、关联分析,或者让你找出某些结构规律。这类题目最友好的一点是目标明确——有数据就有抓手,哪怕模型做得浅,也可以靠数据分析和可视化撑起论文篇幅。
但它的问题同样明显:参与门槛低,意味着竞争高度拥挤。你背过的机器学习模型别人也背过,你想到的特征别人也能想到,最后比的是谁把数据处理得更细、把模型验证做得更严谨、把结果解释得更到位。换句话说,这类题打的是工程完整度,不是一个灵感能救场的。如果你队伍里有人特别擅长数据清洗、特征工程和代码调试,选这类题会很有优势;如果三个人都不太碰数据,纯靠临时抱佛脚,很容易被附件的预处理工作拖死。
2.2 机理驱动型:理论红利与翻车风险并存
机理驱动型题目的典型特征是,题目里没有现成数据集,或者数据只用来辅助验证。题目给出一段物理、工程或系统的背景,让你从基本原理出发,建立方程或模型,再求解、分析、验证。比如流体、结构、电磁、动力系统、通信调度这类背景都可能出现。
这类题对数学物理功底差的队伍很不友好,因为一旦核心机理理解偏了,整个模型体系就是空中楼阁。但如果队伍里有人能把机理吃透,理论推导的部分本身就构成了天然的护城河。而且机理题因为门槛高,竞争对手相对少,一篇推导扎实、逻辑闭环的论文,在评奖时很容易被归入“少数派”而获得额外关注。
风险也很具体:出题人藏坑的地方往往在边界条件、简化假设和参数确定上。很多队伍辛辛苦苦写了两天方程,第三天发现核心积分不收敛、参数无法标定,只好把论文改成文献综述型,分数自然难看。选择机理题之前,你必须判断一个事:队伍里有没有人愿意、且有能力在第一天就把核心方程推到底。
2.3 混合型:最考验综合能力,也最容易“四不像”
混合型题目是数据驱动和机理驱动的结合,也是最近几年研赛里越来越常见的形态。大体是给出一个工程过程的背景,让你先做机理建模,再用一批实测数据去校准或验证模型,最后做预测或优化。这类题面的信息量往往最大,问题设置也最贴近真实科研和工程项目。
混合型做好了非常出彩,因为它同时展示了队伍的理论推导、代码实现和数据分析能力,论文层次感很强。但做砸的概率同样高:机理部分写不透,数据部分又只是套了几个函数,两段之间根本没有逻辑联系,评委一眼就能看出是拼凑。选混合题,对队伍的木桶效应最敏感——三个人里只要有一个明显短板,整篇论文就会在某个环节塌下去。我的建议是,混合题留给综合实力确实均衡的队伍,新手队伍慎碰。
2.4 用一张表快速对照
我习惯把三类题型放在同一张表里横向对比,帮队伍快速建立初步偏好。
| 维度 | 数据驱动型 | 机理驱动型 | 混合型 |
|---|---|---|---|
| 题目数量占比 | 高 | 中等 | 逐年增加 |
| 入门门槛 | 低 | 高 | 中高 |
| 数据处理压力 | 大 | 小 | 中 |
| 理论推导要求 | 低 | 很高 | 中高 |
| 差异化空间 | 靠工程精细度 | 靠理论深度 | 靠二者结合 |
| 主要翻车点 | 预处理耗时、模型堆叠 | 机理错判、求解困难 | 两段脱离、四不像 |
| 推荐队伍 | 算法工程型 | 理论推手型 | 全能均衡型 |
这张表解决的是“倾向”问题,不解决“决定”问题。真正的决定,必须建立在你对某道题的具体细节分析之上,这就是后面几章要讲的初步分析。
3. 用排除法锁定候选:队伍能力画像与选题匹配
3.1 做选题判断前,先给队伍做一次能力自测
我见过不少队伍在看题之前完全不做内部摸底,直到开始干活才发现“原来我们三个都没怎么用过pandas”“原来只有一个人会写LaTeX”。这个摸底应该在赛题公布前就完成,不需要多复杂,答几个问题就够:
- 队伍里有多少人能独立完成从数据读取到模型结果导出的完整流程?
- 遇到模型调不通时,队伍里有没有人能快速定位是代码问题、数据问题还是数学问题?
- 论文主笔是谁?他最擅长写“推导型”论文还是“实验型”论文?
- 三个人过去是否合作过?分工是否明确?
诚实做完这份自测,再去看赛题,思路会清晰很多。怕的不是能力弱,怕的是明明弱还选了一道恰好命中弱点的题。
3.2 三种典型队伍画像与适配题段
根据多年观察,研赛队伍大致可以归成三类。
算法工程队。三个人配合默契,代码能力突出,模型知识以机器学习为主,数学公式储备一般。这类队伍选数据驱动型题目是顺风局:把特征工程做扎实,多模型对比、调参、可视化,论文用实验结果撑起厚度,上限很高。如果非要挑战机理题,很可能在方程推导阶段就消耗掉所有体力。
理论推手队。数理基础扎实,擅长推导公式,但代码习惯一般,对大规模数据的处理缺乏耐心。这类队伍更适合机理驱动型题目,发挥理论优势,把模型假设、推导过程写得滴水不漏。如果选数据题,反而容易被各种预处理细节消磨掉优势。
全能均衡队。建模、编程、写作三块都有人顶得住,且能快速切换角色。这类队伍是唯一建议考虑混合型题目的群体,也是最有条件在六道题里追求“最高收益”的群体。但要注意,综合能力强不等于可以忽视工作量评估,混合型题目的总工作量通常比单一型更大。
3.3 粗筛六道题的半小时清单
赛题公布后,我推荐先用半小时完成一次粗筛,而不是直接开始在某一题上写代码。操作方法是,六道题每道题给三分钟,只回答四个问题:
- 这道题要我解决的核心问题用一句话怎么说?
- 附件和数据大概是什么形态?有没有数据?大概多少?
- 我脑子里立刻能浮现出的主流模型或算法是什么?
- 如果选它,最让人担心的一点是什么?
把答案记下来,然后画一个简单的三点打分:兴趣度、能力匹配度、风险度。半小时后扔掉最不可能的两道题,剩下的四道题进入下一轮详细分析。这一步的核心目的不是找到“正确答案”,而是避免你们队在第一晚就陷入deep dive,错过对全局的掌控。
4. 拿到题目后48小时内的初步分析操作流程
4.1 第一个三小时:通读与题目速记表
粗筛之后,对剩下的三到四道题做一次精读。精读不是从头看到尾,而是带着问题去读,并把结果整理成速记表。
速记表可以很简单,建议直接用表格:
| 题号 | 核心任务 | 数据类型/体量 | 问题数量 | 可选模型/方法 | 理论难度预估 | 数据预处理预估 | 最大风险点 |
|---|
给每道题填完这行,题目之间的可比性就出来了。我经常看到队伍只看“哪个题我更有感觉”,不去填这张表,结果做了一半发现工作量完全失控。表格能不能填满不重要,重要的是强制你用一个结构化的视角去审视每一道题。
这里有个很实用的经验:读题阶段要把题目里的“背景描写”和“任务要求”分开。研赛题目往往有大量工程背景叙述,一方面是为了贴近实际,另一方面也会误导你把精力放在背景术语上。真正要解决的问题永远写在“请建立模型”“请设计算法”“请分析”这些字眼后面。把每个子问题单独摘出来,标上序号,后续所有工作围绕这些序号展开。
4.2 给数据做一次快速的“体检”
如果候选题目里有数据题,不要等到选定后再看数据,那就太晚了。下载附件后,用最快的方式做一份数据体检。以Python为例,几分钟就能完成:
import pandas as pd # 注意研赛附件经常不是utf-8编码,先尝试gbk或gb18030 df = pd.read_csv("data/attachment.csv", encoding="gbk") print("数据维度:", df.shape) print("缺失情况:") print(df.isnull().sum()) print("重复行数:", df.duplicated().sum()) print("数值字段基本统计:") print(df.describe().T)这一小段代码能告诉你几件关键事:数据是不是大得离谱、缺失率是否高到需要大规模插补、是不是存在大量重复、数值字段的量级是否正常。如果某个附件有几十列几十万行,那“数据预处理”在你们的计划里至少要预留半天到一天;如果缺失率超过30%,你就得思考插补策略会不会变成论文里最耗时的一个环节。
再补一个我自己常用的习惯:把目标变量和少数关键特征做一个pairplot或者相关性热力图,不用太精细,只要能直观判断“这个数据里到底有没有规律”就够。如果画完发现目标变量和所有特征都杂乱无章,第一问预测模型基本只能靠堆文本自圆其说,这种题趁早降权重。
4.3 用文献检索判断理论难度
很多队伍在初步分析阶段忽略了文献这一步,总觉得“先做再搜”。其实研赛题目背后都是相对成熟的研究方向,你能不能快速找到几篇核心文献,直接决定了这道题的理论天花板。
操作方法不复杂:把题目的核心任务拆成关键词,去学术搜索引擎里搜。比如题目涉及电力负荷预测,就搜“power load forecasting + LSTM”或者“短期负荷预测 综述”;涉及机械故障诊断,就搜“fault diagnosis + deep learning”。重点看三样东西:相关综述是否存在、主流模型的框架是否统一、有没有可复用的baseline结果。
如果一道题的关键词搜出来的文献极其零散,说明这个方向本身就不成熟,答题时你没有太多可以参考的框架,需要自己搭模型的概率大,难度自然往上走。如果文献数量爆炸,所有论文都用差不多的模型组合,那这道题的竞争会非常激烈,你需要做的不是再复现一个普通模型,而是找一个别人没怎么用的角度去切入。
4.4 把题目拆成工作量清单
赛题里通常包含不止一个小问。要判断一道题做不做得完,我的方法是把整道题拆成六个部分:数据预处理、第一问、第二问、第三问、加分项/附加问、论文写作。然后给每个部分按小时数估一个低位数和高位数。
举个例子。一道数据题,你可能估:数据预处理5到8小时,第一问4到6小时,第二问6到9小时,第三问4到6小时,附加问3到5小时,论文写作8到12小时。加起来最乐观30小时,最悲观46小时。而比赛总时长看起来有将近一百小时,看似很宽裕,但你必须去掉睡觉、吃饭、小组讨论、返工重做这些时间,实际可用的高质量精力可能只有35到45小时。如果估出来的悲观值超过了这个范围,就要重新考虑选题。
这道算术题的价值在于:它把“感觉能做完”变成了“算过账”。每道题都做完这个拆解,三者之间的体量差异一目了然。
4.5 预测竞争热度,决定要不要“反热门”
每届研赛都有明显的“热门题”和“冷门题”。热门题通常具备几个特征:背景熟悉、数据直观、模型套路清晰。冷门题则相反,可能涉及相对小众的工程领域,或者题目措辞模糊、需要自行补充假设。
选择热门题,好处是参考资料多,坏处是你只是众多同质化答案之一。选择冷门题,风险是题目本身可能确实难啃,但一旦做出来,论文辨识度很高。我的建议是,不要在初步分析阶段就迷信“选冷门”,因为不少冷门题的“冷”正是因为它的坑多到让前人不愿意选。更理性的策略是:对候选的2道题做一次“扎堆预判”,想清楚如果自己选了热门中的热门,打算在哪一点上做得和别人不一样;如果选了冷门,又能拿出什么证据证明自己真的能做出来。
4.6 制定带检查点的滚动计划
初步分析的终点不是“决定选题”,而是“决定选题后立刻能开始干活”。我强烈建议在选题确定后的当天晚上,就把整个比赛阶段拆成几个带检查点的计划:
- 第1天晚上:确定主选题和备选题,完成数据体检和文献粗检索。
- 第2天中午:第一问必须有可跑通的雏形,哪怕结果很粗糙。
- 第3天晚上:全部问题至少跑通一遍,输出完整的结果文件。
- 第4天白天:论文写作,同时集中补实验、调参数、画图。
- 第5天:只做降重、排版、摘要打磨,禁止再开新方向。
这套计划的核心逻辑是“先求全,再求好”。研赛里做不完的论文绝对不可能拿奖,而做完一篇不完美的论文,至少还有修改的空间。
5. 我复盘过的选题翻车现场:五个真实教训
5.1 数据的“大”不等于“好”:预处理吞掉两天
有一年我帮一支队伍拟过初步分析,他们看中一道数据题,理由非常统一:附件量大,说明素材多,可以做的内容多。我一问才知道,附件里有五个超大CSV,总计快二十个G,只有一台笔记本能处理,内存还扛不住。他们第一天基本上是在等待读数据和报错中度过,第二天才开始做缺失值处理,后面所有任务都靠赶工完成。
这个教训可以提炼成一条规则:在你评估一道题的工作量时,数据预处理的时间不是按“大约几小时”去估,而是按“你最不熟练的那个人来操作需要多久”去估。因为实际操作时,读不完、导不出、内存爆、编码错这些问题层出不穷,每个都是时间黑洞。数据量庞大本身不是坏事,但必须有足够的工程能力去驾驭,否则它就是反选。
5.2 机理题第三天卡壳:主方程解不出来
另一支队伍选了一道机理题,队伍里确实有一个物理基础不错的队员,前两天的模型推导和方程建立都做得有模有样。但到了第三天求解时发现,核心方程因为非线性强耦合,加上没有好的初值估计,用常规数值方法怎么调都不收敛。他们花了几乎一整天尝试改格式、换算法,最终还是没能稳定求解,只能硬着头皮把论文写完,模型部分基本是“提出-简化-放弃”的节奏。
在初步分析阶段,判断一道机理题能不能做,不能只看“原理懂不懂”,还要看“求解路径清不清晰”。如果一个方程在文献里只有解析解或者特殊条件下的近似解,你们是否具备实现它的数值能力?这个判断在选题当天就要做,而不是等到三天后。
5.3 高维稀疏数据 + 深度模型 = 调参无底洞
出现最多的翻车组合,是高维稀疏数据配上深度学习模型。有的队伍在初步分析时只看到“机器学习能解决”,忽略了数据维度爆炸和稀疏性对神经网络的灾难性影响。结果训练一个模型动辄几十分钟,效果还比不上逻辑回归,于是陷入特征筛选、网络结构修改、超参数搜索的循环,时间一点点耗尽。
这类问题的解法其实简单:在选题阶段就做最小可行的baseline测验。下载数据后,拿最简单的线性模型或随机森林跑一遍,看看能不能得到一个说得过去的分数。如果连baseline都惨不忍睹,说明数据本身和任务匹配度不高,需要更复杂的处理,这时就要冷静评估这个复杂度是否值得。
5.4 中途换题:团队士气与时间双双崩盘
中途换题的队伍几乎没有一个有好结果。我见过最快的一次,是第一晚十点决定选A题,第二天早上八点有人发现B题好像更好做,结果整个上午都在重新读B题,又要重新下载数据、重新查资料。换题的那一刻,三人之间的信任就开始松动,后面遇到任何小问题都会被放大成“当初不该换题”的怨气。
我并不是说选题绝对不允许调整,而是调题必须特别克制。只有在一种情况下我支持换题:你发现原题存在根本性缺陷,比如附件数据损坏、或者你们对题目的理解出现了原则性错误。至于“另一道好像更好做”,那只是情绪上的新鲜感,不是理性的决策依据。
5.5 写作能力弱的队,选了一个需要大量文字表达的题
有一篇文章问题设置很开放,每个小问都需要大量的假设说明、方案对比和结果讨论,本质上是“把模型讲清楚”比“把模型跑出来”更难的题。这支队伍建模和编程都不错,但论文主笔不擅长文字表达,最后写出来的东西逻辑跳跃、术语混乱,模型做得再细也救不回来。
这也提醒我们在选题时,必须把写作友好度当成一个独立维度。如果你队伍的主笔更擅长写结构清晰的“方法-实验-结论”型论文,就尽量避开那种需要大量定性讨论、政策建议、开放性论述的题目,否则建模部分的优势会被表达端的短板抵消。
6. 面向不同队伍类型的最终选题策略
6.1 稳健型队伍:把“闭环完成”当作最优策略
如果你的目标就是稳扎稳打拿个好奖,不追求惊世骇俗的创新,那么最优策略永远是选择最不容易崩盘的题目组合。具体操作是:在数据驱动型题目里,选择附件体量适中、初步体检结果不错、文献里边有大量成熟方法可借鉴的那道题。你要做的是把每一个环节都做到“标准以上”:数据处理完整、模型选择合理、实验对比充分、论文图表精美。这种论文在评委眼里是“干净、完整、可给奖”的典型。
6.2 冲刺型队伍:用场景创新替代模型堆叠
如果你们的目标直指一等奖,就不要指望靠多做几个模型来赢。一等奖论文的特征通常是:在某个环节上让评委明显感到“这个队想得和别人不一样”。这种差异化可以来自对题目背景的深度拆解、对数据含义的独特理解、或者对模型假设的仔细论证。
冲刺型队伍在选择题目时,可以偏向混合题或者有明确应用背景的题,因为这类题目天然允许你讲一个从“问题理解”到“模型设计”再到“结果验证”的完整故事。但必须注意,故事讲得完的前提是工程量可控,否则想得再漂亮也只是空中楼阁。
6.3 新手队伍:先求完整,再谈亮点
第一次参加研赛的队伍,最忌讳一上来就挑战高难度机理题或者工程量巨大的混合题。新手队伍的时间管理能力和技术储备都还不够,先把论文完整做出来的优先级最高。所以我建议新手直接选择数据驱动型题目中“看上去最平庸”的一道,然后用标准流程去完成它。只要每个环节都稳健落地,新手拿个三等奖甚至摸到二等奖边缘是完全可能的。
6.4 我的“六维打分法”小工具
最后分享一个我私藏的小工具。在初步分析结束后,我会让队伍对候选题目做六个维度的打分,每项1到5分,然后加权求和:
- 理论可得性:这道题的模型思路在文献中好不好找,权重0.15。
- 数据质量:附件结构是否清晰、缺失是否可控,权重0.2。
- 工程量:按工作量清单估出来的总代价,越小越高分,权重0.15。
- 能力匹配度:和队伍画像的贴合程度,权重0.25。
- 竞争热度:预估选此题的人数,越少越高分,权重0.1。
- 写作友好度:对主笔风格的适配程度,权重0.15。
分数最高的那道题,就是你们该选的。这个打分法的好处不是科学,而是强迫每个人把主观偏好放到一个可比较的框架里,最大程度减少“我觉得”“我感觉”这类内部争论。
最后还想多说一句,我这些年看过太多队伍把大量时间耗在第一天晚上,反复对比题目、反复搜索资料,却迟迟不敢把名字定下来。别把初步分析做成无限分析。它的目标只有一个:在尽可能短的时间里,选一道你们能做完、能做稳、且有机会做得漂亮的题。分析做到八成清晰,就立刻划掉其他选项,带着全队从决策模式切换到执行模式。比赛比的不是谁犹豫得更少,而是谁动手得更稳。希望这篇经验能帮你们在下一个赛题之夜少踩几个坑。