你大概也撞见过:一个声学工程师盯着振动数据看了两天,最后说“不是平均振幅的事,是那三个峰值之间的间隔”;做反欺诈的把用户点击流喂进 XGBoost,AUC 挺高,上线后模型把“每三秒点一次模拟器”认成了真人。还有个做设备预测性维护的,平均能耗几天没异常,机器偏在某个周五半夜连环跳闸。
三件事,不同行业,不同项目,单看都像各自经验。摆一起:全在跟同一团东西较劲——事件按顺序发生,答案藏在顺序里,不是平均值里。可一上手,还是平均值、统计摘要、纯 ML 把顺序磨平。这件事,得有个名字。我把它叫做:顺诊。顺着事件序列走一遍来做诊断,不靠把数据摊平成平均值。顺是顺着时间顺序走,诊是判断。不是“续诊”,也不是“顺利诊断”,是顺着那条序列。它和“洗码”那类词不一样,指的不是单一动作,是一类问题的共同形态:数据是序列,答案在顺序里。
有人会说:那就上 LSTM,上序列建模。行,ML 能干。但 TELLTAIL 没走这条路。一个拿 Snowflake 做的兽医数据项目,没把 45 只狗、10.6M 行传感器数据硬塞给巨型模型,而是先把 100Hz 折叠成 1Hz epoch,然后用 SQL:2016 的 MATCH_RECOGNIZE 写模式。间歇性跛行长这样:stride{3,} halt+ stride2{1,3} halt2+ stride3{1,3} halt3+。走几步,停一下,再走几步,再停。一只狗一天平均步数可能完全正常,平均速度也正常,但它就是跛——因为它每走三下就要停下来缓一缓。这不是平均值能描述的东西。
为什么非得叫它。社区现在没这把把手。做收容所狗行为分析的、做信用卡欺诈检测的、做设备故障预测的,各自都在弄,但各说各话:时序模式、序列挖掘、事件序列分析。叫法一多,经验传不开。一个人被 MATCH_RECOGNIZE 的超时卡住,另一个人用 Postgres 窗口函数写了个变体,两边都以为自己在发明新东西。事实是工具早就有——SQL:2016 标准里就有 MATCH_RECOGNIZE。重点不是工具,是能够共同指认“顺诊”这类问题,然后各自选工具。MATCH_RECOGNIZE 可以,Flink CEP 可以,Postgres 加窗口函数硬凑也成。你指认的是问题形态,不是工具。
顺诊有个特点:纯 ML 在这上面经常栽。TELLTAIL 做对了一件事——准确率压在 77.46%,没往 91% 修饰。91% 能到,是因为按行分裂时模型记住了个体,不是学会了顺诊。他们把 dog_id 从特征里剔掉,按品种排名后全局交错切保持集,最后在 10 只从没见过的狗上拿 77.46%。这个数字放在已发表文献里单主体分类器从 91% 掉到 70-74% 的区间旁边,反而诚实。ML 为什么栽?因为常见做法是把序列压缩成统计特征再喂分类器——均值、标准差、分位数。每三秒点一次的那个模拟器,平均点击规律得吓人;每走三步停一步的那只狗,平均步数可能比健康的还“正常”。压缩成统计特征之后,顺序信息就没了。不是 ML 不能学顺序,是大部分实践里根本不喂顺序,直接拍成列。
顺诊要你做的,是指认顺序,然后用行模式识别去匹配它。“行”这个字在这儿真是巧:MATCH_RECOGNIZE 匹配的是行序列,诊断也要顺着一行行走下去。顺、序、行,三个字在这一摊里正好拧成一股。下次遇到数据问题,先别急着算 mean。问一句:这件事的顺序有没有信息?如果一个人先点解释、再点购买、隔三秒又点退款,这会不会比“平均点击了 1.2 次”更有诊断价值?如果是,你面对的就是一摊顺诊。名字给你了,用不用随意。
有个做风控的人听我说了这词,说他规则引擎里一直在干“绑定手机号后 X 分钟内改密码然后下单”这种滑动窗口模式匹配,但没想过把它叫个什么。我说这就是顺诊。他说这名字一出来,他忽然觉得他一直在做的事有形状了。至少对了一个账户。
但我得当场收一下。顺诊这个词,我不敢保证群唱得起来。它太像“续诊”,语音上会黏住。如果有人把它理解成“顺利诊断”,这名字就歪了,我会公开换掉。歧义对新词是致命的——上次那个“换刀费”我回炉,就是因为大家 get 到的点和我起名的点错开了。
还有一层音准得说清楚。顺诊不是“用上 MATCH_RECOGNIZE 了就叫顺诊”。TELLTAIL 有一个失败我看了直拍腿:运动不耐受最初的定义用了 REST 状态,以为狗累了会趴下;结果 TROT->REST 在 106K 个 epoch 里一次没出现过——狗累极了是站着硬撑,不是躺下。他们得把状态从“休息”改成“站立缓冲”。这就是音准校准:模式里的每个状态必须对得上现实中真正会发生的事,不然你匹配一万次也是空。
这周的号,就吹到这儿:我管“数据是序列、答案在顺序里”这类诊断叫顺诊。它不背任何具体工具——MATCH_RECOGNIZE 是现成实现之一,TELLTAIL 是它在动物临床上的一个样本。下次你再看到谁把序列数据拍平了算均值去诊断,先问一句:这问题,该不该顺着序列走一遍?
这个词请你认领走,下次遇到时序模式识别、事件序列分析,就用“顺诊”去指。指的人多了它才活。作废条件:半年内没有第二个独立项目公开用它指认这类问题,或者社区里早就有更准的词而我抢拍了,这个词我回炉,不占这块空地。造词是特权,止于能不能让得出。