风控模型评估指标:KS、ROC、AUC、PSI代码逻辑

风控模型评估中,ROC曲线通过FPR与TPR展示模型性能,AUC衡量ROC曲线下面积,值越大表示模型准确性越高。KS值衡量区分正负样本的能力,超过0.2即有较好预测效果。PSI是另一种评估指标。本文介绍了这些指标的含义,并提供了Python代码实现。
摘要由CSDN通过智能技术生成

在这里插入图片描述
上图中,我们最常用的就是TPR(True Positive Rate)和FPR(False Positive Rate):

其中:

TPR = TP/(TP+FN)即真实1中预测错的;

FPR = FP/(FP+TN)即真实0中预测错的;

Precision = TP/(TP+FP)即预测1中对的

最理想的模型,是TPR尽量高而FPR尽量低,然而任何模型在提高正确预测概率的同时,也会难以避免地增加误判率。听起来有点抽象,好在有ROC曲线非常形象地表达了二者之间的关系。

ROC曲线是以FPR为横轴,TPR为纵轴,在不同阈值下计算FPR和TPR的值画出的图形。
AUC就是ROC曲线下方的面积,值一般在0.5-1.0之间。值越大表示模型判断准确性越高,即越接近1越好。ROC=0.5表示模型的预测能力与随机结果没有差别。
KS值表示了模型将 和-区分开来的能力。值越大,模型的预测准确性越好。一般,KS>0.2即可认为模型有比较好的预测准确性。

KS曲线与ROC有着相同的作用:

KS曲线是将概率从小到大进行排序,取10%的值为阈值,同理将10%*k(k=1,…9)处值作为阈值,计算不同的FPR和TPR,以10%*k(k=1,…9)为横坐标,同时分别以TPR和FPR为纵坐标画出两条曲线就是KS曲线。而KS值=|max(TPR-FPR)|。详细的可以参考网址:https://www.sohu.com/a/132667664_278472

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tqi9jGYY-1575010589081)(attachment:image.png)]

另外,还有另一种计算KS值的方法:

将所有的样本根据分数值从低到高排序均分成20组,分别计算20组的实际好样本数、实际坏样本数、累积好样本数、累积坏样本数、累积好样本数占比、累积坏样本数占比、差值。其中,实际好坏样本数分别为该组内的好坏样本数;累积好坏样本数为该组累积好坏样本数;累积好坏样本数占比为累积好坏样本数占总好坏样本数的比值;差值为累积坏样本数占比 - 累积好样本数占比。
PSI在上一篇中已经做了具体介绍,想了解的可以关注我:
在这里插入图片描述
实现这几个指标的python代码如下:

from sklearn.metrics import roc_curve
from scipy.stats import ks_2samp

# 计算ks值
def ks_calc_auc(data,pred,y_label):
    '''
    功能: 计算KS值,输出对应分割点和累计分布函数曲线图
    输入值:
    data: 二维数组或dataframe,包括模型得分和真实的标签
    pred: 一维数组或series,代表模型得分(一般为预测正类的概率)
    y_label: 一维数组或series,代表真实的标签({0,1}或{-1,1})
    输出值:
    'ks': KS值
    '''
    fpr,tpr,thresholds= roc_curve(data[y_label],data[pred])
    ks = max(tpr-fpr)
    return ks

# 计算AUC值
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, roc_auc_score
def roc_auc_z(data,pred,y_label):
    # 计算auc的值
    fpr,tpr,thresholds= roc_curve(data[y_label],data[pred])
    auc_score=roc_auc_score<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值