KS值的计算过程

KS(kolmogorov-Smirnov)值衡量的是好坏样本累计各部分之间的差值。

好坏样本累计差异越大,KS指标越大。那么模型的风险区分能力越强。

KS的计算步骤:

1.按照模型的结果对每个账户进行打分。

2.所有账户按照评分排序,并从小到大分为10~20组。

3.计算每个评分区间的好坏账户数。(每个区间的good账户数n, 坏账户数m)

4.(1)计算每个评分区间的累计好账户数占总的好账户数的比例。(从第0个区间到第i个区间的good账户数ni 比 所有的good账户数N,ni/N)

     (2)计算每个评分区间累计坏账户数占总坏账户数的比值。(从第0个区间到第i个区间的bad账户数mi 比 所有的bad账户数M, mi/M)

5.计算每个评分区间累计坏账户占比与累计好账户占比之间差的绝对值。(|mi/M - ni/N|,mi/M 减去ni/N的绝对值)然后取绝对值最大的那个值作为评分模型的KS值。

 

总的来说,KS值越高模型越好,但是过高也会出现问题,让人怀疑是不是有使用未来遍历的嫌疑。所以,一般超过75时就要检视一下模型。

03-11
<think>好的,我现在要回答用户关于KS计算方法的提问。首先,我需要回忆一下KS在统计学和机器学习中的定义和应用。KS通常与分类模型的评估相关,尤其是在二分类问题中,用于衡量模型区分正负样本的能力。 我记得KS全称是Kolmogorov-Smirnov统计量,原本用于检验两个样本是否来自同一分布。在机器学习中,KS通过累积分布函数来比较正负样本的预测概率分布差异。具体来说,正样本的累积概率曲线(TPR)和负样本的累积概率曲线(FPR)之间的最大差即为KS。因此,KS计算公式应该是KS = max(TPR - FPR)。 接下来,我需要验证这个理解是否正确。根据引用[4],KS曲线的纵轴是TPR和FPR的,横轴是阈KS是两个曲线之间的最大间隔,也就是最大的TPR和FR之差。所以我的理解是对的。 然后,我需要详细说明计算步骤。首先,需要模型输出的概率分数,然后按照分数降序排列。接着,对每个阈计算对应的TPR和FPR,计算它们的差,最后找出最大的差作为KS。同时,可能需要绘制KS曲线来可视化这一过程。 用户可能还关心如何实际应用,比如在Python中使用sklearn或其他库来计算KS。虽然引用中没有提到具体函数,但可以通过混淆矩阵或roc_curve函数获取TPR和FPR,然后计算。例如,使用sklearn的roc_curve得到fpr, tpr, thresholds,然后计算tpr - fpr的最大。 需要确认是否有现成的库可以直接计算KS,或者是否需要手动计算。根据现有引用,用户可能需要自己实现这部分,或者参考其他资源。但根据给出的引用,没有直接提到sklearn中的KS计算函数,所以可能需要手动处理。 最后,要确保回答结构清晰,分点说明概念、步骤、公式和应用,并附上相关代码示例。同时,生成相关问题,如KS的应用场景、与ROC曲线的区别等,以帮助用户深入理解。</think>### KS的概念及计算方法 **概念解析** KS(Kolmogorov-Smirnov Statistic)是评估二分类模型区分正负样本能力的指标。其核心思想是通过比较正负样本预测概率的累积分布差异,找到模型在最佳阈下的区分度。具体来说: - **TPR(True Positive Rate)**:正样本中被正确预测的比例,即 $TPR = \frac{TP}{TP + FN}$。 - **FPR(False Positive Rate)**:负样本中被错误预测的比例,即 $FPR = \frac{FP}{FP + TN}$。 - **KS**定义为所有阈下 $TPR - FPR$ 的最大,即: $$ KS = \max_{\text{阈}} (TPR - FPR) $$ 取范围为 $[0, 1]$,越大表示模型区分能力越强[^4]。 --- **计算步骤** 1. **获取预测概率**:对测试集样本输出预测概率(如逻辑回归的概率结果)。 2. **排序与阈划分**:将样本按预测概率从高到低排序,并依次将每个样本的概率作为阈。 3. **逐点计算TPR和FPR**:对每个阈,统计对应的TP、FP、TN、FN,计算TPR和FPR。 4. **求最大差**:遍历所有阈计算 $TPR - FR$ 的最大,即为KS。 --- **公式示例** 假设某模型预测概率排序后的TPR和FPR序列为: - TPR序列:$[0.1, 0.3, 0.6, 0.9, 1.0]$ - FPR序列:$[0.0, 0.05, 0.1, 0.2, 0.3]$ 则KS为: $$ KS = \max(|0.1-0.0|, |0.3-0.05|, \dots) = 0.7 $$ --- **Python实现示例** ```python from sklearn.metrics import roc_curve import numpy as np # 假设y_true为真实标签,y_score为模型输出的概率 fpr, tpr, thresholds = roc_curve(y_true, y_score) ks_value = np.max(tpr - fpr) print(f"KS为: {ks_value:.3f}") ``` --- **应用场景** - **风控模型评估**:在金融领域用于评估信用评分模型区分好坏客户的能力。 - **阈选择**:通过KS曲线确定最佳分类阈。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值