数据中的草原
数据中的草原
一
苏晓禾第一次注意到异常,是在二〇二五年十一月的一个星期四。
那天深圳下着不大不小的雨,南山区科技园的写字楼群像一排被水洗过的牙齿,白得发灰。她在十八楼的工位上盯着三个显示器,左边是代码编辑器,中间是数据仪表盘,右边开着微信——最后那个纯粹是为了让她觉得自己还活在人间。
“信用评分模型V7.3上线跑了两个月了,“组长方明在周会上说,“整体准确率92.7%,比V7.2提升了1.3个百分点。但有一个cluster我看着不对——你们谁有空查一下?”
他投屏展示了一张散点图。密密麻麻的数据点分布在全国地图上,颜色从绿到红表示信用评分的高低。大部分红点集中在北上广深——这很正常,一线城市收入高、征信记录完整,高分是预期之内的。
但有一团红点,孤零零地悬浮在甘肃省中部的一片空白区域。
那里没有一线城市,没有大型企业集群,甚至连像样的公路都屈指可数。但那团红点——三千七百二十一个人——的平均信用评分,高达847分。比北京的平均分还高出23分。
“可能是数据污染,“方明说,“也可能是标签泄露。总之查一下。”
苏晓禾举手认领了这个任务。倒不是因为她有多热心,而是因为她认出了那个位置。
那是她外婆家所在的县。会宁县。一个被黄土高原和陇西山地夹在中间的地方,以贫困和高考闻名全国。她小时候每年暑假都要坐十二个小时的绿皮火车回去,在窑洞改成的砖房里住上一个多月,吃外婆烙的洋芋饼,看门前那棵歪脖子枣树在风里摇。
她已经五年没回去了。
二
苏晓禾今年二十七岁,本科在兰州大学学统计,研究生去了中科院计算所,方向是推荐系统。毕业后在深圳一家叫”数澜科技”的金融科技公司做数据分析师,工龄两年半,职级P6,月薪税前两万四。
说实话,这份工作和她当初想象的不太一样。
她以为数据分析是用数学去理解世界。实际上,她大部分时间在处理脏数据:用户填写的年收入明明是五千块,名下却有四套房产;有人每月按时还款,但账户里永远只剩一块钱余额;还有那种每隔三个月就换一次手机号的用户,像候鸟一样在不同的号码之间迁徙,留下断断续续的信用轨迹。
这些异常都不算什么。真正的异常是那种”合理得不合理”的数据——太完美了,完美到让你觉得背后一定有什么东西被你忽略了。
会宁县那三千七百二十一个人就是这种。
苏晓禾用三天时间做了初步分析。她把这三千多人的数据拉出来,逐项对比全国平均值:
——平均月收入:4,217元。低于全国平均的6,832元。
——平均负债率:12.3%。低于全国平均的34.7%。
——逾期率:0.07%。是全国平均水平的四十分之一。
——最频繁的贷款用途:农业种植(41%),子女教育(28%),医疗(17%)。
——提前还款率:89.3%。
八成九的提前还款率。苏晓禾反复核对了数据管道,确认没有bug。这些人借了钱,几乎总是在到期之前就还清了。不是提前一天两天,而是提前好几个月。
她给方明写了一封邮件:“初步结论:该cluster无数据污染迹象。高分来源于极低的逾期率和极高的提前还款率。建议进一步分析行为模式。”
方明回复了一个”OK”的表情。
但苏晓禾没有停下。因为数据里有一个细节让她不安——这三千多个用户,注册时填写的常住地址虽然分散在全国各地(深圳、广州、东莞、成都、西安、乌鲁木齐),但他们预留的紧急联系人电话,归属地全部是同一个号段:会宁县及相邻的定西市。
这不是三千七百二十一个人。
这是一个群落。
三
周末,苏晓禾打电话给她妈。
“妈,会宁那边现在怎么样了?”
“还能怎么样,“她妈在电话那头叹气,“你舅舅去年开的那个养羊合作社,今年又赔了。说是行情不好,饲料涨价。”
“舅舅借钱了吗?”
“借了,从手机上借的。你说那个什么……微粒贷?反正就是网上借的。说是利息低。”
“他按时还了吗?”
“怎么不还?你舅舅那个人,宁可自己不吃不喝也不会欠人家的钱。“她妈停顿了一下,“你问这个干什么?”
苏晓禾没有说实话。她说:“没什么,公司做市场调研。”
挂了电话,她坐在出租屋的阳台上,望着楼下灯火通明的科技园。深圳十一月的夜晚还是温热的,空气里有股潮湿的混凝土味道。她想起新闻里看到的那些关于”下沉市场”的报道——互联网金融如何渗透到中国最偏远的乡村,如何让农民第一次享受到了”金融服务”。
那些报道总是把这件事讲成一个成功的故事。
但没有人报道过这些农民是怎么还钱的。
苏晓禾打开笔记本电脑,开始深挖。
她调出了这三千多个用户的完整交易记录,按时间排序。然后她看到了一个她完全没有预料到的模式:
这些人的还款日,不是随机的。
它们呈现出一种精确的周期性——每月农历十五前后三天内集中还款。不是某一个用户,而是整个群体。就像候鸟按时南飞一样。
她又查了一下这些用户的收入入账时间。大部分人的收入没有固定的到账日——他们做零工、种地、跑运输、在工地上搬砖,收入是碎片化的。但还款永远是农历十五前后。
为什么?
苏晓禾打开浏览器,搜了”会宁县 农历十五”。搜索结果大多是本地新闻、赶集日通告、庙会信息。然后她看到一条本地论坛的帖子,发布时间是三年前:
“咱会宁人讲究,十五之前不欠人钱。老辈子传下来的规矩,过了十五还不清账,这一年都不顺。”
帖子下面有三百多条回复,清一色是会宁本地口音的赞同。
苏晓禾盯着屏幕看了很久。
一个流传了不知多少年的民间习俗,让一个群体的信用行为呈现出完美的周期性,进而被一个深度学习模型捕捉到,最终反映为一条鲜红色的数据云——悬浮在中国西北的干旱土地上。
算法不认识农历。算法不认识习俗。算法只看见了一个模式:这些人总是按时还钱。
于是算法给了他们高分。
这个分数没有错。但算法永远无法理解这个分数背后的东西——就像你可以在卫星照片上看见一条河,但你永远无法从照片里闻到河水的气味。
四
苏晓禾在接下来的两周里做了更多挖掘。
她发现这三千七百二十一个人并不是一个松散的群体。通过社交网络分析,他们之间存在着密集的转账关系——不是大额的,而是那种几十块、一百块的小额转账。备注大多是”给孩子买文具""这个月的水费""你妈让我转给你的”。
这让她想起了外婆家那口窑洞。夏天的时候,邻居们会在窑洞前面的空地上坐着乘凉,有人带了西瓜来切,有人端了煮玉米出来,大家你一口我一口,从来没有人算过谁吃了多少。
这种关系在数据里呈现为一个稠密的图——节点多,边更多,社区结构清晰。苏晓禾跑了一个社区检测算法,发现这三千多人可以分成十七个子群,每个子群的核心节点都是一个四十到六十岁的女性。
她把这些核心节点的资料拉出来看。十七个人,全部是女性,全部来自会宁县及附近乡镇。她们有一个共同特征:手机通讯录里的联系人数量极多,平均387人,是普通用户的三倍。
她们是这些社区的”节点”——不是社交网络意义上的意见领袖,而是现实生活中的那个角色:谁家孩子考上大学了,她组织大家凑份子钱;谁家老人生病了,她挨个打电话通知;谁要借钱,她帮着张罗,借完了还不忘催一句”过了十五就还啊,别拖”。
苏晓禾在数据分析报告里把这个角色定义为”信用枢纽”。
但她心里知道,这些女人在家乡有一个更朴素的名字:能行人。
能行人。有能力行方便的人。
五
事情在十二月初起了变化。
数澜科技的CTO赵鹏飞在一次技术评审会上提出了一个新方案:用联邦学习重构信用评分模型。简单来说,就是把分散在各个金融机构的数据打通,训练一个更强大的模型——V8.0。
“V7.3的瓶颈在于数据维度不够,“赵鹏飞在会上说,展示着精心制作的PPT,“我们只有用户在我们平台上的行为数据。但一个人的信用不只是他在我们这儿的表现——他在银行有没有贷款?在运营商那儿是不是经常换号?在电商平台上退货率高不高?这些都是信号。”
方明在台下点头。苏晓禾也在点头,但她心里在想别的事。
联邦学习意味着模型会引入更多维度的数据。更多维度的数据意味着更多信号,也意味着更多噪声。而那些靠”农历十五前还钱”这种习俗维持高分的用户,在新模型下会怎样?
她回到工位,做了一个模拟实验。
她用现有的V7.3模型和计划中的V8.0架构做了一个A/B测试。结果不出她所料:在V8.0下,会宁县那个cluster的平均分从847降到了691。
降了156分。
原因很简单:V8.0引入了收入水平、资产规模、学历等硬指标作为更强的特征。在这些维度上,会宁的用户几乎是全国最低的。月收入四千多块,名下没有房产(农村的自建房不计入),学历以初中和高中为主——这些在旧模型里被还款行为”盖住”的弱点,在新模型里会被放大。
更严重的是,分数降到691意味着什么?意味着贷款额度从平均8万降到不到2万,意味着利率从年化5.6%飙升到14%以上,意味着很多人——那些靠贷款买种子、给孩子交学费的人——将失去他们唯一的资金来源。
苏晓禾把测试结果写成了报告,发给了方明。
方明的回复很快:“分析做得不错。但这是feature,不是bug。旧模型对这些用户过度拟合了——他们的实际风险承受能力远低于评分显示的水平。新模型只是纠正了这种偏差。”
苏晓禾盯着这段话看了五分钟。
“纠正偏差”。
在她的理解里,偏差是统计学术语,指的是估计值与真实值之间的系统性差异。但在方明的话里,“偏差”似乎有了另一种含义——它暗示着旧模型犯了错,而新模型在纠错。
可是谁定义了”真实值”?
一个收入四千块但从不欠账的人,和一个收入两万块但经常逾期的人,谁的”真实信用”更高?
这取决于你用什么来衡量。
如果你用”还款意愿”来衡量,答案是前者。如果你用”还款能力”来衡量,答案是后者。
而V8.0选择了后者。
六
那天晚上,苏晓禾没有加班,而是坐地铁去了深圳北站附近的一家牛肉面馆。老板是甘肃临夏人,面做得很正宗——汤清、萝卜白、辣椒红、蒜苗绿。她要了一碗二细,加了份肉,坐在角落里吃。
面馆的墙上贴着一张手写的告示:“本店接受现金、微信、支付宝。赊账者下次免进。”
苏晓禾看着这张告示,突然笑了。
“赊账者下次免进”——这就是一种信用体系。没有算法,没有评分,没有联邦学习。就一句话,七个字,但它精准地定义了信用的本质:你今天欠我的,明天要还。不还,就没有下次。
她想起小时候在外婆家。村口有一个小卖部,老板姓马,大家都叫他马叔。马叔的小卖部没有POS机,没有收银系统,只有一本发黄的笔记本。谁赊了账,就在本子上记一笔:张三,洗衣粉一袋,3块;李四,酱油一瓶,2块5。到了年底,张三和李四会来还钱——不是因为他们怕被列入”失信名单”,而是因为”欠马叔的钱不还,在村里没法做人”。
那本笔记本就是会宁县的信用评分系统。
它运行了几十年,从来没有出过错。
苏晓禾把面吃完,擦了擦嘴,突然意识到一件事:她在用数据看这群人,但数据看不见的,恰恰是这群人最核心的东西。
数据能看见还款日期,但看不见还款时那个人的表情——是轻松的,还是咬着牙的。
数据能看见转账金额,但看不见转账时附的那句话——“给你妈买点好吃的”。
数据能看见信用评分,但看不见一个人在深夜里盯着手机屏幕上”还款成功”四个字时的那种如释重负。
这些不是数据。这些是人。
七
第二天上班,苏晓禾做了一件超出她职责范围的事。
她没有通过方明,而是直接在公司的数据平台上,给会宁县那个cluster的所有用户做了一次电话回访。按照公司规定,这种回访需要审批。但她用了”模型验证”的名义——这个名义足够模糊,模糊到没有人会追问。
她用了一个自动化外呼系统,设置了三个问题:
- 您目前是否有未结清的贷款?
- 您对自己的贷款利率是否满意?
- 如果您的贷款额度降低或利率升高,会对您的生活产生什么影响?
第一个问题是数据核对。第二个是满意度调查。第三个才是她真正想问的。
回访结果在两天后出来。
三千七百二十一个用户,接通率74%,有效问卷2,613份。
问题一:87%的用户有未结清的贷款,平均余额3.2万元。
问题二:91%的用户表示满意或非常满意。
问题三的回答让苏晓禾失眠了一整夜。
52%的用户选择了”将无法继续当前的农业生产”。
31%的用户选择了”子女教育将受到直接影响”。
14%的用户选择了”无法支付必要的医疗费用”。
只有3%选择了”影响不大”。
她把这些数据做成了图表。不是那种适合放进PPT的漂亮图表——柱状图、饼图——而是一张简简单单的表格,每个数字都是一个人,一个家庭,一种生活。
她把表格附在报告后面,再次发给了方明。
这一次,方明过了很久才回复。
回复只有一句话:“晓禾,我知道你的意思。但这不是我们能决定的。“
八
十二月十五日,赵鹏飞在全员大会上正式宣布了V8.0的上线计划。
“这是数澜科技成立以来最重要的一次模型升级,“他站在台上,身后的屏幕上投影着精心设计的数据可视化——蓝紫色的粒子流动在屏幕上汇聚成一个闪光的数字”8.0”,“联邦学习让我们第一次拥有了跨维度的信用画像能力。我们的模型将不再是’看人看一面’,而是’看人看全身’。”
台下一片掌声。
苏晓禾也鼓了掌。她注意到自己的手有点冷。
会后,她在茶水间遇到了数据工程组的同事陈泽宇。陈泽宇是个话多的胖子,安徽人,喜欢在茶水间聊八卦。
“听说了吗?“他压低声音,“V8.0上线之后,会有一批用户的评分大幅调整。法务那边已经在准备修改用户协议的措辞了——加一条’评分模型可能随时调整’的免责声明。”
“大规模调整?“苏晓禾问。
“几百万人的量级,“陈泽宇说,“大部分是三四线城市和农村用户。分数往下调,利率往上调。公司预计Q1能多收两个亿的利息。”
两个亿。
苏晓禾在心里算了一笔账:两个亿除以几百万人,平均每人多付六七十块钱。六七十块钱,在深圳不够一顿像样的日料。但在会宁县,那是两袋面粉,或者一个孩子一学期的课外辅导费。
她端着杯子回到工位,在笔记本上写了一行字:
“算法的精确性,不等于社会的正确性。”
然后她盯着这行字看了很久,拿笔画了一条线,在旁边写了一句:
“但谁在乎正确性呢?公司要的是精确性。“
九
那天晚上回到家,苏晓禾打开电脑,做了一件她从来没有做过的事。
她把会宁县那个cluster的数据导入了一个可视化工具,不是公司常用的Tableau,而是一个她自己写的Python脚本。这个脚本可以把多维数据投影到三维空间,然后用颜色编码不同维度。
她选择的维度是:收入(X轴)、负债率(Y轴)、信用评分(Z轴)。颜色编码:提前还款率。
她按下回车。
屏幕上,三千七百二十一个数据点在三维空间中散开。它们的位置并不令人意外——集中在低收入、低负债、高评分的区域,像一片漂浮在高空的红色云团。
但颜色让苏晓禾愣住了。
这些数据点的颜色从深红到亮橙,按照提前还款率的高低渐变。当她旋转视角时,这些颜色连成了一片——
像一片秋天的草原。
深红的是枯黄的草,亮橙的是还泛着绿的草丛。数据点分布的形状,从某个角度看,像一个狭长的盆地,两侧高、中间低——那正是会宁县的地形:黄土丘陵之间的河谷川地。
苏晓禾慢慢地旋转着视角。三维空间中的数据云随着她的操作变换着形状,一会儿像起伏的山丘,一会儿像蜿蜒的河流。她突然注意到,当视角调到某个特定角度时,那团红色云层的中心出现了一个漩涡状的结构——那是那十七个”信用枢纽”所在的位置。
她们像泉眼一样,向外辐射着密密麻麻的细线——转账关系、通讯记录、担保链条。这些细线在三维空间中构成了一个网络,就像草原上的根系,扎在黄土深处,把散落的个体连成一片。
苏晓禾盯着屏幕,突然觉得自己不是在看数据。
她在看一个地方。
一个她去过的地方。一个她以为自己已经忘记、但身体记得的地方。
她记得那片黄土的气味——干燥的、带点碱味的、被太阳烤过的土。她记得夏天傍晚的风从山谷里灌进来,吹得门前那棵枣树哗哗响。她记得外婆蹲在灶台前烧柴火,火光照在老人的脸上,像一张旧的黄纸被灯照亮。
她记得外婆说过的一句话:“人活一辈子,就活个信用。”
当时她以为外婆说的是银行信用。长大以后才明白,外婆说的信用不是那个意思。
那是一种更古老的信用——人与人之间、心与心之间的信。
你借了邻居的镰刀,用完了洗干净还回去。你答应带孩子去赶集,到了日子就得去。你借了钱,砸锅卖铁也要还上。不是因为怕上黑名单,而是因为你不这样做,你在那个小世界里就无法站立。
这种信用没有评分,没有等级,没有大数据的背书。但它比任何算法都更可靠,因为它的抵押物不是资产,而是一个人全部的社会存在。
十
第二天,苏晓禾做了一个决定。
她没有去找方明,也没有去找赵鹏飞。她打开公司内部的技术文档系统,找到了V8.0的架构设计文档,仔细读了一遍。
然后她写了一份技术备忘录。
备忘录的标题是:《关于V8.0模型对特定用户群体评分偏差的风险评估》。
她用了两天时间,把所有分析结果写进了这份备忘录里。她没有用任何感情色彩的语言,没有讲外婆的故事,没有提牛肉面馆墙上的告示。她只用数据和事实说话:
-
V8.0对低收入、低负债、高还款意愿用户群体存在系统性低估。
-
该群体(约3700人)在V7.3下的评分与其实际违约率高度吻合(预测准确率98.2%),说明V7.3的评分是准确的。
-
V8.0引入收入、资产等维度后,该群体评分下降156分,但实际违约风险并未增加。
-
结论:V8.0的”纠正”实际上是引入了新的偏差——用城市中产阶层的信用标准去衡量农村和小城镇用户,导致系统性的不公平。
她在备忘录的最后加了一条建议:在V8.0中引入”地域-文化行为因子”作为调节变量,对还款行为特别好的群体给予额外权重,抵消收入和资产维度的负面影响。
这条建议在技术上完全可行。她在附注里给出了实现方案:只需要在模型的embedding层加一个attention机制,让模型在处理还款行为特征时,能够”注意到”行为背后的文化模式。
她把备忘录发给了方明,抄送了赵鹏飞。
然后她等待。
十一
等待持续了四天。
在这四天里,苏晓禾继续做她的日常工作——清洗数据、跑模型、写报告。表面上一切如常。但她发现自己越来越频繁地打开那个三维可视化界面,看着那片”草原”在屏幕上缓缓旋转。
她开始给那十七个”信用枢纽”编故事。
编号001:王桂兰,52岁。注册地址:深圳龙华区某电子厂宿舍。收入:4500元/月。她一定是在工厂里做质检或包装。通讯录387人——这几乎是她认识的家乡人的全部。她在深圳的工厂流水线上站了十年,但每个月农历十五前,她会准时还清所有贷款,然后用剩下的钱给家乡的儿媳妇转一千块,备注写着”给娃买奶粉”。
编号007:张秀英,47岁。注册地址:乌鲁木齐某建材市场。收入:6800元/月。她可能是在建材市场里帮人看店的。通讯录412人。她的转账记录里有一条让苏晓禾特别注意:每个月固定给一个账户转500元,备注写着”妈的药钱”。那个账户的归属地是会宁县。
编号013:李春花,55岁。注册地址:成都某小区。收入:3800元/月。她可能是某个小区的保洁员。通讯录298人——在十七个枢纽中最少,但她的转账频率最高,平均每天3.7笔。她像一只勤劳的蜜蜂,在不同的账户之间搬运着小额的资金,维持着一张看不见的互助网络。
苏晓禾知道她不应该这样做——不应该把数据还原成人。数据分析师的职业训练告诉她,要把人抽象成数据,而不是把数据还原成人。方向应该是单向的,从复杂到简单,从混沌到结构。
但她做不到。
因为那团红色的数据云,在她眼里已经不再是一团数据。
它是一片草原。有人在草原上放羊,有人在草原上奔跑,有人在草原上的星空下讲古老的故事。数据只是这片草原的影子,是卫星拍下的照片——精确,但扁平。
而她,碰巧是一个见过那片草原的人。
十二
第五天,方明把她叫到了小会议室。
“赵总看了你的备忘录,“方明的表情很微妙——不是愤怒,也不是赞同,而是一种更复杂的东西,介于为难和同情之间,“他说技术上没有问题,但策略上不能这么做。”
“为什么?”
“因为如果我们对这批用户做了特殊处理,就等于承认我们的模型对不同群体有不同的标准。这会引发监管风险——万一有人告我们歧视呢?”
苏晓禾差点笑出来。“歧视?现在的做法才是歧视。用城市的标准去衡量农村的人,不是歧视是什么?”
方明摇了摇头。“晓禾,你听我说。我理解你的想法。但你要明白,公司做模型是为了赚钱,不是为了做社会公平实验。V8.0上线后,整体准确率提升3个百分点,这意味着我们可以服务更多的优质客户。至于那三千多人——”
“三千七百二十一。“苏晓禾说。
“对,三千七百多人。他们不会失去贷款资格,只是额度降低、利率升高。他们还是可以借到钱的。”
“可以借到钱,但要多付两到三倍的利息。“苏晓禾说,“一个年收入五万块的人,贷款三万,年化利率从5.6%变成14%——你算算他要多付多少钱?两千四百多块。那是一个孩子半年的生活费。”
方明沉默了一会儿。“你的数据我看了。确实……但你想想,如果我们对所有用户都按同一个标准来,那才是公平。你不能因为一个人来自某个地方,就给他特殊待遇。那对其他用户不公平。”
“标准本身就是不公平的,“苏晓禾说,“一个靠习俗维持了完美还款记录的群体,在你们的模型里被判定为’高风险’——因为他们的收入低。但收入低不代表信用差。你们把’还款能力’和’还款意愿’混在一起了。”
“没有混,“方明说,“V8.0里还款行为的权重仍然是最高的。只是加了收入和资产作为修正。”
“修正的结果是分数下降156分。”
方明叹了口气。“晓禾,这件事到此为止吧。你的备忘录我会存档,但V8.0按原计划上线。你的那个地域文化因子的建议……如果以后有合适的机会,我会再提的。”
苏晓禾站起来,走到门口,又转过身。
“方哥,“她说,“你有没有想过一个问题?”
“什么?”
“我们做算法的人,总觉得算法是中立的。数据进去,分数出来,中间没有人为干预。但算法的设计本身就是一种干预——我们选择用什么特征、给什么权重、优化什么目标函数,每一步都是人的选择。”
她停了一下。
“V8.0的目标函数是什么?是最小化违约率。但如果我们把目标函数改成’最大化用户长期福利’呢?结果会完全不一样。”
方明看着她,眼里有一种她没见过的东西。也许是敬佩。也许是无奈。也许两者都有。
“你说得对,“他说,“但’用户长期福利’不是一个可以量化的指标。而’违约率’是。”
“所以我们选择了可以量化的东西,而不是正确的东西。”
“我们选择了可以交差的东西,“方明说,“这是打工人的宿命。“
十三
苏晓禾走出会议室,没有回工位。
她去了公司的天台。十八楼的天台是吸烟区,但她不抽烟。她只是想站在高处看看这座城市的灯。
深圳的夜景从不让人失望。南山区的写字楼群像一片发光的水晶森林,每扇窗户后面都坐着一个和她一样的人——对着屏幕,处理着数据,做着看起来重要但其实自己也不确定有没有意义的工作。
远处是深圳湾,对岸的香港在雾气中若隐若现。再远处是南海,海的那边是更远的地方。会宁县在两千公里之外,但此刻她觉得它比香港更近。
她掏出手机,打开那个三维可视化的截图。红色的数据云在手机屏幕上凝固成了一个静态的图像,但她知道那底下有河流在流动,有人在走动,有羊在吃草。
她突然想到一件事。
她可以用自己的方式保存这片草原。
不是用备忘录,不是用报告,不是用公司内部的任何一个系统。这些都会被覆盖、被删除、被遗忘。
她可以用代码。
十四
接下来的一周,苏晓禾每天晚上回到出租屋后都会打开电脑,写一个项目。
她把这个项目命名为”草原地图”。
它不是一张真正的地图。它是一个网页——用D3.js和Three.js构建的交互式可视化工具。你打开这个网页,会看到一片由数据点构成的草原。每个数据点代表一个人——不是真实的人,而是从那三千七百多个数据中抽象出来的模式。草的颜色根据还款率渐变,风的流动方向对应转账关系的走向,河流的形状是社交网络的拓扑结构。
她没有用任何真实的个人数据。所有数据都经过了匿名化和泛化处理,只保留了统计特征和模式。她甚至故意加入了一些随机噪声,让每一个数据点都不可逆指向任何真实的人。
这不是数据泄露。这是一个故事。
一个关于一群人如何在算法的缝隙中维持着古老的信用的故事。
她把这个网页部署在GitHub Pages上,没有告诉任何人。
但她知道,总有一天会有人看到它。
十五
V8.0在二〇二六年一月十五日正式上线。
上线当天,苏晓禾坐在工位上,看着仪表盘上的数据实时滚动。全国两亿用户的信用评分在几个小时内被重新计算了一遍,分数像潮水一样涨落。
一线城市用户的平均分上涨了8个点。三四线城市用户基本持平。农村和县城用户平均下降了34个点。
会宁县的cluster:平均下降149个点。比她预测的少了7个点——因为模型在最后时刻做了一轮微调,加入了一个”还款历史”的衰减因子,让长期保持良好记录的用户不至于掉得太惨。
但149个点仍然是致命的。
她打开后台,看到了这些用户的新贷款条件。额度从平均8万降到了2.3万。利率从年化5.6%升到了12.8%。
她想象了一下王桂兰——编号001——在工厂宿舍里打开手机,看到自己的贷款额度从8万变成了2万时的表情。她可能不会愤怒。她可能只是叹一口气,然后把手机放下,继续站到流水线上去。
她不会知道这一切发生的原因。她不会知道在两千公里之外,一个叫苏晓禾的女程序员曾经试图阻止这一切。
十六
上线后的第三天,苏晓禾收到了一封邮件。
发件人是公司的合规部门。标题是:《关于你近期在内部系统中的数据查询行为》。
邮件里说,她的电话回访和数据导出行为被内部审计系统标记了。虽然她用了”模型验证”的名义,但回访问题中包含的”如果额度降低会对您产生什么影响”这个问题,超出了模型验证的范围,涉嫌”向用户暗示未来产品变更”。
邮件要求她在三个工作日内提交书面解释。
苏晓禾读了三遍。
然后她打开一个新文档,开始写解释信。
她没有辩解。她只写了一段话:
“我的行为超出了模型验证的范围,这是事实。我进行回访的原因是:在数据分析过程中,我发现V8.0对特定用户群体存在系统性偏差,我想了解这种偏差如果生效,会对这些用户的实际生活产生什么影响。回访结果已经附在技术备忘录中。我认为,了解我们的算法对真实世界的影响,是数据分析师的职业责任。”
她把信发给了合规部门。
然后她开始更新简历。
十七
离职手续在二月初办完了。
苏晓禾没有在深圳找下一份工作。她买了一张火车票,从深圳西站出发,坐了二十六个小时的硬卧,到兰州,再转大巴到会宁。
大巴在黄土高原的山路上盘旋,窗外是连绵的灰色丘陵,偶尔有几棵杨树光秃秃地站在路边。二月的风很硬,刮在脸上像砂纸。
她到了外婆家的村子。
外婆已经去世两年了。老房子被舅舅锁了起来,门前那棵歪脖子枣树还在,只是枝丫比她记忆中更稀疏了。
她站在院子里,看着那棵树。
风从山谷里吹来。干燥的、带点碱味的、被太阳晒过的风。和记忆里一模一样。
她掏出手机,打开”草原地图”的网页。三千多个数据点在屏幕上缓缓旋转,像一片红色的云悬浮在黄土之上。
她把手机举起来,对准了远处的山。屏幕上的数据云和真实的山峦重叠在一起——虚拟的草原和真实的黄土,在手机屏幕的框里合成了同一个画面。
那一刻,她觉得那个算法没有完全失败。
V8.0也许会降低这些人的评分,也许会提高他们的利率,也许会让王桂兰和张秀英和李春花在深夜里多叹几口气。但算法永远无法计算的一件事是:这些人之间的信任关系,比任何评分模型都更坚固。
它会弯曲,但不会断裂。
就像黄土高原上的草根——地表看起来贫瘠得什么都没有,但扒开干裂的土层,底下是密密麻麻的根须,互相缠绕着,在干旱中活着。
十八
苏晓禾在村口的小卖部门口坐了一个下午。
小卖部换了主人。马叔三年前去世了,现在是他儿子马军在经营。马军比苏晓禾大几岁,她小时候跟他一起在村里疯跑过。
“你回来干嘛?“马军给她递了一瓶水。
“看看。“她接过水,“你爸那个记账的本子还在吗?”
马军愣了一下,然后笑了。“你还记得那个?”
“记得。”
“在呢,“他指了指柜台后面,“我留着呢。不是用来记账了——现在都用微信。我留着是因为……”他想了想,“那是我爸的命。他那一辈子就靠那个本子。谁欠他多少,他欠谁多少,一笔一笔都记着。你说那算什么?”
“信用评分。“苏晓禾说。
马军没听懂。
“没什么,“苏晓禾笑了笑,“你说的对。那是一本命。”
她喝了一口水,望着远处的山。夕阳把黄土染成了金色,像一张巨大的旧纸被灯照亮。
她想起了数据可视化里那片草原。红色的、橙色的、在三维空间中缓缓旋转的数据云。它不是真正的草原,但它指向真正的草原。
就像地图不是领土,但地图让领土变得可见。
她来会宁,不是为了改变什么。V8.0已经上线了,三千七百多个人的评分已经降了,贷款利率已经升了。她改变不了这些。
她来,只是因为她想亲眼看看——那些在数据里被标注为”高风险”的人,在现实中是什么样的。
答案是:他们和她记忆中一模一样。
皮肤粗糙,手指皲裂,笑起来露出发黄的牙齿。他们不善言辞,不会在会议上展示PPT,不懂什么是联邦学习。但他们知道一个最简单的道理——借了钱,就得还。
这个道理不需要算法来教。
尾声
三月,苏晓禾回到深圳,进了一家做金融科技伦理咨询的小公司。公司只有十二个人,挤在南山区一个共享办公空间里,连独立会议室都没有。
她的新工作是帮金融机构审查AI模型的公平性——检查模型是否对特定群体存在系统性偏见,如果有,提出修正建议。
薪水比之前少了三分之一。但她觉得自己第一次在做一件有意义的事。
“草原地图”的网页偶尔会有人访问。她能看到访问日志——大部分来自搜索引擎,搜索词包括”数据可视化""信用评分""算法公平”。
有一天,她收到了一封来自陌生人的邮件。邮件很短:
“我是一个来自甘肃的数据科学研究生。我在写一篇关于算法偏见的论文,无意中发现了你的网页。我不知道那些数据点代表什么,但它们让我想起了我家乡的草原。谢谢你。”
苏晓禾读了好几遍。
然后她打开电脑,在”草原地图”的代码里加了一行注释:
// 这片草原不属于任何人。它只是一个提醒:在每一个数据点的背后,都有一片真实的土地。
她保存了文件,推送到GitHub。
窗外,深圳的夜景依然灯火通明。两千公里之外,会宁县的黄土高原在夜色中沉默着。而在某个看不见的维度里,三千七百二十一个数据点继续缓缓旋转着,像一片永远不会消散的红色草原。
它们不知道自己是草原。
它们只知道自己是数据。
但苏晓禾知道。
这就是她写下这个故事的原因。
(全文完)