【风控】模型算法区分度指标KS

news2025/5/23 12:21:20

一、KS指标的定义原理

  • 背景
    • KS(Kolmogorov–Smirnov)原本用于检验样本分布与理论分布或两个样本分布是否一致。
    • 风控建模中,将“好样本”(Good)与“坏样本”(Bad)的模型输出概率看作两组经验分布,用KS度量它们的最大分离程度,从而评估模型的区分度。
  • 数学本质
    • F bad ( x ) F_{\text{bad}}(x) Fbad(x) F good ( x ) F_{\text{good}}(x) Fgood(x)分别为坏、好样本在阈值 x x x下的经验累积分布函数(ECDF),则
      K S    =    max ⁡ x   ∣   F bad ( x )    −    F good ( x ) ∣ \mathrm{KS} \;=\; \max_{x}\,\bigl|\,F_{\text{bad}}(x)\;-\;F_{\text{good}}(x)\bigr| KS=xmax Fbad(x)Fgood(x)
    • 直观上,KS 是两条累积分布曲线间的最大垂直距离,衡量“在某个阈值处,坏人被甄别出的累积比例”与“好人被误伤出的累积比例”之差。

二、KS计算流程

分箱(Binning)

  • 可选等频、等距或基于分数段(如 decile、percentile、WOE 分箱)。
  • 保证每个箱内样本量满足统计显著性。
    统计各箱好坏比
  • 令箱 i i i中:
    • n i n_i ni为总样本数,
    • g i g_i gi b i b_i bi 分别为好/坏样本数。
  • 计算比率: r i = n i N , δ g i = g i G , δ b i = b i B , r_i = \frac{n_i}{N},\quad \delta g_i = \frac{g_i}{G},\quad \delta b_i = \frac{b_i}{B}, ri=Nni,δgi=Ggi,δbi=Bbi,
    其中 N , G , B N,G,B N,G,B分别为总体、好样本和坏样本总数。
    累积比率
  • 按得分升序(或降序)累加:
    F good , i = ∑ j ≤ i δ g j , F bad , i = ∑ j ≤ i δ b j . F_{\text{good},i} = \sum_{j\le i}\delta g_j,\quad F_{\text{bad},i} = \sum_{j\le i}\delta b_j. Fgood,i=jiδgj,Fbad,i=jiδbj.
    KS值
  • 计算每个箱的 ∣ F bad , i − F good , i ∣ |F_{\text{bad},i} - F_{\text{good},i}| Fbad,iFgood,i,取最大者即为该变量或模型的 KS:
    K S = max ⁡ i ∣ F bad , i − F good , i ∣ . \mathrm{KS} = \max_i \bigl|F_{\text{bad},i} - F_{\text{good},i}\bigr|. KS=imax Fbad,iFgood,i .
    业务解读
  • 在最佳分隔点(最大KS对应的分数阈值)处,坏样本累积识别率与好样本累积误识率之差即为 KS,上限即模型区分度的“天花板”。

三、KS的几何意义

  • 累积分布差异图(鱼眼图)

    • 横轴:阈值;纵轴:累积百分比。
    • 两条曲线分别为 F bad ( x ) F_{\text{bad}}(x) Fbad(x)(虚)与 F good ( x ) F_{\text{good}}(x) Fgood(x)(实),两者差值(红)即 KS 曲线。
      在这里插入图片描述
  • 直观感受

    • 当两条分布曲线重叠时,KS→0;当完全分离时,KS→1。
    • 最大距离处的“鱼眼”最宽,代表最优的坏/好样本分隔效果。

四、KS在互联网风控模型中的应用价值

  1. 样本极度不均衡
    • 风控中好坏比常为 100∶1 甚至更低,传统准确率难以反映模型性能;KS 不受类别不平衡影响,更能捕捉排序能力。
  2. 连续性与模糊边界
    • 信用、欺诈均属于连续风险,KS 基于概率分布差异判断,契合业务定义的“软边界”概念。
  3. 策略制定
    • KS 最优阈值可作为放贷/拒贷策略的参考切点(需进一步权衡通过率与坏账率)。
  4. 风控监控
    • 随时间和策略变化,监控 KS 的波动,可预警模型老化、数据漂移或信息泄露。
  5. 优化思路
    • 变量筛选:剔除已被策略使用的“重复”信息;
    • 样本诊断:分析训练/验证集差异;
    • 特征工程:引入更具针对性的新变量(金融属性、短期负面信号);
    • 分群建模:按客户群体分级建模,提高局部区隔能力;
    • Bad‑case 深挖:针对漏判与误判样本提取特征。

五、从几何角度看 KS 与 ROC 的关系

  • 对应关系
    • 在 ROC 曲线中,横轴为 FPR(False Positive Rate,等同于 F good ( x ) F_{\text{good}}(x) Fgood(x)),纵轴为 TPR(True Positive Rate,等同于 F bad ( x ) F_{\text{bad}}(x) Fbad(x))。
    • KS 在某阈值处的差值即为 ROC 曲线上点 ( F P R ,   T P R ) (\mathrm{FPR},\,\mathrm{TPR}) (FPR,TPR)与对角线 y = x y=x y=x间的垂直距离。
  • 几何映射
    1. 在 ROC 图上,过对角线(随机模型)平行线的最大切线截距即为 KS。
    2. KS 越大,ROC 曲线离对角线越远,AUC(曲线下面积)一般也越高。
  • 取舍与权衡
    • 某一阈值下,可能存在两个 KS 相同的点:一个在高 FPR/高 TPR 区,另一个在低 FPR/低 TPR 区。
    • 业务可根据对“坏人召回”与“好人误伤”侧重,选取对应阈值。
  • 过高警示
    • KS >75% 时,ROC 曲线形态会异常凸出,往往伴随分布双峰、不合常理,需警惕过拟合或数据泄漏。
      在这里插入图片描述

在这里插入图片描述

六、KS计算示例代码(Python)

import numpy as np
import pandas as pd
from scipy.stats import ks_2samp

def compute_ks(proba: np.ndarray, target: np.ndarray, n_bins: int = 50):
    """
    计算KS值及对应阈值。

    参数:
        proba (np.ndarray): 模型输出的正类概率数组,形状 (n_samples,)
        target (np.ndarray): 真实标签数组,取值 {0,1},形状 (n_samples,)
        n_bins (int): 分箱数量,默认 50

    返回:
        ks_value (float): KS 统计量(最大差值)
        ks_cutoff (float): 达到 KS 最大值时的分数阈值
    """
    # 构造 DataFrame 便于分箱
    df = pd.DataFrame({'proba': proba, 'target': target})
    df['bin'] = pd.qcut(df['proba'], q=n_bins, duplicates='drop')

    # 统计各箱好坏样本数及累积比率
    grouped = df.groupby('bin').agg(
        total=('target', 'count'),
        bad=('target', 'sum')
    ).reset_index()
    grouped['good'] = grouped['total'] - grouped['bad']
    G = grouped['good'].sum()
    B = grouped['bad'].sum()
    grouped = grouped.sort_values('bin')
    grouped['cum_bad_rate'] = grouped['bad'].cumsum() / B
    grouped['cum_good_rate'] = grouped['good'].cumsum() / G

    # 计算KS及阈值
    grouped['ks'] = np.abs(grouped['cum_bad_rate'] - grouped['cum_good_rate'])
    idx = grouped['ks'].idxmax()
    ks_value = grouped.loc[idx, 'ks']
    # 取该箱上限作阈值
    ks_cutoff = grouped.loc[idx, 'bin'].right

    return ks_value, ks_cutoff

# 示例
if __name__ == '__main__':
    # 模拟数据
    y = np.random.binomial(1, 0.05, size=10000)
    scores = np.random.rand(10000) * (0.5 + 0.5 * y)  # 模拟分数与标签关联
    ks_val, ks_thr = compute_ks(scores, y)
    print(f'KS = {ks_val:.4f}, 最优阈值 = {ks_thr:.4f}')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2383885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

win11下jenkins+docker+maven自动部署springboot项目

win11下jenkinsdockermaven自动部署springboot项目 一、前置软件安装二、jenkins配置三、springboot项目准备四、jenkins打包部署项目到本地docker中五、jenkins打包部署项目到远程服务器docker中 一、前置软件安装 docker安装 需要开启wsl,以管理员身份运行docke…

《决策科学与艺术》No1: 决策树:概念、原理、发展历史、特点及应用

决策树:概念、原理、发展历史、特点及应用 摘要 决策树是一种广泛使用的机器学习和决策分析方法,以其可解释性、简洁性和多功能性著称。本文全面介绍了决策树的概念基础、基本原理、发展历程、显著特征及其在商业、医疗、金融和工程等多个领域的典型应用…

【苍穹外卖】Day01—Mac前端环境搭建

目录 一、安装Nginx (一)安装Homebrew (二)Homebrew安装Nginx 1. 执行安装命令: 2. 验证安装: (三)启动与停止Nginx 二、配置Nginx 1. 替换nginx.conf 2. 替换html文件夹 三…

软考中级软件设计师——设计模式篇

一、设计模式核心分类 设计模式分为 3 大类,共 23 种模式(考试常考约 10-15 种): 分类核心模式考试重点创建型模式工厂方法、抽象工厂、单例、生成器、原型单例模式的实现(懒汉、饿汉)、工厂模式的应用场…

Axure系统原型设计列表版方案

列表页面是众多系统的核心组成部分,承担着数据呈现与基础交互的重要任务。一个优秀的列表版设计,能够极大提升用户获取信息的效率,优化操作体验。下面,我们将结合一系列精心设计的列表版方案图片,深入探讨如何打造出实…

微软全新开源命令行文本编辑器:Edit — 致敬经典,拥抱现代

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、引言:命令行的新利器二、Edit:致敬经典,拥抱现代1. 命令行的“新升级”2. 为什么要有 Edit?三、核心功能与特性一览1. 完全开源、MIT 许可证…

年会招标抽奖活动软件———仙盟创梦IDE

年会是企业一年的总结与欢庆时刻,而抽奖环节更是点燃全场气氛的关键。如何让抽奖环节既大气又充满仪式感?选对抽奖软件至关重要!本文精心挑选了 3 款兼具实用性与氛围感的年会抽奖软件,从界面设计到功能特色,全方位为你…

智防火灾,慧控能耗:物联网赋能金融行业电气安全革新

摘要 随着金融行业对电气安全需求的不断提升,传统用电管理模式已难以满足现代金融机构对火灾防控、能耗管理和智能运维的要求。本文基于物联网、云计算及大数据分析技术,提出一套针对金融行业的安全用电解决方案。该方案通过智能化硬件部署与平台化管理…

在 JavaScript 中正确使用 Elasticsearch,第二部分

作者:来自 Elastic Jeffrey Rengifo 回顾生产环境中的最佳实践,并讲解如何在无服务器环境中运行 Elasticsearch Node.js 客户端。 想获得 Elastic 认证?查看下一期 Elasticsearch Engineer 培训的时间! Elasticsearch 拥有大量新…

更新nvidia-container-toolkit 1.17.7-1后,运行--gpus all 卡死问题

用Arch每日一滚,结果今天用 sudo docker run -it --runtimenvidia --gpus all居然卡死了,排雷排了几小时,才从开源库发现问题 nvidia-container-toolkit 1.17.7-1 是有问题的,而且在ubuntu和arch上都存在问题。 只好Downgrade 1.…

通义灵码 2.5 版深度评测:智能编程的边界在哪里?

通义灵码 2.5 版深度评测:智能编程的边界在哪里? 评测目标 全面测试智能体模式:是否真正具备自主决策能力?MCP 工具集成体验:能否提升开发效率?AI 记忆自感知能力:是否能真正理解开发者习惯&a…

电商项目-商品微服务-规格参数管理,分类与品牌管理需求分析

本文章介绍:规格参数管理与分类与品牌管理的需求分析和表结构的设计。 一、规格参数管理 规格参数模板是用于管理规格参数的单元。规格是例如颜色、手机运行内存等信息,参数是例如系统:安卓(Android)后置摄像头像素&…

零基础设计模式——创建型模式 - 工厂方法模式

第二部分:创建型模式 - 工厂方法模式 (Factory Method Pattern) 上一节我们学习了单例模式,它关注如何保证一个类只有一个实例。现在,我们来看另一个重要的创建型模式——工厂方法模式。它关注的是如何创建对象,但将创建的决定权…

蓝桥杯5130 健身

问题描述 小蓝要去健身,他可以在接下来的 1∼n 天中选择一些日子去健身。 他有 m 个健身计划,对于第 i 个健身计划,需要连续的 天,如果成功完成,可以获得健身增益 si​ ,如果中断,得不到任何…

电商虚拟户:重构资金管理逻辑,解锁高效归集与智能分账新范式

一、电商虚拟户的底层架构与核心价值 在数字经济浪潮下,电商交易的复杂性与日俱增,传统账户体系已难以满足平台企业对资金管理的精细化需求。电商虚拟户作为基于银行或持牌支付机构账户体系的创新解决方案,通过构建“主账户子账户”的虚拟账户…

腾讯2025年校招笔试真题手撕(二)

一、题目 最近以比特币为代表的数字货币市场非常动荡,聪明的小明打算用马尔科夫链来建模股市。如图所示,该模型有三种状态:“行情稳定”,“行情大跌”以及“行情大涨”。每一个状态都以一定的概率转化到下一个状态。比如&#xf…

安装完dockers后就无法联网了,执行sudo nmcli con up Company-WiFi,一直在加载中

Docker服务状态检查 执行 systemctl status docker 确认服务是否正常 若未运行,使用 sudo systemctl start docker && sudo systemctl enable docker 网络配置冲突 Docker会创建docker0虚拟网桥,可能与宿主机网络冲突 检查路由表 ip route sho…

【深度学习新浪潮】2025年谷歌I/O开发者大会keynote观察

1. 2025年谷歌I/O开发者大会keynote重点信息 本次Google I/O大会的核心策略是降低AI使用门槛与加速开发者创新,通过端侧模型(Gemini Nano)、云端工具(Vertex AI)和基础设施(TPU)的全链路优化,进一步巩固其在生成式AI领域的领先地位。同时,高价订阅服务和企业级安全功…

案例分享——福建洋柄水库大桥智慧桥梁安全监测

项目背景 洋柄水库桥位于社马路(社店至马坪段)上,桥梁全长285m,桥梁中心桩号K15082跨径组合为 14x20m,全桥宽:33.8m,分左右双幅:上部结构采用空心板梁:桥采用柱式墩。 通过对桥梁结构长时间的定期观测,掌握桥梁在混凝…

鸿蒙操作系统架构:构建全场景智慧生态的分布式操作系统

鸿蒙操作系统(HarmonyOS)是华为推出的面向全场景的分布式操作系统,旨在为智能手机、智能家居、智能穿戴、车机等多种设备提供统一的操作系统平台。鸿蒙架构的核心设计理念是“一次开发,多端部署”,通过分布式技术实现设备间的无缝协同。本文将深入探讨鸿蒙的分层架构、分布…