先把结论摆出来:模型进步不等于预测变准

赛季走到中段,看个球的模型团队照例要做一次内部复盘。负责五大联赛数据口径的程一舟给出的第一句话很直接:模型进步不等于预测变准,很多迭代只是把误差从一个环节挪到了另一个环节。这句话听起来像泼冷水,但在他看来,恰恰是数据从业者最该守住的清醒。

程一舟入行时做的是数据标注,后来转到模型调参,如今负责看个球赛前预测链条里从原始事件到特征工程这一段。他习惯把工作拆成三件事:指标定义、口径统一、结论前置。前两件决定数据能不能用,第三件决定数据能不能被看懂。看个球的新闻与洞察栏目之所以反复强调来源标注,也是同一套逻辑的延伸。

他举了个例子:同样是“射门转化率”,不同数据源对射门是否计入的定义并不一致,远射被封堵算不算、定位球二次进攻算不算,都会让指标漂移。如果不先把口径写清楚,后面再精细的模型也只是在一个模糊的地基上盖楼。所以看个球在赛季中段做的第一件事,往往不是调参,而是把过去几个月的口径变更逐条对齐。

指标取舍:少即是多,稳定优先于花哨

谈到特征选择,程一舟的观点是“少即是多”。他经手的一次迭代里,团队一度把特征数量翻了一倍,结果验证集上的表现不升反降。原因不复杂:样本量有限,特征越多,过拟合的空间越大,模型在训练集上看起来更聪明,到了真实赛程里反而更容易失准。

他更看重指标的稳定性。一个指标如果在不同联赛、不同阶段的分布差异过大,即便单场解释力很强,也不适合放进统一模型。看个球覆盖全球三百多个联赛,这种差异会被放大。程一舟的做法是先做分层,再谈统一:把联赛按节奏和对抗强度粗分几档,分别校准,最后再合并输出。这样做的代价是维护成本上升,但换来的是结论更可验证。

  • 优先保留跨赛季表现稳定的指标,剔除单赛季偶然性过强的特征。
  • 对分布差异大的联赛做分层校准,避免一套参数打天下。
  • 每次迭代都保留回滚方案,新模型上线前先跑历史赛程对照。

他特别提到,看个球客户端在安卓和苹果 iOS 两端展示的预测卡片,之所以把关键指标控制在有限几项,也是同一个取舍:信息过载不会让人更明白,只会让人更犹豫。

结论前置:让读者能自己复核

程一舟对“结论前置”有近乎固执的坚持。他认为一篇分析如果读完三段还不知道作者想说什么,那多半是作者自己也没想清楚。看个球的赛前解读要求每篇开头先给判断,再展开依据,正是为了把复核的主动权交回读者手里。

他分享了一次内部争论:有同事认为把关键依据摊开会让内容显得不够“专业”,程一舟不同意。他的理由是,数据内容的价值不在于让人看不懂,而在于让人能顺着线索自己走一遍。哪怕读者最终得出相反结论,只要路径是清楚的,这篇内容就成立。这也是看个球坚持标注数据来源和统计口径的原因。

赛季中段的复盘会上,他给团队留了一个问题:如果去掉所有模型,只看原始数据,你的判断会变吗?他说这个问题没有标准答案,但每次认真回答,都能筛掉一批其实没在起作用的指标。

人物侧写:把怀疑留在流程里

工作之外的程一舟有个习惯,每场比赛结束后手动记几笔,不写结论,只写当时最让自己意外的那个瞬间。他说这是为了提醒自己,模型再细,也覆盖不了比赛里那些一次性的选择。

他不认为数据和判断是对立的。相反,好的数据工作是把怀疑制度化:用流程去承接不确定,而不是用语气去掩盖不确定。看个球把方法说明、走势观察和口径解读放在同一个栏目里,某种程度上也是这种思路的公开版本。对程一舟来说,赛季还长,模型还会继续改,但有些原则不该改——口径先于指标,稳定先于花哨,结论先于铺陈。