悬浮的基准线
悬浮的基准线
一
林深在凌晨三点十七分发现了那个异常。
不是因为他特别敏锐——他只是恰好失眠。金融城的程序员失眠是职业病,就像矿工的矽肺,咖啡师的胃炎,或者外科大夫的颈椎病。你不会因此获得同情,只会获得一盒褪黑素和一句”早点睡”。
他的屏幕上铺满了数据,像一条被剖开的河。
他负责的项目叫”天秤”,是鸿信科技为某城商行定制的信用评分系统。简单说,就是用机器学习模型给每个人打分:650分以下拒绝贷款,650到720分是普通客户,720分以上是优质客户,800分以上是传说中的”白金客户”——银行会主动打电话求你借钱。
这套系统已经运行了十四个月。准确率稳定在93.7%左右,坏账率控制在1.2%以下,客户满意度87.3分。所有数字都漂亮得像杂志封面上的模特——精致、对称、无可挑剔。
但今夜,林深在例行检查时发现了一个问题。
准确率从93.7%变成了93.73%。
多出来的0.03%,精确地、不偏不倚地,来自城南的莲花区。
林深盯着这个数字看了五分钟。0.03%在任何统计模型里都算不上什么,它落在置信区间之内,完全可以用随机波动来解释。换了任何一个正常的、不失眠的、不偏执的程序员,都会翻过这一页,关上电脑,回到床上,闭上眼睛。
但林深不是一个正常的程序员。
他点开了莲花区的详细数据。那是一个老旧的城区,城市规划里的”待改造区域”,常住居民以退休工人和小商贩为主。在天秤系统的评分分布里,莲花区一直是最低的那一档——平均分582分,绝大部分人连贷款门槛都摸不到。
但就在过去七天里,莲花区的平均分从582涨到了585。
三天,三分。
林深调出了更细的时间线。分数不是均匀上涨的,而是在每天凌晨三点到四点之间,出现一个微小的跳变。每次跳变只有0.1到0.2分,但方向一致——永远向上。
他把这个发现截了图,发到了工作群里。
然后他等了十分钟。
没有人回复。
凌晨三点四十分的工作群里只有沉默。他打了哈欠,关上电脑,回到床上。窗外的金融城灯火通明,那些灯火背后有无数台服务器在运转,在计算,在给这座城市的每一个人打分。
林深闭上眼睛的时候,忽然想起一件事:莲花区没有他的数据源覆盖。
那里没有智能电表,没有联网摄像头,连手机信号的覆盖率都低于全市平均水平。天秤系统对莲花区的评分,主要依靠三个数据维度:银行流水、社保记录和消费数据。
但莲花区的大部分居民,这三个维度的数据都极其稀薄。
那0.03%的准确率提升,从何而来?
他带着这个疑问睡着了。
二
第二天上午的站会上,没有人提到那条消息。
项目经理周琳在讲本月的KPI:坏账率要压到1%以下,审批速度要提升15%,模型迭代要赶在月底前完成v2.3版本的上线。她说话的时候用激光笔指着PPT上的图表,红色的光点在数据曲线上跳来跳去,像一只焦躁的萤火虫。
林深等她说完,举了手。
“莲花区的数据有异常。”
周琳看了他一眼。她的眼神里有一种精确的疲惫,是那种连续加班三周之后才能修炼出来的东西。
“什么异常?”
“准确率在过去一周上升了0.03%。只在莲花区。而且分数在凌晨三点到四点之间有规律性的跳变。”
“0.03%?“周琳的声音里没有嘲讽,但也没有认真。她只是在确认这个数字是否值得一分钟的时间。“这个在正常波动范围内吧?”
“问题是莲花区的数据源覆盖率很低。模型不应该能在那个区域产生这么稳定的提升。”
“也许是什么新的数据源接入了?你去查一下数据管道。”
会议继续。林深打开了笔记本电脑,开始查数据管道。
数据管道是天秤系统的大动脉。它从各个渠道采集数据——银行流水来自合作银行,消费数据来自支付平台,社保记录来自政务接口,还有一些补充数据来自三大运营商的位置信息和上网行为。所有数据经过清洗、脱敏、标准化之后,流入特征工程模块,最终喂给模型。
林深逐条检查了莲花区的数据流入记录。
过去七天,莲花区的新增数据条目数没有任何异常。每天大约12000条,和前一个月完全一致。数据来源分布也正常——银行流水占62%,社保占23%,消费数据占11%,其余4%是补充数据。
没有新数据源。没有异常流入。一切看起来都和以前一样。
但准确率确实在上升。
林深决定去莲花区看看。
三
莲花区在城南,从金融城开车过去要四十分钟。林深开的是一辆二手的比亚迪,电动车,安静得像一条鱼。他穿过三条高架桥,绕过一个正在施工的地铁口,最后拐进了一条窄得只能过一辆车的巷子。
巷子两边是六层的老楼房,外墙的涂料已经剥落了一半,露出底下灰色的水泥。一楼是小店铺:修鞋的、卖水果的、理发的、做铝合金门窗的。一个老头坐在理发店门口,手里拿着一把电动推子,给另一个老头剃着极短的平头。两个男人之间没有对话,只有推子嗡嗡的声音,像某种古老的仪式。
林深把车停在巷口,走进去。
他不是来做田野调查的——至少不完全是。他只是想看看,那些数字背后的人长什么样。他每天处理几百万条数据记录,每条记录都对应一个真实的人。但他从未见过其中任何一个。
第一个引起他注意的是一家水果店。
店面很小,只有十几平米。门口堆着几箱苹果和橘子,里面是香蕉、葡萄和一些他叫不出名字的热带水果。店主是个五十多岁的女人,穿着一件灰色的棉布外套,正在用一把旧秤称苹果。
旧秤。不是电子秤。
林深停下了脚步。他看着那把秤——铁制的,有一个圆形的表盘,指针在重量变化时微微晃动。女人把苹果放上去,看了一眼指针,然后报了一个价格。顾客掏出手机扫码支付。
这一幕本身并不稀奇。稀奇的是,在天秤系统的数据里,这家水果店的月均流水是23000元。但一个用旧秤、只有十几平米、门口堆着几箱苹果的水果店,在莲花区这种地方,真实的月流水能有多少?
林深走过去,买了两斤苹果。
“十五块。“女人说。
他扫了码,付了钱。然后在支付记录里看到了商户名:莲花水果店。注册号对上了。
他走远了,又回过头看了一眼。女人已经坐回了店里的一张小板凳上,拿出一副老花镜,开始看手机。她的手机屏幕很大,像是一台老年机。
林深打开了天秤的后台——他有管理员权限。他输入了商户名,查到了这家店的所有数据。
流水记录显示,这家店在过去三个月里,每个月都有23000元左右的流水。但其中有一笔很奇怪的转账:每周二凌晨三点,会有一笔23.7元的收入,来源标注为”其他”。
23.7元。每周二凌晨三点。
这个数字太小了,小到几乎不可能被注意到。如果不是林深恰好盯着凌晨三点的数据看,他永远不会发现它。
他继续查。莲花区的其他商户也有类似的模式:每周固定一天的凌晨三点到四点之间,会有一笔微小的收入或支出,金额从十几元到几十元不等。这些交易的对手方都指向同一个账户——一个个人账户,户主名叫”赵碧英”。
赵碧英。林深在系统里搜这个名字。
查到了。女,74岁,莲花区常住居民,退休工人。社保记录正常——每月3200元退休金。银行流水极其简单:每月5号进账3200元,然后在接下来的三十天里慢慢花掉。没有贷款记录,没有信用卡,没有投资。
一个普普通通的七十四岁老太太。
但她每周都会在凌晨三点,和莲花区的各个商户产生微小的资金往来。
林深决定去找她。
四
赵碧英住在莲花区中部的一栋老楼里,三楼,302室。楼道里没有电梯,灯泡坏了两个,墙上的小广告贴了一层又一层,像地质学家眼中的岩层。
林深爬上三楼,在302室门前站了一分钟。门是木头的,漆面已经发黄,门把手上挂着一个布袋子,里面装着一棵葱。
他敲了敲门。
没有人应。
他又敲了三下。
门开了。
开门的就是赵碧英。她比林深想象中要矮一些,穿着一件紫色的毛衣,头发花白但梳得很整齐。她的眼睛很亮,是那种看过很多东西之后仍然保持好奇的眼睛。
“你找谁?”
“赵阿姨,我是鸿信科技的,做了一个信用评分系统。想跟您了解一些情况。”
“信用评分?“她歪了歪头,“我不借钱。”
“不是要您借钱。就是想问问,您每周二凌晨三点,会做一些转账?”
赵碧英的表情没有变化。她看着他,像是在衡量什么东西。然后她把门拉开了一些。
“进来吧。”
房子很小,一室一厅,但收拾得很干净。客厅里有一台老式电视机,一张木头桌子,两把椅子。墙上挂着一幅十字绣,绣的是荷花。桌子上有几个橘子,和一沓用橡皮筋捆起来的收据。
赵碧英给他倒了一杯水。是白开水,用搪瓷杯子装的。
“你说的那些转账,“她坐下来,“是我帮邻居们交的费。”
“交费?”
“水电费、电话费、有线电视费。有些老人不会用手机交,有些是不想用——怕被骗。我就帮他们交。”
“为什么在凌晨三点?”
赵碧英笑了一下。那个笑容很淡,像是水面上的涟漪。
“因为那时候便宜。”
“什么?”
“凌晨三点到四点,那个支付平台有个活动,交水电费打九八折。你别笑,对我们来说,每个月能省个几块钱,是很大的事。”
林深没有笑。他在想一个问题:如果赵碧英帮别人交费,那这些交易的金额会记录在她的账户上,但消费的实际是别人。在天秤系统看来,她的账户流水会显得比实际情况更”活跃”。
“所以您的账户每个月的实际流水,比系统看到的要大?”
“我不知道你们系统看到什么。“赵碧英说,“但每个月帮大家交完费之后,我的退休金还能剩下一千多。够用了。”
林深低下头喝水。搪瓷杯很烫,他吹了吹。
“赵阿姨,您帮多少人交费?”
“不固定。多的时候二三十户,少的时候十几户。都是楼里的邻居,认识的。”
二三十户。每户每月的水电费、电话费、有线电视费加起来,平均大概三四百元。二三十户就是六千到一万多元。加上赵碧英自己的消费,她账户上的月流水会超过一万四。
在天秤系统里,一个流水一万四的退休工人,和一个流水三千二的退休工人,得分差多少?
林深心里算了一下:大概40到50分。
“赵阿姨,您知道信用分吗?”
“不知道。”
“就是银行用来评估一个人能不能借钱的分数。”
“我不借钱。“她又说了一遍。
“但如果有人想借钱呢?您帮大家交费这件事,让您的账户看起来更活跃了。在系统里,您的分数会比其他不帮人交费的老人高。”
赵碧英看着他,目光里忽然有一种很深的东西。不是理解,也不是困惑。是那种见过太多世事之后,对所有抽象概念的本能警惕。
“你是说,我在帮人做好事,但你的机器把这件事变成了一个分数?”
林深沉默了几秒钟。
“是的。”
赵碧英又笑了。这次笑容比刚才大了一点。
“那你来找我,是想把我的分数调回去?”
“我……不是。我只是想搞清楚,为什么系统会产生异常。”
“异常?”
“准确率上升了0.03%。就是因为您的这些转账,让模型在莲花区的预测变得更准了。”
赵碧英站起来,走到窗边。窗户很小,外面可以看到对面楼的阳台,阳台上晒着被子和衣服。远处是金融城的轮廓,玻璃幕墙在阳光下闪闪发亮。
“你觉不觉得,“她说,“你们那套东西,看得到数字,看不到人。“
五
林深回到公司,在工位上坐了很久。
他面前是一块27寸的4K显示器,上面开了六个终端窗口,三个Jupyter Notebook,两个数据库查询界面,和一个永远收不完邮件的Outlook。这些都是他的日常工具,他每天用它们处理几百万条数据,训练模型,调参,评估,部署。
但他脑子里一直回荡着赵碧英的话。
“看得到数字,看不到人。”
他重新查看了莲花区的数据。这一次,他不再看聚合指标——平均分、准确率、坏账率。他开始看单个个体。
莲花区一共有47000多个在天秤系统中有记录的居民。林深随机抽了100个,逐个查看他们的数据画像。
他看到了这些东西:
一个叫陈大明的男人,62岁,以前在纺织厂上班。他的银行流水显示每月有一笔固定的2000元转出,收款方是一个叫”陈小雨”的人。林深猜那是他女儿。陈大明的其他消费极少——每月在便利店消费不超过200元,没有任何娱乐支出。天秤系统给他的评分是567分,原因是”收入水平低,消费模式单一”。
一个叫刘桂兰的女人,71岁。她的银行流水里每月有一笔320元的支出,收款方是”莲花区社区卫生服务中心”。此外还有一笔150元的支出,收款方是”莲花区老年大学”。天秤给她的评分是548分——比陈大明还低,因为”高频医疗支出增加信用风险”。
一个叫王浩的年轻人——至少在天秤系统里算年轻,34岁。他的银行流水比其他人都丰富:每月有工资收入8500元,有房租支出2600元,有网购记录,有外卖记录,有共享单车月卡,有视频网站会员。天秤给他打了691分——莲花区最高的分数之一。
但王浩的数据里有一个奇怪的空白:他没有任何社交转账记录。没有给父母转过钱,没有和朋友分过账单,没有任何红包记录。在一个几乎人人都在用手机支付的城市里,这种空白比异常更令人不安。
林深看了整整一个下午。
到下班的时候,他得出了一个结论:天秤系统对莲花区的评分,在统计学意义上是”正确”的——它的预测确实和实际还款行为高度相关。但这种”正确”建立在一种根本性的误解之上。
天秤系统把”低收入”和”高风险”画了等号。它把”高频医疗支出”和”信用恶化”画了等号。它把”消费模式单一”和”还款能力不足”画了等号。
但在莲花区,低收入不等于高风险——因为这里有赵碧英这样的人,用自己的退休金帮二三十户邻居缴费,形成了一张看不见的互助网络。高频医疗支出不等于信用恶化——因为刘桂兰们虽然每月看病,但从来不欠费。消费模式单一不等于还款能力不足——因为陈大明们的钱不花在自己身上,而是寄给了远方的女儿。
系统不是错的。它只是看不到另一面。
就像一张照片的底片。
六
接下来的几天,林深开始做一件在他的工作职责之外的事情。
他每天下午四点半下班之后,开车去莲花区。他把这叫做”数据校准”,但实际上,他只是在和那些被他的系统评分的人说话。
他去了陈大明的家。那是一间不到四十平米的房子,家具都是上世纪九十年代的款式,但保养得很好。陈大明给他泡了一杯茶——不是那种办公室里的一次性纸杯茶,而是用紫砂壶泡的,正山小种。
“我女儿在北京,“陈大明说,“做互联网的。每个月给她转两千,她不要,我说你不要我就去北京找你,当面给你。她就收了。”
“她做什么工作?”
“写代码的。和你一样吧?”
林深笑了笑。“差不多。”
“那你知道,写代码的人加班多,吃饭不规律。我让她每个月拿这两千块钱去吃点好的。她肯不肯听是另一回事。”
林深问他知不知道信用分。陈大明摇了摇头。
“不知道。我活了一辈子,从来不借钱。有多少花多少。”
“如果您想借钱呢?比如说,想装修一下房子?”
陈大明看了看自己的家。“这房子挺好的,不用装修。”
他又笑了,指了指墙上一张照片。那是一个年轻女人的照片,穿着格子衬衫,站在一栋写字楼前面。
“她公司楼下拍的,“陈大明说,“寄给我的。”
林深看着那张照片。照片里的女人笑得很开心。他忽然想到,在天秤系统的数据里,陈大明的2000元转出被标记为”常规支出”,对评分的贡献是负面的——因为它减少了可用余额,降低了”财务弹性”指标。
一个父亲给女儿的汇款,在系统眼里是一种风险因素。
他去了刘桂兰的老年大学。那是一间社区活动室改的教室,墙上贴着学员们的书法作品。刘桂兰在学国画,画的是竹子。她的手有点抖,但落笔很稳。
“老了才学,“她说,“年轻的时候没时间。”
“您身体还好吗?”
“还行。就是血压高,每个月去开一次药。”
“医疗费贵吗?”
“有医保,自己出不了多少。三百多块钱吧。”
在天秤系统里,刘桂兰每月320元的医疗支出被标记为”高频医疗消费”,是拉低信用分的因素之一。
但实际上,她只是每月去开一次降压药。
他找到了王浩。那个34岁的年轻人住在一栋改建的公寓里,房间很小,但很整洁。书架上摆满了技术书籍,桌上放着两台显示器。
“我在做独立开发,“王浩说,“接一些外包项目。收入还行,但不稳定。”
“为什么没有社交转账记录?”
王浩看了他一眼。“你查我的数据?”
“不是故意的。在检查系统的时候看到了。”
王浩沉默了一会儿。“我的朋友不多。父母在老家,他们不会用手机。我每个月给他们寄现金,去邮局寄的。”
邮局汇款。在天秤系统的数据世界里,邮局汇款是透明的——它不会出现在任何数字化的数据流中。
“所以你的父母在系统里看不出来?”
“看不出来。他们连智能手机都不太会用。”
林深明白了。王浩的信用分691,是莲花区最高的之一。但他的高分不是因为他的信用真的更好——而是因为他的生活恰好更”数字化”。他的每一笔消费都留下了数字痕迹,系统可以完整地追踪他的经济行为。
而陈大明和刘桂兰们的信用分低,不是因为他们的信用更差——而是因为他们的生活有太多部分发生在系统的视野之外。
赵碧英每周二凌晨三点的转账,是莲花区极少数”溢出”到数字世界的行为之一。她的互助行为被系统捕捉到了,但系统并不理解这些行为的含义——它只是把它们当作普通的数据点,喂进了模型。
这就是那0.03%的来源。
不是系统变聪明了。是赵碧英们的真实生活,恰好泄露了更多信息到系统里,让模型对莲花区的预测变得更准了一点点。
七
林深花了三天时间写了一份报告。
报告的标题是《数据可见性与信用评估偏差:以莲花区为例》。他把报告发给了周琳,同时抄送了技术总监老杨。
报告的核心观点是:天秤系统对低收入社区的评分偏低,不是因为这些社区的居民信用更差,而是因为他们的经济行为有更大比例发生在数字化系统之外。这导致模型能捕捉到的”好行为”更少,而能捕捉到的”风险因素”(如低收入、高频小额医疗支出)被不成比例地放大。
他提出了三个建议:第一,对低收入社区的数据稀疏性进行校正,在评分时给予”数据缺失”一个正向的权重;第二,将社区互助行为(如赵碧英的代缴费)纳入正面评估因素;第三,增加线下数据采集渠道,比如邮局汇款记录、社区物业缴费记录等。
周琳在收到报告后十分钟就打来了电话。
“你这几天是不是天天往莲花区跑?”
“是。”
“花了多少时间?”
“大概每天两三个小时。”
“你手上的工作进展怎么样?v2.3的模型训练完了?”
“还没有。但我觉得——”
“林深,“周琳打断了他,她的声音很平静,但有一种不可商量的质感,“你的报告我看了。写得不错。但你现在要做的事情是完成v2.3的上线。莲花区的事情,你可以提一个JIRA ticket,放到下个迭代里。”
“下个迭代是两个月后。”
“那也是下个迭代。”
林深想说什么,但最终什么都没说。他知道周琳不是坏人——她只是在一个更大的系统里运行,那个系统的KPI和截止日期就像天秤系统的评分规则一样精确,一样不可商量。
他挂了电话,打开了JIRA,建了一个ticket。标题是”低收入社区数据偏差校正”。优先级:低。
然后他开始训练v2.3的模型。
八
模型训练需要四十八小时。
在这四十八小时里,林深的电脑嗡嗡作响,GPU风扇全速运转,像一个正在发烧的病人。他坐在工位上,盯着进度条,偶尔喝一口咖啡,偶尔看一眼手机。
手机上有一条微信消息。来自一个不认识的号码。
“林先生,我是赵碧英的邻居。她让我告诉你,明天下午老年大学有画展,你要是有空,来看看。”
林深回复了一个”好”字。
他不知道赵碧英为什么叫他。也许她不是叫他——也许她叫了所有来过莲花区的人。也许在她的世界里,一个来问过信用分的年轻人,和一个来送过快递的小伙子,没有什么区别。
但他还是去了。
画展在莲花区老年大学的教室里举行。教室被重新布置过了,墙上挂满了学员们的作品。大部分是国画——竹子、荷花、梅花、山水。也有一些书法作品,写的是唐诗宋词和毛泽东诗词。
刘桂兰画的那幅竹子被放在一个显眼的位置。林深站在那幅画前面看了很久。
那不是一幅完美的画。竹竿的比例有点失调,叶子的浓淡过渡不够自然,落款处”桂兰”两个字的最后一笔微微发抖。
但它有一种真实感。那种真实感不是来自技巧,而是来自画它的人——一个每月花320元买降压药的七十一岁老太太,在老年大学的教室里,一笔一笔画出来的。
赵碧英也在。她没有画画,但带了一盘自己做的糕点。
“你来了,“她说,像见到一个普通的邻居。
“来了。”
“吃块糕。绿豆的。”
林深拿了一块。糕很甜,是那种老式的甜,不加任何代糖或添加剂。
“赵阿姨,“他说,“我上次跟您说的那个系统,我把您的情况写成报告了。”
“然后呢?”
“他们会考虑。但可能要等一阵子。”
赵碧英点了点头,好像对这个答案毫不意外。
“你知道这条巷子里有多少户人家?“她忽然问。
“不知道。”
“六十三户。我在这儿住了四十多年了。每一户我都认识。张家的大儿子在深圳开工厂,李家的媳妇去年得了乳腺癌,王家的小孙子刚考上大学。你那个机器,知道这些吗?”
“不知道。”
“那你那个机器,凭什么给他们打分?”
林深咬了一口糕。绿豆馅在嘴里化开。
“它打分的依据是数据。银行流水、消费记录、社保信息。”
“数据。“赵碧英重复了一遍这个词,像在咀嚼一颗不认识的糖果。“张家大儿子每个月给他妈寄三千块,你那个数据看得到吗?”
“如果通过银行转账就能看到。”
“他寄的是现金。装在信封里,用快递寄的。”
“那看不到。”
“李家媳妇治病花了十几万,但她老公一个人打两份工还清了。你那个数据看得到她老公打两份工吗?”
“如果两份工作都有社保记录就能看到。”
“第二份是夜里在工地上搬砖,没有社保。”
“那看不到。”
赵碧英看着他。她的眼睛很亮。
“那你告诉我,你那个系统,到底在评什么?”
林深沉默了很长时间。
教室里很安静。墙上挂着的国画在下午的阳光里显得柔和。窗外有人在喊叫,是两个小孩在追逐玩耍。
“在评它能看到的那些东西。“他最终说。
赵碧英没有接话。她只是慢慢地点了点头,像一个听到了意料之中答案的人。
九
v2.3模型训练完了。
准确率从93.7%提升到了94.1%。坏账率从1.2%降到了1.08%。审批速度提升了18%。所有KPI都达标了。
周琳在站会上表扬了林深。她说”v2.3的模型质量非常出色”,还说他”展现了很强的技术执行力”。
林深说了谢谢。
他没有提莲花区。
那个JIRA ticket还躺在backlog里,优先级仍然是”低”。没有人为它分配时间,没有人把它拖进任何一个sprint。
但林深继续在做他的”数据校准”。
他每周去两次莲花区。他认识了更多的人——修鞋的老张头,卖早点的刘姐,开五金店的老陈,还有老年大学的国画老师,一个退休的美术编辑,叫孙德明。
他开始在笔记本上记录这些人的故事。不是数据,是故事。比如老张头的修鞋摊已经开了三十年了,三十年来价格只涨过一次——从一块钱涨到两块钱。比如刘姐每天凌晨四点起床和面,五点半出摊,卖到上午九点,然后去菜市场买菜,下午在家休息,晚上十点睡觉。比如老陈的五金店其实是整条街上最早使用电子支付的商户——他在2014年就贴了支付二维码,因为”年轻人都不带现金了”。
这些故事不会出现在天秤系统的数据库里。它们没有结构化的字段,没有标准化的格式,不能被转化为特征向量喂进模型。
但它们是真实的。
林深开始意识到一个问题:天秤系统不是在衡量信用。它是在衡量”被数字化的程度”。
一个人越数字化——越频繁地使用电子支付,越多的消费在网上完成,越完整的信息在数据库里留下痕迹——他的信用分就越高。
一个人越传统——越依赖现金交易,越少使用互联网服务,越多的生活发生在系统的视野之外——他的信用分就越低。
这不是一个技术问题。这是一个世界观问题。
天秤系统的世界观是:数据即真实。没有被记录的事情就没有发生过。没有被量化的人就不存在。
但莲花区的世界观是:人与人之间的关系才是真实的。你帮邻居交了十年的水电费,你给远方的女儿寄了二十年生活费,你在凌晨四点起床和面让邻居们能吃上热包子——这些事情不需要被记录在数据库里,它们活在人们的记忆里,活在社区的肌理中。
两种世界观之间,隔着的不是技术差距,而是一条基准线。
那条基准线浮在空中,随着数据的风向轻微摇摆。
十
变化发生在一个意料之外的地方。
一天晚上,林深在家里看数据。他注意到莲花区的评分分布又开始变了——但这次不是上升,而是波动。分数在某个区间内来回震荡,幅度很小,但频率很高,像一根被拨动的琴弦。
他调出了更详细的日志,发现了一件奇怪的事:系统在自动调整莲花区的评分权重。
这是v2.3新加的一个功能——自适应权重调整。简单说,就是模型会根据最新的数据反馈,自动微调各个特征维度的权重。比如,如果某个维度的预测能力下降了,模型会自动降低它的权重;反之则提高。
这个功能在测试环境里表现良好。但林深没有预料到的是,它在莲花区产生了一个意想不到的效果。
莲花区的数据太稀疏了。在数据稀疏的环境下,自适应权重调整会放大噪声——它会抓住一些随机波动,把它们当作信号,然后据此调整权重。这导致模型的评分在莲花区变得不稳定。
换句话说,模型在”努力”理解莲花区,但它的努力方向是错的。
它像一个人在黑暗中摸索,碰到了一个物体的边缘,就以为那是整个物体。它不知道,在它碰不到的地方,还有更大的、更复杂的、更丰富的世界。
林深写了一个补丁。补丁的逻辑很简单:在数据覆盖率低于某个阈值的区域,关闭自适应权重调整,回退到静态权重。
他把补丁提交了代码审查。
审查他代码的是一个叫李明的同事。李明看完补丁后,在代码评审里留了一条评论:
“这个阈值是怎么确定的?覆盖率低于30%就关闭自适应,有什么理论依据?”
林深回复:“没有严格的理论依据。这是一个启发式规则。莲花区的覆盖率是28%,低于30%。”
李明:“30%这个数字太随意了。需要做A/B测试验证。”
林深知道李明是对的。从工程角度来说,任何没有经过验证的阈值都是随意的。但他也知道,在A/B测试完成之前——那至少需要一个月——莲花区的评分会继续在噪声中震荡。
那些震荡对金融城的KPI来说微不足道。但对莲花区的47000个居民来说,每一次震荡都意味着他们的信用分在变——而信用分决定了他们能不能贷到款,能不能办信用卡,能不能在这个越来越依赖数字评价的世界里获得最基本的金融服务。
林深没有回复李明。他做了另一件事。
他在自己的笔记本电脑上搭建了一个独立的评分模型。这个模型只针对莲花区,使用了他在”数据校准”过程中收集的 qualitative 数据——不是结构化的数据库记录,而是他对那些居民的了解:谁在帮谁交费,谁在照顾生病的家人,谁在社区里口碑最好,谁从不欠任何人一分钱。
这些信息不能被量化。它们不是特征向量,不能被喂进任何标准化的模型。但它们是真实的。
林深用了一种非常原始的方法:他给每个人写了一段描述。不是分数,不是评级,而是一段话。比如:
“陈大明,62岁,退休纺织工人。每月给在北京工作的女儿寄2000元。消费极简,从不借贷。信用特征:高度稳定,极低风险。原因:他对钱的态度是’有多少花多少’,这种态度比任何高收入都更能保证还款。”
“刘桂兰,71岁,退休教师。每月固定支出320元医疗费(降压药),150元老年大学学费。信用特征:高度规律,低风险。原因:她能坚持十多年每月按时缴费,说明她有极强的计划性和执行力——这是还款能力最好的预测指标。”
“王浩,34岁,独立开发者。每月通过邮局给父母寄现金。信用特征:收入波动大但支出极其规律,中低风险。原因:他的收入不稳定是职业特性,不代表还款意愿或能力差。他按时给父母寄钱的行为,是还款意愿的强信号。”
他写了四十七段描述。每段两三百字。总共花了他三个晚上的时间。
这四十七个人不是莲花区的全部,甚至不是有代表性的一组。他们只是林深在”数据校准”中认识的人。但他们的故事让林深看到了天秤系统永远看不到的东西——人的真实面貌。
十一
一个星期后,发生了一件让林深意外的事。
赵碧英给他打了一个电话。
“林先生,你能来一趟吗?”
“怎么了?”
“社区里有人想贷款。但银行不批。他们说你那个系统给的分数太低了。”
林深沉默了几秒钟。“谁想贷款?”
“老张头。修鞋的那个。他孙子要上大学了,学费不够。想贷三万块。”
老张头。林深在笔记本上翻到了他的记录:张德福,68岁,修鞋三十年,每天早上七点出摊,晚上六点收摊。收入不固定,平均每月约3000元。没有银行贷款记录,没有信用卡,消费几乎全部使用现金。
天秤系统给他的评分:523分。
523分。远低于650分的贷款门槛。
“赵阿姨,523分确实很难贷到款。”
“那你能把分数调高吗?”
“我不能手动调整个人的评分。那违反系统规则。”
赵碧英沉默了一会儿。
“那你那个系统,是不是出错了?”
“从系统的角度来说,没有出错。它按照既定规则运行,523分是老张头数据的准确反映。”
“但从你的角度呢?”
林深想了很久。
“从我的角度来说,“他说,“系统没有出错。但系统看到的东西太少了。”
“那怎么办?”
“我不知道。”
他挂了电话,在工位上坐了十分钟。然后他做了一件事——一件他知道可能会给自己带来麻烦的事。
他打开了自己的独立模型,找到了张德福的描述,然后写了一封邮件,发给了城商行信贷部的负责人。
邮件的主题是《关于莲花区居民张德福的信用评估补充说明》。邮件内容很简短:
“张德福,68岁,莲花区居民。天秤系统评分523。但该评分未纳入以下信息:1)张德福在莲花区经营修鞋摊三十年,从未有过逃单、欠费记录;2)莲花区商户和居民对张德福的评价极高,他是社区中信誉最好的人之一;3)张德福此次贷款用途为孙子大学学费,金额三万元,以他的收入水平,分三年偿还完全可行。
“建议在信贷审批时参考以上补充信息。”
他按下了发送键。
十二
邮件发出去之后,有两件事几乎同时发生。
第一件事:张德福的贷款批了。
不是三万,是两万五。利率比正常高了一个百分点。期限两年。条件不理想,但够用了——够他孙子交第一年的学费和住宿费。
第二件事:林深被叫去了周琳的办公室。
“你给信贷部发了一封邮件?“周琳的表情不是愤怒,而是一种更复杂的东西——介于困惑和失望之间。
“是的。”
“你知道这是什么行为吗?”
“我知道。”
“你绕过了系统,用个人判断影响了信贷决策。这在合规上是有问题的。”
“我知道。”
“那你为什么还要做?”
林深看着周琳。她的办公室在二十三楼,窗外是金融城的天际线。从这个角度看出去,莲花区在南边,被一排高层建筑挡住了,完全看不到。
“因为系统看不到老张头。”
“系统不需要看到老张头。系统只需要看到他的数据。”
“但他的数据不完整。”
“没有人的数据是完整的。这就是为什么我们用概率模型,而不是确定性的判断。模型会在不完整的信息下做出最优估计。”
“但如果这个最优估计本身就是有偏的呢?”
周琳沉默了一会儿。她站起来,走到窗边,看着窗外。
“林深,“她说,“我理解你的感受。但你不能因为同情一个人,就绕过系统。系统的存在是有原因的——它保证了公平性和一致性。如果你允许人为干预,那下一个被干预的人可能是你的亲戚,你的朋友,或者出价最高的人。”
“我没有因为同情他。我是因为系统的评估有缺陷。”
“每个系统都有缺陷。我们能做的是不断改进它,而不是绕过它。”
“改进的速度太慢了。那个ticket还在backlog里。”
“那就在backlog里等着。这是流程。”
林深没有再说什么。他知道周琳说的有道理——流程之所以存在,是因为没有流程的世界更糟。但他也知道,在流程运转的每一个月里,莲花区的老张头们都在继续被低估、被拒绝、被排除在金融系统之外。
没有人会因此而死。但有人会因此活得更难。
他走出了周琳的办公室,回到了自己的工位。
十三
接下来的两个月里,林深做了两件事。
第一件是他的本职工作。他完成了v2.4版本的需求分析和技术方案设计。新版本的主要改进是引入了”替代数据”——用一些非传统的数据源来补充传统信用评估的信息不足。比如:电信缴费记录、公用事业缴费记录、零售消费频率、社交网络活跃度等。
这些替代数据可以帮助系统更好地评估那些传统数据稀薄的客户——比如莲花区的居民。
第二件事是他在业余时间做的。他继续每周去两次莲花区,继续和居民们交谈,继续在笔记本上记录他们的故事。但他开始把那些故事转化为一种新的数据格式。
不是数字。不是分数。而是关系图。
他用图数据库(graph database)的方式,把莲花区的社区关系结构化了。每个节点是一个人,每条边是一种关系。边有不同的类型:亲属关系、邻里关系、经济互助关系、信任关系。每条边还有一个权重——代表关系的强度。
比如:赵碧英和张德福之间有一条”经济互助关系”的边,权重很高,因为赵碧英每周帮老张头缴费。陈大明和他的女儿陈小雨之间有一条”亲属经济关系”的边,权重也很高。刘桂兰和老年大学之间有一条”社区参与”的边。
当他把这个关系图画出来的时候,他看到了一个天秤系统永远看不到的结构:莲花区不是一个由孤立个体组成的集合,而是一个紧密相连的网络。在这个网络里,信息和资源通过人际关系的边流动,形成了一种自发的、非正式的信用体系。
赵碧英是这个网络的一个关键节点。她连接了二三十户家庭,她的”信用”——如果可以用这个词的话——不是来自她的银行余额或消费记录,而是来自她在社区中的位置。她是一个枢纽,一个中继站,一个让信息和资源得以流通的节点。
如果她愿意为某个人担保——用她在社区中积累了四十多年的信誉——那这个人的信用就不仅仅是523分。它应该是赵碧英的信誉和网络中所有与这个人相连的节点的信誉的加权和。
这是一个完全不同的信用评估范式。
林深把它叫做”社区信用网络”。
他写了一篇论文。不是发在学术期刊上的那种——他没有那个资格,也没有那个耐心。他写的是一篇内部技术报告,发在了鸿信科技的技术博客上。
标题是《当信用从社区中生长:一个基于关系图的替代信用评估框架》。
报告发表的那天晚上,林深在莲花区的小巷里走了一圈。他走过赵碧英的楼下,窗户亮着灯。他走过老张头的修鞋摊,已经收了,只剩下一个空空的铁架子。他走过刘桂兰的老年大学,教室的灯关了,但门口的宣传栏上还贴着画展的海报。
他忽然有一种很奇怪的感觉——不是成就感,也不是满足感。是一种更安静的东西。像是在一条河的岸边站了很久,终于看到了水面下的暗流。
十四
报告发表后的第三天,林深接到了一个电话。
打电话的人叫王伟,是鸿信科技的联合创始人兼CTO。
“林深是吧?你的那篇报告我看了。”
林深的心跳加速了一拍。“谢谢。”
“我不是来表扬你的。我有一个问题。”
“您说。”
“你的社区信用网络,理论上很漂亮。但你怎么验证它?你怎么证明基于关系图的信用评估比基于传统数据的评估更准确?”
“需要数据。莲花区的实际贷款和还款数据。”
“我们没有那些数据。莲花区的贷款通过率不到5%,样本量太小。”
“所以需要先做一个小规模的试点。在莲花区放开一部分贷款,用社区信用网络来做评估,然后跟踪还款情况。”
王伟沉默了几秒钟。
“你知道这意味着什么吗?”
“意味着要用一种未经充分验证的方法来做信贷决策。”
“对。这有风险。”
“但继续用现有系统,对莲花区来说也有风险——他们永远贷不到款。”
电话那头又沉默了一会儿。
“你多大?“王伟忽然问。
“二十九。”
“二十九。“他重复了一遍。“我在你这个年纪的时候,也做过类似的事情——为了一个技术理想,绕过流程。结果搞砸了一个项目,差点被开除。”
“那您后来怎么做的?”
“后来我学会了在流程之内推动改变。慢一点,但稳一点。”
“如果流程本身就拒绝改变呢?”
“那就创建一个新的流程。”
王伟挂电话之前说了一句话:“你的报告我会认真看。别做蠢事。”
林深把手机放回桌上,看着窗外。金融城的夜景一如既往地灯火通明。那些灯火背后有无数台服务器在运转,在计算,在给这座城市的每一个人打分。
但此刻他看到的不是分数。
他看到的是灯火之下那些看不见的线——人与人之间的关系,信任,承诺,和那些从未被记录在数据库里的善意。
那些线没有颜色,没有重量,不能被数字化。
但它们支撑着整座城市。
十五
一个月后,鸿信科技启动了一个内部孵化项目,名字叫”莲瓣”。
项目的目标是:基于社区关系网络,开发一个针对低数据覆盖率区域的信用评估工具。林深是项目负责人。
项目很小。只有三个人——林深,一个叫小赵的数据工程师,和一个叫阿依古丽的算法研究员。预算很少,时间线很长,没有KPI压力。
但林深觉得,这已经是他能做到的最好结果了。
他最后一次去莲花区,是项目启动的那天。
他没有告诉任何人他要去。他只是开车过去,把车停在巷口,走进去。
他先去了赵碧英的家。她正在阳台上浇花——几盆绿萝和一棵栀子花。看到他,她放下浇水壶,走到门边。
“你的那个东西,做出来了吗?”
“在做了。但需要时间。”
“多久?”
“也许半年。也许一年。”
赵碧英点了点头。“我们不急。我们等了一辈子了,不差这一年。”
他去了老张头的修鞋摊。老张头正在给一双皮鞋上线,动作很慢但很稳。他的工具摊在地上——锤子、钉子、胶水、几把不同大小的刀。
“张叔,孙子上大学了吧?”
老张头抬起头,认出了他。“上了。在武汉。学计算机的。”
“那挺好。”
“嗯。“老张头低下头继续上线。“你那个分数的事,我听赵姐说了。你在帮我们?”
“我在试。”
“试就比不试强。”
林深笑了笑。他蹲下来,看着老张头的手。那双手布满了老茧和疤痕,指甲缝里嵌着黑色的鞋油。这是一双工作了三十年的手,每一道纹路都是时间和劳作的记录。
天秤系统看不到这双手。
但他看到了。
他站起来,走出巷子,开车回金融城。
路上经过一条高架桥。高架桥下面是一条河——不宽,水也不清,两岸是杂草和垃圾。但河水在流。不管河面有多脏,不管两岸有多乱,水在流。
林深忽然想到,信用就像这条河。
它不是从天上掉下来的,也不是从数据库里长出来的。它从人心中流出,流过人与人之间的关系,汇聚成溪,汇聚成河。有时候它会被堵塞——被偏见、被无知、被系统的盲区。但只要有人还在帮邻居交费,还在给女儿寄钱,还在凌晨四点起床和面,这条河就不会断。
他回到了公司。屏幕上还是那些数据,那些代码,那些永远跑不完的模型。
但他看它们的眼光不一样了。
每一条数据背后都是一个人。每一个人背后都是一张网络。每一张网络背后都是一条河。
河流不会停止。
基准线永远不会固定。
它会浮动,会摇摆,会因为一阵风、一滴雨、或者一个赵碧英在凌晨三点按下的转账按钮而微微偏移。
但那正是它活着的样子。
尾声
六个月后,“莲瓣”项目完成了第一版原型。
原型在莲花区进行了小规模测试。测试结果显示,社区信用网络对还款行为的预测准确率达到了91.2%——低于天秤系统的94.1%,但考虑到测试样本只有137人,这个数字已经足够说明问题。
更重要的是,莲瓣系统覆盖了天秤系统无法评估的32%的莲花区居民——那些数据太稀薄、在天秤系统中得分为零的人。
王伟在项目评审会上说了一句话:“这是第一步。”
林深知道,从第一步到最后一步之间,还有很长的路。路的两边会有质疑、阻力、失败、妥协。会有更多的周琳告诉他”放到下个迭代”,会有更多的李明要求他”做A/B测试”。
但他也知道,莲花区的人会等。
他们已经等了一辈子了。
他们还可以继续等。
但至少现在,有人在往前走。
哪怕每一步只有0.03%。
(全文完)