用大模型做金融数据分类分级:12轮实验、3次打脸,最硬的结论全是负面的"

admin 2026-10-15 11:46:39 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

用大模型做金融数据分类分级:12 轮实验、3 次打脸,最硬的结论全是负面的

原创

Yu
Yu

TJXFire

2026年10月10日 14:57
江西

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

全文约 6600 字,预计阅读 18 分钟。面向数据安全、数据治理与 AI 落地从业者。数据来自某金融机构两个业务系统的真实元数据,已按约定脱敏。


零、先说清楚这件事是什么

如果你不做数据安全,\"数据分类分级\"这六个字可能有点陌生,但它是过去几年国内几乎所有持牌金融机构、国企和大型平台都必须完成的一项工作。

它要回答的问题很朴素:你们库里的每一个字段——客户手机号、交易金额、日记账行号、服务器 IP——分别属于哪一类数据?重要程度是几级?是不是敏感数据?

为什么必须做:《数据安全法》确立了数据分类分级保护制度,金融行业还有专门的标准(如 JR/T 0197《金融数据安全 数据安全分级指南》)。定完级之后,加密、脱敏、访问控制、出境评估、留痕审计这些要求才有落脚点——级别是所有后续管控措施的挂载点。级别定错,后面全错。

为什么它难:难点不在概念,在量。一家中型金融机构,几十个业务系统、几万到几十万个字段,靠人一个个判。判的人不同,结果就不同;判完还要定期复核。这是典型的\"规则清楚但工作量大、且高度依赖判断\"的活——看起来正是大模型该上场的地方。

那它到底行不行?这就是这个项目要回答的。

这个项目的起点

一家金融机构,两个业务系统,合计 85179 行元数据——所谓元数据,就是\"这个库里有哪些表、表里有哪些字段、字段的注释写的是什么\"。

没有样本值。一条真实数据都看不到。出于合规要求,数据内容不能出库,我们能拿到的只有字段名和注释。这是很多单位的真实处境,也是这个项目最关键的约束:不能看数据,只能看字段说明,还要判断它是什么。

机构已经有一份人工做的分类分级台账,可以当真值(ground truth)用。但这份台账本身有多少噪声,没人知道。——记住这句话,它是后面整个故事的引信。

五个术语,读这篇够用了

类目:这个字段属于哪一类数据(如\"交易基本信息\"\"财务会计信息\"\"个人信息\")。 级别:数据的重要/敏感程度,本项目用的体系分若干级,级别越高管控越严。 台账:机构现有的那份人工标注结果,本文把它当作对照基准之一。 敏感召回:真正该被标为敏感的字段里,有多少被识别出来了。漏判就是没识别出来的那部分——这是分类分级里代价最高的错误。 Kappa 系数:衡量两个人(或两套结果)一致程度的统计量,扣除了\"瞎蒙也会碰对\"的部分。0.6 以上通常被认为\"较好\",0.8 以上才叫\"很好\"。

这篇讲什么

从这个起点,到最后写成一篇论文,中间跑了 12 轮实验(我按 P0 到 P11 编号)。

这篇按真实顺序讲完整过程,包括三次把自己打脸的经过——其中一次花了两千多次 API 调用,最后净成果为零。

那三次才是最值钱的部分。

一、第一个发现:这件事的工作量被高估了一个数量级

P0 做数据底座的时候,顺手做了一个统计,结果让整个项目的目标直接改了。

我们检查\"级别\"和\"类目\"之间的关系,发现:

85179 行里,只有 5 行的级别偏离了它所属类目的应有级别。 敏感标又是级别的确定性函数——零偏离。

翻译成人话:只要判出类目,级别和敏感标查表就能得到,不需要单独判断。

这个发现让预测目标从\"三个任务\"坍缩成\"一个任务\"。更重要的是它的现实含义:很多单位把分类、定级、打敏感标当成三件事分三轮做,实际上只有第一件是真正需要判断的,后两件是映射关系。

如果你们单位正在按三件事排工期,可以先跑一下这个统计。方法很简单:按类目分组,看每组内部的级别取值是不是唯一。

顺带也发现了台账的问题,这构成了后面所有事情的背景:

  • 库级标签只有单一取值(等于没标)
  • 表级与列级标注仅 48% 一致
  • 18.6%

的同名字段级别冲突
* 49.8%

的跨系统类别冲突
* 抓到真实误标:CLIENT_SECRET、SECRETKEY 被标成第 2 级;折旧费用、资产残值被标成非敏感

这些数字当时被当成\"数据质量问题\"记下来,后来才发现理解错了。 这是第二次打脸的伏笔。

二、传统方法:全线崩盘

P1 做了五档基线:多数类、字段名字典、规则+字典、TF-IDF 分类器。

切分方式是留一系统交叉验证(用一个系统训练,在另一个系统上测),同时在系统内按判定单元切分,杜绝泄漏。

结果:跨系统 Macro-F1 最好的一档只有 0.087。

这不是\"效果不好\",是根本不能用。原因也很清楚:两个系统的字段命名习惯、业务语义、类目分布几乎不重叠,字典和统计特征学到的东西换个系统就完全失效。

这一步的价值不在于结论本身,而在于它确立了评测口径:以后任何方法,都必须在\"没见过这个系统\"的前提下证明自己。这个口径后来救了我们好几次——因为很多看起来有效的东西,一换系统就现原形。

三、大模型级联:第一次看到希望

P2 上大模型。架构是规则层 + LLM 级联:

  • 规则层先处理确定性的部分(覆盖 34%,另有 17% 做抑制)
  • 剩下的交给大模型,带脱敏出域 + 少样本检索 + 76 类的 prompt
  • 模型用的是境内的 DeepSeek(境外 API 默认拒绝,数据出境合规是硬约束)

P3 把 76 个类目归并成 18 个(零跨级别合并,不改任何一行的级别),P4 跑两折交叉验证。

结果对比:

敏感召回 漏判敏感 低估率 类目 MacroF1
LLM 级联 66.06% 3453 4.24% 0.24
最好基线 19.32% 8208 9.47% 0.18

最有说服力的是其中一折:财务总账那一侧的训练数据里几乎没有个人信息字段,模型在另一个系统上的敏感召回仍然有 69%。

这支撑了一个对落地很重要的判断:不需要见过同类样本,只要有清晰的类目定义,模型就能判。 对于\"我们没有标注数据所以做不了\"的单位,这条是关键。

到这里为止,一切顺利。然后开始连续打脸。

四、第一次打脸:模型自报的置信度是废的

P6 想做人机分流——让模型把没把握的挑出来给人复核。最自然的做法是用模型自报的 confidence 排序。

结果是这个信号完全不能用:

  • 54.6% 的样本,confidence 恰好等于 0.9。

分布近似常数,根本没有区分度。
* 校准是非单调的

:0.9–0.95 这一档的敏感漏判率 61.6%,反而高于 0.8–0.9 档的 36.6%。也就是说,模型越\"自信\"的那一档,错得越多。
* 按置信度升序复核的提升倍数只有 0.86–1.36,与随机抽查基本没有区别。

如果你正在用模型自报的置信度做复核排序,这件事大概率没有产生任何价值。 它看起来很科学——有分数、能排序、能画图——但它和随机抽一样。

替代方案不是没有:自洽性投票(同一条问多次看分歧)、规则层的风险位,都比自报分数可靠。但自报分数必须先被排除掉,否则后面所有人机协同的设计都建立在沙子上。

五、第二次打脸:漏判的原因,跟我想的完全相反

同样在 P6,我们把 3453 条漏判逐条归因。

原本的假设很合理:元数据信息太少,模型没法判——字段没注释、ERP 弹性域字段名零语义(SEGMENT、ATTRIBUTE 这类),这些应该是漏判主力。

实际结果:

  • 无注释的:2 条(0.1%)
  • ERP 弹性域的:113 条(3.3%)
  • 其余 96.7% 发生在注释完整、字段名有语义的字段上

假设被直接推翻。漏判不是信息不足。

那是什么?继续拆,答案是口径分歧,而且高度集中:

  • 财务会计 1656 + 管理会计 472 + 税务 142 + 金额 136 + 财务支出 38 = 2444 条,占 71%
  • 开发类数据 715 条,占 21%
  • 合计 92% 集中在三个类目上

这是一个边界问题,不是能力问题。

于是判断变了:不需要换更强的模型,需要把这三个类目的边界说清楚。 这个判断听起来完全正确,也确实是对的——但接下来花了三轮实验、两千多次调用才发现,\"说清楚\"这件事做不到。

六、第三次打脸:最贵的一次,也是最有价值的一次

P8 的设计很直接:既然是边界问题,那就在 prompt 里写三条边界硬约束(B1、B2、B3),专治那三个类目对的混淆。

第一轮结果好得惊人:

臂 敏感召回 漏判 敏感精确 误报
A 基线 59.92% 1047 72.49% 594
C 加边界约束 75.50% 640 52.35% 1795

敏感召回 +15.58pp,漏判少了 407 条。三个目标类目的原类目命中率从 8.16% 涨到 47.32%,5.8 倍。

看起来找到金矿了。然后做了一件很多人会跳过的事:把每一条改判拆开,看它到底是\"修复了漏判\"还是\"制造了误报\"。

  • B2

(系统运维数据 → 开发类数据):修复 320,误报 0,净 +320
* B1

(交易基本信息 → 财务会计信息):修复 4,误报 760,净 −756
* B3

(元数据信息 → 管理会计信息):修复 2,误报 314,净 −312

结论完全翻转:

  • B1 迁移了 764 条,其中 760 条是误报。

我原本在报告里写它\"是想要的方向\"——错得离谱。
* 全部收益几乎来自 B2 一条

,它零误报。
* B1 + B3 合计制造了 87% 的误报。

那就简单了:删掉 B1、B3,只留 B2,应该能拿到 +320 且几乎无代价。

这个推论是错的,而且错得很彻底。

同一段文本,效果从 +320 变成 0,再变成消失

我们跑了两个收窄版本。B2 的文本一个字都没改。

版本 条款 B2 方向的效果
v1 三条都有 +320
v2 删 B3,B1 收窄 ≈0 (该迁移方向几乎消失)
v3 只留 B2 完全消失

更离谱的是 v3。只留一条窄条款,结果冒出来两个与 B2 毫不相干的迁移方向:交易基本信息 → 财务会计信息 354 条(0 修复 / 354 误报,而 B1 明明已经被删了)、财务会计信息 → 系统运行信息 332 条——后者是降级方向,只在这一臂出现,直接制造新漏判。

v3 成了五臂里最差的一臂:敏感召回比基线还低 11.60pp,漏判 +303。

结论:在这个任务上,prompt 里的约束不能当作可独立增删的模块。 逐迁移归因能准确描述\"这一臂内部发生了什么\",但不能用来预测\"改了条款之后会发生什么\"。约束之间相互影响,是一个整体,不是可加的零件。

三轮实验、约 2400 次调用,净可落地成果为零。

七、补刀:连\"省钱版\"也被证伪了

P8 结束时还剩一个假设:v1 的收益,会不会根本不是\"消歧\",而只是三条激进指令共同造成的整体上提偏置?

证据看起来支持这个猜测——v1 的收益集中在召回(+15.58pp)而精确率大跌(−20pp),这正是\"整体调高判定阈值\"的典型形态。

如果成立,那就有个好消息:同样的效果可以用零 API 成本的后处理规则复现,而且可控、可回滚。

P11 就是去验证这件事的。设计上特意防了自证:规则从一折推导,在另一折评测,绝不在同一批数据上既选规则又报指标。

两种失败方式:

一是能复现偏置,但性价比差一倍多。 敏感召回 +18.40pp,漏判少 390,但误报多了 2568,代价函数反而变差。救回与误报之比约 1 : 6.6,而 v1 是 1 : 3。

二是规则完全不跨系统泛化。 反方向推导出来的三个类目,在另一个系统里根本不会被预测出来,于是上调前后指标一字未变。这和 P1 里传统基线跨系统崩塌是同一个病:规则绑在类目上,而两个系统的类目分布几乎不重叠。

力度曲线从阈值 200 扫到 −1000,每一档都比不做上调更差。

于是得到一对互补的负面结论:

  • 不可分解

(P8):约束的效果无法归因到单条,无法预测组合结果。
* 不可替代

(P11):其效果也无法用确定性后处理复现,说明它不是简单的阈值偏置——模型读到边界条款后确实做了某种真实的判别。

工程含义很硬:这条路要么整体照搬 v1(连同它 52% 的敏感精确率一起接受),要么放弃。没有中间态——不能拆开挑好的用,也不能用零成本手段模拟。

八、转折:那个数字终于来了

前面所有实验都有一个共同的隐含前提:存在一个\"对\"。

模型类目准确率 58%,听起来很差——差在哪里?和什么比?默认答案是和 100% 比。

于是我们做了一件很少有单位会做的事:把台账放到一边,请人重新标一遍。

具体做法是从全量数据里分层抽了 799 个字段,做成标注包发给专家,让他在不看台账的前提下,按类目体系独立判定。

P7 是第一位专家的结果:专家与台账只对上 54.94%,Kappa 0.4412。当时的结论写的是\"类目体系的人工可复现性不达标\"。

但只有一位标注人时,无法区分\"体系边界不清\"和\"这位标注人口径特殊\"。必须补第二位。

P10,第二位专家的结果回来了:

两位受过训练的专家,背对背标同一批字段,类目一致率 67.96%,Cohen's Kappa 0.6012。

这个数字改变了前面所有指标的读法。

模型的类目准确率不该和 100% 比,该和\"两个人独立判只能对上 68%\"比。P7 那个 0.44 也要修正——它是专家与台账之间的值,含标注人个体漂移;专家之间的真实上限是 0.60。

这件事的意义超出这个项目本身。绝大多数单位验收分类分级的方式是\"抽检若干字段,看填得对不对\",而这个做法有个从未被验证过的前提:存在一个\"对\"。如果两位同样受过训练、同样看着你们类目体系文件的人会给出不同答案,那\"抽检对不对\"本身就不成立——抽检结果取决于抽检人是谁。

所以在评价任何工具、模型或团队产出之前,先量一量你们自己的人和人之间能对上多少。这个数是所有后续讨论的地基。

顺带说一句,为什么必须是背对背:两人互相不知道对方答案,也都不知道台账怎么标的。一旦有人先看到了台账,测出来的就不是一致率,是从众率。

九、最诚实的一段:模型并没有赢

拿到两位专家的结果后,我们取了共识子集——两位专家类目判定一致的 543 条(占 68.0%),这是目前最干净的真值代理。

在这个子集上评:

  • 模型

:类目 58.64%|级别 89.32%|敏感召回 71.32%|敏感精确 83.62%|漏判 39
* 人工台账

:类目 68.14%|级别 85.82%|敏感召回 67.65%|敏感精确 74.19%|漏判 44

模型在级别和敏感维度略优,在类目维度略劣。但做了显著性检验之后:

  • 敏感召回 McNemar p = 0.4421
  • 类目准确 p = 0.7770

全都不显著。

这意味着一句话:模型与现行人工口径打平,谈不上超越。 这和 P7 用一位专家时的结论一致,而且更可信。

我知道写成\"大模型超越人工\"会好看得多,也更容易传播。但 p = 0.44 就是 p = 0.44。在这个位置上让步一次,整篇论文的可信度就全没了。

还有一个必须同时说明的边界条件:共识子集天然偏易(两个专家都能对上的,本来就是好判的),绝对值系统性偏高,只有模型与台账的相对高低可比。

十、写论文时,砍掉了一个自己的结论

最后说一个和写作有关的决定。

项目里有一条设计决策:保留 76 类的 prompt(归并只用在评测层和输出层)。依据是 P5 的消融实验——\"连 prompt 一起归并会让敏感召回下降\"。

写论文时回头核对这条证据,发现它很弱:

  • 两折平均敏感召回 66.06%(保留 76 类)对 65.31%(直接 18 类),只差 0.75pp
  • 而且在财务总账那一折上,18 类反而更好——漏判更少,MacroF1 也更高
  • 优势只在另一折上成立

第三个系统客户确认不会提供,第三折的路断了,没法再验证。

按常规操作,这种情况写成\"实验表明保留 76 类更优\"也不会有人质疑——差异是正的,方向是对的。

但我们最后的处理是:如实写成证据不足。

论文和对外材料里都不得写\"P5 证明保留 76 类更好\",只能写成:两折结果方向不一致,差异 0.75pp,证据不足以支撑任一方向,现行实现沿用 76 类属工程惯性,不是实验结论。

一个方向不一致、差异 0.75pp 的结果,本来就不该被叫做\"证明\"。 这种地方守不住,后面那些真正扎实的结论也会变得可疑。

十一、真正能落地的东西,反而最便宜

跑了 12 轮实验,最有落地价值的发现不在模型那一侧。

第一件:口径文档能直接买到一致率。

第二轮标注的说明页里,我们新增了 8 条类目边界澄清。效果是立竿见影的:

  • 与台账的整体一致率:专家 1 是 54.94%,专家 2 是 61.58%,+6.64pp
  • 第一轮出现的四个系统性漂移类目全部收敛
  • 专家 2 与模型的一致率 61.04%,远高于专家 1 的 41.81%

两页纸的口径说明,换来 6.64 个百分点。 对比一下:我们在 prompt 上折腾了三轮、两千多次调用,净收益是零。

第二件:台账修订工单。

173 条(21.7%)是\"两位专家意见一致、且都与台账不同\"——这是\"台账该改\"最有力的证据类型,其中 45 条是专家判得更高(台账疑似漏保护)。这份清单可以直接当工单派下去。

另外在全量数据上,模型高置信但与台账不一致的有 7762 行,其中模型判得更高的 4943 行——疑似台账漏保护,可作为复核优先队列。

十二、如果你要复现这件事

按时间顺序,这是我认为最省事的做法:

  1. 先算\"级别是不是类目的函数\"。

一条 SQL 的事,可能直接帮你砍掉三分之二的工作量。
2. 先做台账质检,别急着上模型。

库级标签是否单一取值、表级与列级是否一致、同名字段是否级别冲突——这三项能暴露大部分问题。
3. 两位标注人背对背,先量人类一致率上限。

没有这个数,你后面所有指标都在和一个不存在的 100% 比。
4. 评测口径必须是跨系统的。

同系统内的好成绩没有意义,换个系统就崩。
5. 把钱花在口径文档上,不是调 prompt 上。

前者 6.64pp,后者两千次调用换零。
6. 任何改判都要拆成\"修复\"和\"制造误报\"两类看。

只看总指标,你会把 760 个误报当成功劳。

总结:负面结论为什么值钱

这个项目最终写进论文的核心内容里,有一半是负面结论:

  • 模型自报置信度不可用于人机分流
  • 漏判不是信息不足,是口径分歧
  • prompt 约束不可分解、不可组合、不可预测
  • 其效果也不可用确定性后处理替代
  • 模型与人工口径打平,未超越

这些结论没有一个能让人兴奋。但它们有一个共同特点:每一条都能帮别人省掉一段弯路。

模型自报置信度那条,能帮一个团队省下整套人机分流的设计工作;prompt 不可分解那条,能让人不必重复我们那两千多次调用;而\"两个专家只对上 68%\"那条,能让一个单位第一次知道自己的验收标准立在什么上面。

这个领域不缺方法论 PPT,缺的是有人把真做下去会撞到什么如实写出来。 负面结论恰恰是最稀缺、也最没人愿意写的东西——因为它不好看。

最后回到最开头那个问题:大模型到底能不能做数据分类分级?

这个项目给出的回答是有条件的:能做,但它现在的位置不是\"替代人\",是\"和现行人工口径打平,且能把台账里最该改的地方挑出来\"。 在 8.5 万行的规模上,这个位置已经很有价值——它意味着人可以从\"逐条判\"变成\"审可疑项\"。

但它做不到的事同样明确:它的上限被类目体系本身的清晰度卡住,而不是被模型能力卡住。这也是为什么两页纸的口径文档能换来 6.64 个百分点,而两千次 prompt 调用换来零。

而如果你只记住一句,我希望是这句:

在你知道人能做到多少之前,任何关于\"准不准\"的讨论都是空的。

数据核验截至 2026-10-10 · 各行业规范不同,口径以本单位与主管部门要求为准


用大模型做金融数据分类分级:12轮实验、3次打脸,最硬的结论全是负面的" 网络安全文章

用大模型做金融数据分类分级:12轮实验、3次打脸,最硬的结论全是负面的"

本文记录用大模型对金融数据分类分级的12轮实验,核心结论多为负面:传统基线跨系统失效,模型级联敏感召回66%但置信度不可用,漏判主因是类目边界而非信息不足,prompt约束不可独立增删,后处理规则无法复现效果。最终发现两位专家背对背标注一致率仅68%,模型表现需与人工一致性对比而非100%。建议先测量人工标注一致性再评价工具。
被黑7小时没发现!运维拼命重启服务器!黑客都急了!" 网络安全文章

被黑7小时没发现!运维拼命重启服务器!黑客都急了!"

软银旗下云服务商IDCFrontier遭勒索软件攻击,致495家企业及地方政府机构受影响,东日本第1区域部分云服务器停止运行。攻击者声称7分钟完成加密,但运维人员7小时后仍未发现勒索信,应急响应能力遭嘲讽。公司已成立紧急对策总部,与软银联合应急,建议受影响客户依靠备份恢复业务并准备新运行环境。
英国电商ASOS遭黑客入侵!百万用户手机收到勒索通知" 网络安全文章

英国电商ASOS遭黑客入侵!百万用户手机收到勒索通知"

英国时尚电商ASOS于2026年10月8日确认遭黑客入侵,攻击者通过社会工程学骗取员工凭证,入侵其第三方云端数据平台及APP推送系统,窃取用户姓名、联系方式及行为数据,并利用官方渠道推送勒索通知。事件暴露第三方生态数据安全与员工账号风控短板,ASOS已封禁系统并配合调查,建议企业加强第三方平台权限管理与员工安全意识培训。
评论:0   参与:  0