ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CRITIC客观赋权法与TOPSIS综合评价法在校园贷风控中的实战

CRITIC客观赋权法与TOPSIS综合评价法在校园贷风控中的实战 校园贷风控这个事网上聊的人不少但真正把算法掰开揉碎讲透的其实没几个。今天不聊虚的直接上干货把我用 CRITIC 客观赋权法和 TOPSIS 综合评价法做校园贷客户风险评级的全过程、公式推导、踩坑记录都整理出来。这套方案不依赖主观经验打分完全从数据本身提取权重特别适合小贷平台、消费金融公司做授信审批和存量客户分层。无论你是刚入行的风控数据分析师还是想给团队引入量化决策模型的业务负责人这篇实战笔记都能给你一套可以直接抄作业的落地方案。1. 场景与方案选型为什么是CRITIC和TOPSIS做校园贷风控最核心的问题就是:平台手里只有借款人过去几个月甚至几天的行为数据没有完整的央行征信记录很多学生连信用卡都没有传统银行那套评分卡模型根本跑不起来。但又必须回答一个问题眼前这个用户到底该给多少额度、利率定多少档、要不要人工复核。这就是 CRITIC 和 TOPSIS 组合模型能发挥价值的地方。1.1 校园贷风控的痛点数据不全、样本复杂、决策要快先说痛点。校园贷的目标用户是大学生他们几乎没有历史信贷记录收入不稳定甚至为零唯一的还款来源往往是生活费、兼职或者家庭支持。这带来三个问题一是数据维度很窄拿不到征信报告只能靠用户在App内的行为数据、填写的教育信息、消费记录来评估二是欺诈风险高学生身份容易被冒用中介包装进件的情况非常多三是决策时效性要求高一笔几千万元的贷款如果审批流程拖上一两天学生早就去别的平台借了。传统做法是专家打分卡业务老手拍拍脑袋定权重。这个方法有一个致命缺陷——不同业务人员的经验维度有限容易忽略数据之间更深层的关联而且权重一旦定下来就很难调整市场环境一变模型效果直线下滑。所以我当时的选择是完全放弃主观赋权用数据说话。1.2 CRITIC法原理从数据波动和冲突里提取权重CRITIC法Criteria Importance Through Intercriteria Correlation是一种客观赋权方法。它的逻辑非常朴实评价指标体系里某个指标如果本身的数值波动越大说明它携带的信息量越丰富这个指标就越重要反过来如果某个指标和其他很多指标高度相关那说明它的信息与其他指标重叠度很高对最终评价的贡献就会打折扣。用公式表达就是两层计算。第一步计算每个指标的对比强度通常用标准差表示其中 S_j 是第 j 个指标的标准差反映指标数值的波动程度。第二步计算指标之间的冲突性用相关系数来衡量R_j 等于 1 减去指标 j 与其余所有指标相关系数的平均值。C_j 就是信息量最终权重 W_j 就是 C_j 在所有指标信息量总和中所占的比例这个思路最大的优势在于——整个过程没有任何人为干预的痕迹权重完全由历史数据驱动。每次训练新的数据权重就会自动调整不需要手动维护这在校园贷这种业务节奏飞快的场景里特别重要。1.3 TOPSIS法原理在最优与最劣之间找答案有了权重接下来的问题就是怎么把这些指标综合成一个风险评分TOPSIS法Technique for Order Preference by Similarity to an Ideal Solution的思路也很直观一个客户的风险程度取决于他距离“最优客户”和“最劣客户”有多远。距离最优理想解最近、同时距离最劣理想解最远的客户就是风险最低的好客户。TOPSIS的计算过程可以分为五步数据同向标准化、加权规范化、确定正负理想解、计算各方案与正负理想解的距离、计算综合贴近度。贴近度越接近 1风险越低贴近度越接近 0风险越高。这里有一个关键点值得说明TOPSIS不是简单的“算完距离就排序”它实际上是把多维的指标空间压缩成一个一维的排序值。这个特性让它在做客户风险分级时特别好用——因为它不需要对数据做任何分布假设无论是正常的还款用户还是恶意欺诈用户算法都能给一个合理的相对排名。1.4 为什么把这两个方法拼在一起单独用 CRITIC你只能得到权重没法对具体客户打分单独用 TOPSIS你必须自己拍脑袋定权重等于又回去了。两个方法拼在一起就形成了一个完整的风控决策链路CRITIC负责从历史数据中反思——哪些指标真正重要TOPSIS负责站在全局视角对每个人进行定位——你比所有人的最优组合差多远。我在实际项目里就是用这个组合模型给几万个存量校园贷用户做风险再分级。对比原先专家打分的方案模型识别出的高风险用户中实际发生逾期或违约的比例提高了大约35个百分点。这说明客观赋权加综合评价的综合效果远超人为判断值得花篇幅把每一步都讲清楚。2. 指标体系构建与数据预处理实战不管是 CRITIC 还是 TOPSIS都是“垃圾进垃圾出”的典型代表。模型再严谨指标体系拉胯算出来的权重再漂亮也白搭。所以这一节先聊透校园贷风控到底应该选哪些指标数据拿到手之后第一步要做什么、怎么做。2.1 校园贷客户评价指标体系怎么搭梳理指标体系前先明确一个原则评价指标必须覆盖“还款意愿”和“还款能力”两个核心维度。校园贷用户没有复杂的资产负债指标不求多但必须把这两个维度测准。我当时搭建的指标体系一共用了七个指标按业务含义分成了四类。第一类是身份信用类包括学信网认证标志和学历等级本科比专科高、985/211更高第二类是历史信贷表现类包括历史借款次数、历史逾期次数第三类是实时行为类包括近30天App活跃天数、借款频率第四类是消费能力类包括月均消费金额和购物类消费占比。考虑到尽量精简最终进入了模型计算的是以下六项指标编号指标名称指标含义类型X1历史逾期次数过去所有借款中逾期的总次数极小型越小越好X2月均消费金额近90天该用户在平台合作商家的平均月消费极大型越大越好X3近30天活跃天数近一个月登录App的天数极大型越大越好X4历史借款次数该用户近一年在平台的借款总次数中间型适中为好X5教育背景分普通本科3专科2其他1极大型越大越好X6手机号实名时长入网到当前申请日的时间单位是月极大型越大越好这里特别提醒一点X1 历史逾期次数在模型里是风险越高的表现方向和其他指标是反的。这类指标在做归一化之前必须要做正向化处理否则算出来的“客户更优”方向就是反的整个模型都会废掉。这是最容易出错、也是很多新手最容易踩的地方。2.2 数据清洗的底线操作缺失值和异常值指标确定之后数据清洗这一步千万不要跳过。校园贷数据一个显著特点是脏、乱、缺。经常出现App埋点丢失导致活跃天数不完整、用户换绑手机号导致实名时长为空、兼职收入填写随意导致消费金额失真等情况。我处理缺失值的策略是如果某个字段缺失比例超过20%直接剔除该指标低于20%的用同类用户的平均值填充。注意这里不要用全量平均值要用同一院校、同一学历等级的分组平均值因为不同学校学生的消费水平差异太大了。异常值处理上对月均消费金额做分位数截断处理超过99%分位的数值强制替换为99%分位的值防止极端值把标准差拉高进而扭曲 CRITIC 法算出来的权重。顺带说一句数据是建模的第一步也是后来影响最大的一步。如果数据口径不统一比如有的月份统计的是“近30天活跃天数”有的统计“近7天活跃天数”那算出来的权重必然失真模型上线必挂。所以每一个指标都要有唯一的SQL口径定义并且留好数据字典方便回溯。2.3 指标正向化与无量纲化处理详解模型能计算的数值必须是同向的且必须在同一量纲下。所以动手建模之前要做两件事正向化与无量纲化。正向化分三种情况。极大型指标不用动直接用原始值。极小型指标比如X1历史逾期次数用最大值减去当前值的方式做变换公式是X max(X) - X中间型指标要单独处理。以X4历史借款次数为例专家经验认为大学生一年借款在3到5次是相对健康的借太多次说明资金链紧张借贷频次奇高逾期概率直线上升一次不借虽然看着安全但用户行为数据太少也不利于盈利。假设确定最适值是 4 次那么变换公式为这样 X4 的数值就变成“0到1之间的接近程度”离适度值越近正向化后的值越接近 1。无量纲化我推荐用极差归一化法把所有指标压缩到 [0,1] 区间公式为这里要说一下为什么不建议用 Z-score 标准化。Z-score 让数据变成均值0、方差1的正态分布但会保留负值和超越1的值后续在TOPSIS计算对象与正负理想解的欧氏距离时负值会干扰贴近度的公度性尤其多指标加权后目标与理想解的距离可解释性大幅下降。极差归一化没有这个问题0-1区间本身也兼容后续所有运算而且从业务解释角度“这个用户在月均消费维度处于历史库里的80%分位”比一个负数好解释得多。3. CRITIC权重计算算法逐步拆解预处理完成下一阶段进入核心算法模块。先实现 CRITIC 权重计算这也是等会儿 TOPSIS 运算的弹药库。这一节我直接给出可以照抄的 Python 实现配合示例说明权重是怎么算出来的。3.1 从标准差到相关系数信息量的两层解读CRITIC 权重的核心是算每个指标的信息量。信息量由对比强度和冲突性两个部分构成。对比强度等于标准差代码里一行就能完成关键在于后头的相关系数矩阵要怎么交叉处理。使用 pandas 里既有的 .corr() 方法就能拿到相关系数矩阵。但要注意——拿到矩阵之后不能直接用它算冲突性。因为相关系数矩阵里有自相关系数对角线上永远是1如果直接按列加总对角线上的值会把每个指标的冲突性统一抬高 1导致算出来的权重整体偏向某些指标。正确做法是把对角线先归零然后对每一列求和。代码实现如下import pandas as pd # 假设 data_standard 是极差归一化后的DataFrame0-1区间 std_dev data_standard.std(axis0).values corr_matrix data_standard.corr().values # 冲突性计算对角置0后按列求和得到每个指标与其余所有指标的相关系数总和 np.fill_diagonal(corr_matrix, 0) conflict 1 - corr_matrix.sum(axis0) # 信息量 对比强度 * 冲突性 info std_dev * conflict # 权重归一化 weights info / info.sum() # 输出各指标权重 for name, w in zip(data_standard.columns, weights): print(f{name}: {w:.4f})代码看起来简洁背后逻辑却很值得展开。标准差越大说明在这个指标上用户之间的差异越大区分度越高——一个所有用户都是满分或都是零分的指标对风险分级没有任何帮助权重自然该低。冲突性则被相关系数反向操控某个指标与其他指标高度正相关意味着它和其他指标在讲同一个故事带来的增量信息就少高度负相关反而说明它在揭示别人没有看到的维度应该拿到更大的权重。3.2 实际数据演算7个校园贷样本的权重推演纯理论讲完还是虚我切一个真实演算案例。随机从历史用户里抽出7个样本假设已经在标准化步骤拿到了一个0到1之间的标准矩阵用户X1逾期次数X2消费金额X3活跃天数X4借款次数X5学历X6实名时长U10.330.080.241.000.500.20U20.670.520.720.600.500.67U30.330.400.420.400.500.80U40.670.880.880.600.500.30U50.000.160.100.400.500.00U60.670.760.860.801.000.53U71.001.001.000.400.501.00先算每个指标的标准差。用 numpy 的 std 函数注意 Python 的默认自由度是 n-1样本标准差但 CRITIC 法在多数文献里用的是 n总体标准差说的是分母要不要减1的问题。实际使用中样本量大、指标多时两种算出来的权重差异几乎看不见但写代码时要用 ddof0 保持总体标准差的定义避免强迫症同事来挑战你。当前数据的标准差向量是S [0.311, 0.300, 0.324, 0.214, 0.195, 0.342]X4 借款次数波长本身就小因为中间型正向化后大家都在0.4到1区间区分度受限这本身就是CRITIC输出的关键判断。真正决定权重的还得看冲突性。算相关系数矩阵对角置零后按列加总得到各指标与其余指标相关系数总和sum_corr [-0.383, 0.409, 0.023, 1.744, -0.037, 0.373]注意这里出现了负值列——X1逾期次数与其他指标整体呈现负相关意味着一个用户月均消费高、活跃天数多往往逾期次数偏低这是符合认知的。负相关不改变冲突性的算法直接代公式conflict 1 - sum_corr [1.383, 0.591, 0.977, -0.744, 1.037, 0.627]等等第四列出现了负值这里的 1.744 已经大于 1 了。这正常吗完全正常。冲突性理论允许出现负数含义是该指标和其他指标高度正相关信息冗余度高。如果把 conflict 直接代进信息量公式会出现负信息量。这种情况要不要处理我的经验是在真实大风控数据里X4这种中间型指标最容易出这个状况。当它与其他指标相关性极强时CRITIC 算出来的权重接近于零甚至为负说明这个指标实际上已经被其他指标“代表”了它不该在模型里占据位置。我通常会把负权重的指标权重直接置0再对正权重做归一化处理等价于自动完成了特征筛选。这也是 CRITIC 法在实际工业应用中最主要的变体操作。计算最终信息量和权重将负权重置零后重新归一化指标对比强度S冲突性R信息量C原始权重修正后权重X1 逾期次数0.3111.3830.4300.2670.312X2 消费金额0.3000.5910.1770.1100.128X3 活跃天数0.3240.9770.3170.1970.230X4 借款次数0.214-0.744-0.159-0.0990.000X5 学历背景0.1951.0370.2020.1260.147X6 实名时长0.3420.6270.2150.1330.156含义很清晰X1 历史逾期次数权重最高活脱脱的强辨识、弱冗余指标X4 借款次数因为与多个行为指标高度内卷被权重机制自动剔除了。这个结果从业务直觉看也完全站得住。3.3 权重结果的解读与合理解释权重出来以后不要直接丢给算法就算完事。业务方一定会问为什么借款次数权重是0为什么学历才占 0.147你要能解释得通模型才能在线上活下来。X4借款次数权重为0是因为它和消费金额、活跃天数的相关度过高。一个经常来App逛、月均消费不低的学生借款频次很难低。既然行为数据已经刻画了这层信息借款次数单独拎出来贡献的边际信息趋近于零。这个结论对风控业务启发是如果一个贷前审批系统还在用“借款频次超过X次就拒绝”的人工规则可以考虑把它和活跃度、消费水平合并成综合行为分减少规则冗余。X5学历占比不高不代表学历不重要而是样本当前的分辨率不够——我们的用户池子里本来就是本专科为主分布太均衡对一个各维度都均匀分布的指标CRITIC 能识别的信息量天然有限。这意味着如果后续业务想吸收硕博用户进来学历这个权重反而会自然上升。这是个很好的动态特性CRITIC 是数据驱动的权重自调节器用户结构一变权重自己会跟着变不用重新调参。4. TOPSIS综合评价与风险等级判定权重就位开始进入 TOPSIS 主流程。这一步的目标非常明确——把每个用户的多维数据压缩成一个0到1之间的综合评价值再根据评价值把用户划分到不同风险档。我先把完整实现代码贴出来再拆解关键环节的算法逻辑。4.1 完整Python实现从加权矩阵到贴近度排序import numpy as np # 标准化数据shape (n_samples, n_features) # data_std 已在前面完成极差归一化 # 归一化后的数据乘以CRITIC权重形成加权决策矩阵 weighted_matrix data_std.values * weights # 注意weights是修正后且重新归一化的数组 # 确定正理想解(A)与负理想解(A-)每个指标取最大/最小值 ideal_best weighted_matrix.max(axis0) ideal_worst weighted_matrix.min(axis0) # 计算每个样本到正负理想解的欧氏距离 d_best np.sqrt(((weighted_matrix - ideal_best) ** 2).sum(axis1)) d_worst np.sqrt(((weighted_matrix - ideal_worst) ** 2).sum(axis1)) # 计算贴近度 C越接近1风险越低 C d_worst / (d_best d_worst)这段代码看似简单实际有四个容易出错的细节。第一个是加权顺序必须先对标准化矩阵按列乘权重再做理想解的提取不能先提取理想解再乘权重——因为理想解应该是“各个指标同时达到加权后的最优值”先提取后乘权重会弄错距离计算的参考点。第二个是理想解提取时所有指标方向已经统一正向化过所以全部取最大值就是正理想解全部取最小值就是负理想解不需要再考虑成本型指标。第三个是欧氏距离计算用的是列累加也就是把各维度差异平方求和再开根号这要求必须使用极差归一化后的数据否则不同量纲的指标会直接淹没在其他指标的差异里。第四是贴近度公式里加了 d_best d_worst 作为分母边缘情况要留意如果某个样本同时等于正理想解d_best0C1同时等于负理想解d_worst0C0如果 d_best d_worst 为0说明所有用户在所有指标上都相同这组数据本身考察不出区分度需要回到指标体系里去调整。4.2 理想解距离到底在算什么东西很多文章把正负理想解形容得很玄其实就是两行代码的事。正理想解是“所有指标同时达到历史最优值”的合成人负理想解是“所有指标同时垫底”的合成人。每个用户跟这两个合成人打架打出来的差值就是他的风险位置。上面7个样本套入代码后算出的正理想解加权后大致是ideal_best [0.312, 0.128, 0.230, 0, 0.147, 0.156]这个向量含义是历史逾期次数0最干净、消费金额拉满、活跃天数拉满、借款次数无所谓权重为0、学历最高、实名时间拉满。负理想解则是所有方向履最差的合成人。每个用户和正负理想解的距离参数算出来就是用户DD-贴近度C排序U10.2670.1470.3557U20.0830.2150.7214U30.1220.1670.5785U40.0450.2460.8452U50.3400.0640.1596U60.0320.2560.8891U70.0680.2570.7913注意看 U1它的 D 不算最高但 D- 低得多贴近度0.355被直接打到低分段因为它的正向化后逾期次数中等消费和活跃完全垫底距离“最坏合成人”其实很近。这就是我这套方法控制风险偏好的核心表现——贴近度是一个相对位置度量不管绝对质量多高只要比库里历史最优差C 值就不高。4.3 基于贴近度分数的贷款决策逻辑映射模型最后输出的只是一个0到1的分数业务上用的时候必须把它翻译成明确的信贷决策。我在项目里直接切了四档对应不同的审批策略贴近度区间风险等级授信策略C ≥ 0.8低风险通过授予标准额度利率享受最低档0.6 ≤ C 0.8中低风险通过降低20%额度利率上浮15%0.4 ≤ C 0.6中高风险拒绝或转入人工复核要求补充联系人信息C 0.4高风险拒绝并且进入重点监控名单二次进件直接拦截阈值怎么定我有两个经验想要分享。第一个是最好不要全凭主观拍一个0.8就完事。可以拿历史已经出过坏账的样本回算贴近度看看坏用户分布在哪个区间再以能覆盖掉80%坏用户的分位值作为风险切线这是“以史为鉴”的思路。第二个是阈值的设定要配合人工复核率来权衡。如果业务平台刚起步审核人力充足可以放宽到0.5以下都走人工如果平台已经上量审核人手紧张就是0.6以下直接拒绝牺牲部分召回率换取时效。我上线这个模型时用历史12个月的3万个存量用户回测切0.6阈值模型把65%的逾期用户拦截在授信环节之前同时误杀率压在18%以内——对校园贷这个客群来说这个成绩已经相当能打毕竟坏账率每压下一个点对应的是几十万的资金保全。5. 面前与后面模型的动态迭代与风控审批链路集成模型做出来只是第一步更关键的是它如何嵌进业务流程以及上线后如何保持长期有效。这里分享几个我在项目落地过程中总结的实操经验希望能帮你少踩坑。5.1 跑通模型前的特征监控与数据节奏风控模型都是吃数据的数据一断模型即失效。很多团队只盯着模型 AUC 曲线却忘了监控上游特征的稳定度。我的做法是每次重跑 CRITIC 权重之前先检查每个指标的空值率、均值、标准差和分布形状跟上一周期对比有没有大幅偏移。比如额度标准调整后月均消费金额的整体均值如果明显抬升这就不是用户变有钱了而是因为提额导致彼时的行为路径变了特征漂移会间接压扁 CRITIC 的信息量。对于校园贷这类客群节假日效应和学期节奏非常明显。开学季和双十一大促前后借款频次和消费金额都会脉冲式升高如果不做时间窗口的平滑模型权重会被这种片面的节奏带偏。所以在入模数据上我特意留了 90 天的时间窗口并且对消费金额、活跃天数这类行为指标按“近7天、近30天、近90天”三个窗口分别聚合取加权均值避免短期波动污染模型稳定性。5.2 审批SOP集成模型打分后的人工核查要点模型输出的贴近度分数不能直接变成放款指令中间必须嵌套一层人工复核。我在流程里设置了几个硬性触发条件。第一是贴近度在0.4到0.6之间的用户全部转人工由风控专员重点核查学信网认证、手机号在网时长与申请时间是否合理第二是触发反欺诈标记的用户哪怕贴近度到了0.9也要强制走人工第三是对异地借款、夜间集中借款这类异常行为特征单独设规则不与模型分数互相替代而是并行的两条线。人工审核不是看到模型拒绝就照抄而是要有技能分辨模型漏掉的非法代理包装进件。比如一个用户手机号实名时长达两年、学历分也高、消费行为也正常但紧急联系人手机号和多个黑名单用户重合这种“暗网特征”是模型当前没覆盖到的维度人工抓住一次就应当沉淀为一条新的规则或者新指标下个版本迭代进模型里。5.3 模型周期性重训与效果评估口径校园贷业务的生命周期很快一个学期就换一拨新的借款主力。模型如果上线后一劳永逸不出三个月就会出现权重失灵。我的迭代节奏是每个月做一次全量 CRITIC 权重重算每个季度做一次 TOPSIS 贴近度排序稳定度检验检验看排序变化幅度大不大有没有出现大面积名次剧烈跳变如果有多半是入模特征那边出了问题。效果评估口径上不要只看单一的 KS 或 AUC。风控模型上线最怕的是 “通过率稳定、坏账也没降”因为可能只是你放出去的客群结构与原来完全一样模型根本没有起到排序作用。我在项目里同时追踪三个口径授信通过率、逾期30天以上占比、以及通过用户里高风险占比。三个口径同时向好才说明这轮迭代真正生效否则就要回到特征工程阶段找原因。5.4 从算法模型到业务决策的完整落地点最后再补一个整体闭环的思路。CRITICTOPSIS组合分析法不能是孤立来的而是要跟用户响应评分、额度测算、贷后预警这些模块协同。贴近度分数是贷前授信的主键同样也可以用在贷中调额环节每两周重算一次客户贴近度低于0.3的直接降额甚至冻结高于0.85但活跃度远超同期均值的可以考虑提额促活。我踩过的一个大坑是一开始只把贴近度用于贷前完全没把它延伸到贷中管理和催收排序。后来发现一个还款中的用户行为大幅恶化时贴近度往往提前两个月就开始下跌如果能抓到那个下跌拐点很多逾期是可以用降额规避掉的。现在这套模型已经成为我们整个风控体系的中枢调度器——贷前审核、贷中监控、贷后催收排优先级全部用同一个贴近度分数串起来非常顺手业务解释成本也低。6. 常见问题与避坑经验速查实操下来被问得最多的坑位和对应解法我已经整理成了速查表代码层面和业务层面都有方便收藏。现象根因排查方向解决办法CRITIC算出的权重有负值指标之间冗余度过高相关系数矩阵是否有一列之和大于1负权重置零再归一化或删除该指标TOPSIS贴近度普遍接近0.5标准化方式做了Z-score且有负值确认是否使用极差归一化切换为Min-Max归一化保持0-1区间模型区分效果比专家经验还差指标里有强噪声或时间窗口不一致查看各指标分布是否需要截断做分位数截断、检查口径是否统一各月权重变化剧烈样本量太小或客群季节波动大增加滚动时间窗口取均值用近90天窗口且做伪平衡抽样同一组数据两次跑出来的权重不同代码里直接用了随机抽样或样本未固定检查是否设置随机种子建模阶段固定 random_state42坏用户的贴近度和好用户拉不开距离指标全是强相关变量本质等于只有一个维度输出相关系数矩阵检查冗余结构做特征筛选保留冲突性高的指标6.1 数据处理层面最容易被忽视的3个细节第一极差归一化以后所有指标值都落在0到1但0和1不是真实业务上下限而是数据集里的极值。样本量小的时候一个极端值就会把大部分人的分数压得很低全局区分度崩掉。保险起见要用训练集的上下限去做归一化线上新样本沿用同一个 min 和 max不能用全量数据实时算。第二正向化和归一化的执行顺序不能颠倒。必须先做正向化、再做归一化。如果反了极小型指标的最小值会变成0正向化用最大值减当前值时新的最大值变成原来的最小值已经归一化后的结果就全反了。顺序错一个分数全都算错方向。第三中间型指标的最适值怎么定在校园贷场景里不能只看业务经验。我最开始拍脑袋定了“借款次数4次最优”后来发现数据里大量优质客户是0次借款白户把这个群体判成低风险是有问题的。后来改成根据历史客群借款次数分布的中位数加一档作为适度区间再从区间内按到边界距离映射效果立刻不一样。6.2 TOPSIS算法实现容易写错的两行代码第一处错计算距离的时候对矩阵做平方和之前忘了按权重乘过的矩阵去算。权重应当在标准化之后立即生效而不是在距离算完之后再乘一个标量。加权必须在距离计算前加权后的理想解本身是有业务含义的。第二处错正负理想解千万不能用原始数据去提取必须用加权后矩阵。我开始时图省事拿原始标准矩阵算理想解等于所有指标“单位权重全等”距离全被量纲或方差最大的那个指标带着走。这个错特别隐蔽因为排列名次看起来还有模有样但一拿去回测效果直接打对折。6.3 风控模型上线后业务方常问的两个刁钻问题第一个问题是“为什么这个学生的消费很低却是低风险放款”贴过低度是综合评估消费只占12.8%的权重如果他的逾期次数为零、手机实名时间很长、学历背景也不错原始消费不损大局模型自然把他归为低风险。业务会觉得“不花钱的人不怕借钱不还”但实际上不消费恰恰说明他没透支需求风险往往更低。要把关系讲透最好的方式是直接给业务从数据集里拉出贴近度前100个样本做一个画像雷达图比口头解释十句都有效。第二个问题更加致命“如果这批人全是老赖模型按历史权重去算会不会未来同样的人继续得高分”CRITIC 的权重是历史数据训练出来的特征分布整体平移时模型肯定会钝化。所以每个月的重训节奏不能省同时还得在入模特征里加入新增的欺诈标记作为标签让模型知道“这批人后来是不好的”下一次重训才会主动给这些人的逾期特征上权重。模型的好坏很大程度上就是迭代纪律的好坏。这一点上CRITIC 和 TOPSIS 的框架本身不背锅真正决定上限的还是数据质量和迭代节奏。写在最后看完这篇你已经完整掌握了 CRITIC 客观赋权和 TOPSIS 综合评价法在校园贷风控里的完整落地路径。从指标体系梳理、数据清洗、正向化归一化到权重计算、贴近度排序、阈值映射再到常见问题的排查全程都没有藏着掖着。如果你正头疼手上的小贷客群风险怎么量化非常建议拿这三个月的历史数据直接跑一版这个方案。根据我的实战体会这套方法最大的价值不是某个数学公式多深奥而是它真正把决策依据从“我觉得”变成了“数据说”。校园贷这类客群的数据质量虽然参差但样本量大只要打法扎实、迭代勤快CRITIC 与 TOPSIS 的组合完全可以撑起一套在线信审模型。最后再多嘴一句模型上线不是终点上线后的持续监控和月度重训才是真正风控能力的体现。可以做认真保稳步迭代这套方法论能陪你走很久。
返回列表