不是外卖,是药盒的告警
刚看到告警内容的时候我差点笑出声。系统提示,独居老人王桂英的健康档案模块,连续三天的手动填报记录都是“每日服用降压药0.5g”,但对接的智能药盒采集到的实际出药量,一直是1g。 之前刚接手这个岗的时候,我总觉得这系统的规则定得太轴了。不就是个填报误差吗?值得凌晨三点把人吵醒?换作别的互联网公司,这种非核心业务的告警,完全可以攒到第二天上班再处理。 我摸过手机给社区的网格员打了个电话,响了五声才接,对面的声音带着刚醒的懵。我把告警内容说了,她“啊”了一声,说王阿婆上周把老花镜摔碎了,子女在外地赶不回来,她自己凑合用个100度的老花镜,填记录的时候把“1g”看成了“0.5g”,但药盒是之前社区上门给设置好的,每次出药都是按医嘱的1g来的。 “要是等她自己按填的记录吃药,那不是要多吃一倍的量?”我当时后背的汗一下子就下来了。
脏数据里藏着全是人的影子
刚入职的时候我真的觉得这活儿没意思。每天对着几百条校验规则跳来跳去,什么空值率、逻辑阈值、跨系统一致性,同事们聊起大模型、聊用户增长、聊商业化变现的时候,我连插嘴的资格都没有。有次部门聚餐,旁边的产品经理听说我是做数据质量监控的,夹菜的手顿了一下,说“哦,就是那个把脏数据洗干净的岗啊”。 我当时没反驳。 直到后来碰到那个骑手的告警。系统跳提示说,骑手老周连续三单的配送定位都停在同一个写字楼楼下,停留时长超过40分钟,按规则要判定为“疑似刷单作弊”,要扣掉他当月的评优奖金。我那时候刚学了点“数据治理”的皮毛,本来想直接把异常标记上提交,结果鬼使神差的点进了老周的配送轨迹详情——他每次的定位点其实都在慢慢往上移,只是那栋楼的电梯上周坏了,基站定位飘得厉害,把他爬22楼的轨迹,全算成了楼底的固定点。 我给平台的运营打了电话,说这个告警是定位飘了,不是骑手作弊。运营一开始还不耐烦,说规则定好的为什么要改,我跟他说,你要是扣了这个钱,人家跑一天赚的钱都不够扣的。 最后老周的评优保住了。他后来通过平台给我发了个五块钱的红包,我没领。 你说这算什么脏数据?系统把飘了的定位当成“错误”,把老人填错的药量当成“误差”,把小朋友早上买的早餐当成“午餐消费”——那些被系统判定为“异常”的脏数据,恰恰是最不能随便删掉的部分。它不是系统的bug,是这个世界本来的样子:老人会老眼昏花,骑手会爬楼梯,小朋友会在早上吃最贵的套餐。
我们根本不需要完美的数据
现在行业里总流行一个说法,说未来的数字世界里,数据的准确率要达到100%,要零异常、零偏差,这样才能喂出最聪明的算法。我在一线做了四年才明白,这根本就是个伪命题。 你永远不可能拿到百分百完美的数据。你会碰到老人填错的药剂量,会碰到飘了的定位,会碰到小朋友把消费记录刷错的时间,会碰到外卖小哥因为爬楼被系统算成在原地停留。如果我们为了追求所谓的“完美数据”,把这些跟实际场景对不上的记录全删掉,那最后算出来的算法,根本就是飘在半空中的东西——它离人太远了。 就像王阿婆现在学会用语音填健康记录了,有时候系统识别错了,把“我今天吃了药”识别成“我今天没吃药”,我们的监控系统不会直接把这条数据删掉,也不会直接给阿婆扣个“健康异常”的帽子,只是弹个提示给社区的网格员,让对方上门问一句就够了。 昨天我又收到一条告警,是个小学三年级的小朋友的校园卡消费记录,连续三天的消费金额都是15元,时间显示是中午十二点,但监控的逻辑校验显示,他的消费时间其实是早上七点半——系统一开始判断是数据传输错误,我给学校打了个电话,老师笑半天,说那小孩最近迷上了食堂的茶叶蛋,每天早上都买三个,加一杯豆浆刚好15块,根本不是数据错了。 你看。 那些跳来跳去的告警,那些被我们揪出来的“不一致”,从来不是为了把世界修剪成符合算法喜好的形状。它是我们在跟这个乱糟糟的世界打招呼:我看见你了。你填错了没关系,你定位飘了没关系,你在系统里留下的记录跟别人不一样也没关系。 王阿婆上周给我送了一篮她自己种的小番茄,酸得我皱眉头。 真甜。作者|大讲堂
排版|大讲堂
审核|乐乐
大讲堂