一条判定刻度被分成左右两段,两侧用不同深浅的色块表示落错的代价

一、同一根阈值线,两侧掉下去的东西不一样重

据公开报道,有厂商更新支持文档,宣布由系统自动识别年龄不满十八岁的用户并切换到青少年版体验。它的技术内核是一句推断:根据手里这些信号,这个账号大概率没有成年。推断就会出错,最容易被忽略的是,两类错的重量并不相同。

第一类是把成年人判成未成年。用户的直接感受是”我少了些东西”:能力被降级、内容看不到、交易做不了。代价集中在打扰、误解与信任流失,而且可逆,纠正后功能面能回来。这类差错发现得快,用户当场就知道,问题暴露在客服队列里而不是事故报告里。

第二类是把未成年用户判成成年。表面一切正常,没有提示,用户继续正常使用。代价出现在事后:内容暴露、消费与打赏、社交场景的风险,以及随之而来的合规责任。影响面不止用户本人,还包括其家庭与第三方,很多后果无法靠恢复状态抵消。

两类差别至少落在四个维度:后果严重度、可逆性、影响面由谁承担、暴露时点是当场还是事后。四个维度都不对称,拿一个总准确率调这根线,方法上就站不住。尤其在需要保护的那群人占比很小时,把所有人一律放行也能得到很高的总准确率。常见的失败模式是:把一个二元判定接进业务,只用一个指标汇报。替代做法是两侧分开报,把代价写成评审会上能被逐项质疑的结构。

二、三类信号的可解释性与误伤面不是一回事

可用于年龄推断的信号大体分三类,差别不在准不准,而在误伤时落在谁身上、事后能不能说清。

  1. 用户自报。最直白、最可解释,也是唯一适合作为事实输入的一类。但它对填写动机不设防,当作唯一依据等于把判定交给对方愿不愿意配合。正确用法是当必要输入而非充分依据,由后续信号触发核验。
  2. 行为特征。用语风格、活跃时段、内容偏好、互动结构。最大问题是分布重叠:成年用户里相当一部分人的行为形态与青少年相似,会被同一套特征打到。这类误伤最难解释,审核的人回答不了”系统凭什么认为你不够大”,申诉就成了无凭据的自证。
  3. 账号与设备的关联线索。同一设备上的其他账号、支付通道类型、注册时间结构。它容易与家庭共用、轮班共用这类使用结构混淆,把”多人共用一台机器”读成”使用者年龄小”。

三者定位必须分开:自报值承担基线,行为特征只用来产生需要核验的候选名单,设备与账号线索只作辅助、不得单独定级。还要留一条字段纪律:模型输出的只能是一个估计值,连同它依据的信号集合与算法版本,不能写成用户属性字段。属性会被下游当成事实引用,估计值必须带着置信来源与版本号,这决定了半年后回看时还能不能复原当时为什么这么判。

三、核心交付物:双向差错的代价矩阵与阈值设定方法

代价矩阵要能被评审,就得把代价拆成可打分的列。下表是建议的字段结构,评分由产品、法务与风控共同给,不由算法团队单独定。

差错方向 直接后果 承担方 可逆性 暴露时点 严重度档 允许的处置动作上限
成年人被判未成年 能力降级、内容不可见、交易被拦 用户与平台,主要是信任流失 可逆,纠正后可回滚 当场 中 可降级,但必须给出可见提示与即时申诉入口
未成年被判成年 接触受限内容与高风险功能、消费风险 用户本人、家庭、平台与第三方 多数不可逆 事后 高 不允许静默放行,高不确定区必须走核验
落在不确定带内 用户不清楚自己处于哪一档 用户与客服 可逆 数日内 中低 默认取较轻限制,附说明与复核路径

阈值设定按五步走,顺序不能反。

  1. 先定处置档位,再定阈值。把限制拆成对具体动作的开关,而不是划出一个用户状态。高风险动作收紧、一般能力放宽,比来回推一根线有效。
  2. 阈值由两侧代价比推出。不可逆的一侧多要一次确认,可逆的一侧多给一点回旋,理由要写进设计文档。
  3. 强制保留不确定带。判定值落在带内时既不直接降级也不直接放行,而是走核验或保守默认。没有灰区,等于把灰区全部送给代价更高的一侧。
  4. 分群统计。按设备类型、使用时段、地域、账号存续时间分层分别看两类差错比例,不看全站平均。总体可接受而某个分群严重偏斜,是最常见的上线事故形态。
  5. 变更治理。阈值与信号权重的调整都要跑分群回归、小比例灰度、保留一键回退,并在生效前告知用户。改一个数字不需要发版,但需要发通知。

上线后盯四个指标:两侧误判率分别报,不合并;申诉成功率,它是误伤率最直接的代理;不确定带占比,异常膨胀说明信号在退化;被降级的能力有多少真被使用过,用来检验限制清单是否写宽。

四、把限制摊开:功能面、界面状态与提示措辞

判定生效后用户面对的是一组具体变化,绝大多数争议来自这组变化没被完整说清。

功能面要按动作列清单,至少分三档:完全关闭的能力、被降级的能力、能力保留但内容范围收窄的部分。分档要落到接口与字段,而不是靠前端把按钮藏起来,那会留下界面看不见、接口照样能调的裂缝,测试覆盖不到也查不到源头。

界面状态与真实判定必须一致,这里有两个方向的坑。一个是为了少挨投诉,把限制写成”该功能暂不可用”,用户以为是故障,反复重启、重装、找客服,而真正的判定从头到尾没被说出口。另一个是把推测显示成已认证状态,之后的纠正成本全转给客服。两种都比直说更贵。

提示措辞要能回答三个问题:系统做了什么判断、依据哪一类信号、你现在可以做什么。不写”你未满十八岁”这类绝对化表述,写成”根据账号现有信息,系统按某某模式提供服务”,并把申诉入口直接放在这条提示上。

还有一条容易漏掉:限制不只改变用户能看什么,也改变请求被哪条分支接住。降级若由切换链路或配置项实现,这些分支要在评测里各留用例并定期跑,否则会出现开关开着、输出毫无变化的静默失效,而它在监控里不可见。

五、核心交付物:申诉通道字段与时限要求

申诉通道的质量不体现在有没有入口,而体现在被误判的人能不能在有限步内走到、要交出多少东西、多久拿到答复。下表给出字段、要求与建议时限,时限值是建议起点,需按自身客服容量确认后写进对外承诺。

字段 要求 为什么必须写死
入口可达性 从限制提示可直接跳转,独立路径不超过三次操作 藏得深的入口等于没有入口,申诉量少会被误读成误判少
所需材料与收齐 最小必要,提供”没有该项材料”的替代路径;补充项受理前一次性列出,禁止逐轮追加 单一材料会把一部分真实用户永久挡在门外,逐轮追加会重置计时
受理与计时 提交即给受理编号;结论时限自材料齐备起算,三个工作日内给出 计时起点含糊,承诺就无法考核
超时未决 预定义默认状态并保留待办,不允许静默消失 系统的默认倾向是什么都不发生,这是最坏的默认
复核路径 驳回后可由不同处理人复核,并写明理由类别 同一人复核自己,通道退化为摆设
状态恢复 恢复到判定前的全部能力与历史内容,不只是解开关 只放开当前功能,等于让误判继续生效
记录留存 保留信号快照、结论与依据版本,留存期与解除期显式定义 缺快照,阈值回归与复核都无从做起
派生数据 撤销后说明因判定产生或关闭的内容、额度与关系怎么处理 不清理派生数据,纠正只做了一半

两点补充。申诉成功率要进版本评审,只看总量下降会骗人,总量下降很可能是入口更难找。人工审核要留抽样复核与处理人一致性检查,否则同一份材料在不同班次下结论不同。

六、不能猜的字段、监护人与共享设备

年龄推断一旦上线,团队很快会意识到同一套信号还能推断别的东西,这一步必须提前堵住。民族、性别认同、性取向、健康状况、宗教与政治倾向、残障状况这类属性,即使技术上能出估计值也不进入设计范围。理由不是技术难度,而是代价矩阵在这几列上完全失衡:后果不可逆、外部性极强、误判难以自证,且它们并不构成是否需要保护的判定依据。检查单上要有一行”未新增任何未被批准的用户属性推断项”。

另有两类情形是年龄推断特有的误伤来源。

其一是监护人或家庭成员代管。要定义清楚谁可以发起、覆盖哪些能力与额度、什么条件下自动解除,以及被代管的成年成员有没有知情与异议的通路。代管最容易出的问题不是权限没给,而是解除时机没定义。

其二是共享设备。一台机器多人使用是常态,家庭共用、轮班共用、门店用机、教学机房都属此类。设备级信号会把多人共用读成使用者年龄小,这是结构性误伤的主要来源。处置原则是设备级线索不单独定级,允许同一设备上不同账号各自声明,并在出现显著不同的使用模式时把设备标成多用户。

这套结构不只适用于面向个人的功能。任何用模型推断用户属性并据此做限制的场合,都能复用同一张代价矩阵和同一套申诉字段:企业 SaaS 的席位与权限推断、共享工位终端的使用者归属、按用量特征推断账户类型再定风控强度。洹拓在交付里遇到这类功能时,我们要求同时交出三样东西:分档处置的动作清单、双向差错的观测口径、申诉通道的字段与时限承诺。

判定值本身不是资产。能被核查、能被纠正、能在纠正时把状态完整还回来,才是。