登录
首页大数据时代K-s曲线是什么,如何进行绘制?
K-s曲线是什么,如何进行绘制?
2020-07-17
收藏

今天跟大家分享的是:K-s曲线,直接上干货。

一、K-s曲线是什么

K-s全称:Kolmogorov-Smirnov,中文名叫做洛伦兹曲线,Ks经常被用于模型风险区分能力进行评估, 指标衡量的是好坏样本累计分部之间的差值。好坏样本累计差异越大,Ks指标越大,那么模型的风险区分能力越强。

K-s曲线的数据来源和本质是与ROC曲线是一致的,只不过ROC曲线是将真正类率和假正类率作为横纵轴,K-s曲线则是把真正率和假正率都当作是纵轴,横轴为选定的阈值。

简单来理解就是:K-s曲线是两条线,横轴是阈值,纵轴是TPR与FPR的值,值范围[0.1] 。TPR与FPR这两条曲线之间相距最远的地方对应的阈值,为最能划分模型的阈值。

下面来解释以下TPR与FPR:

TPR:真正类率(true positive rate), 计算公式为TPR=TP/ (TP+ FN),刻画的是分类器所识别出的 正实例占所有正实例的比例。

FPR:假正类率(false positive rate),计算公式为FPR= FP / (FP + TN),计算的是分类器错认为正类的负实例占所有负实例的比例。

其中:

TP:真实为1且预测为1的数目

FN:真实为1且预测为0的数目

FP:真实为0的且预测为1的数目

TN:真实为0的且预测为0的数目

K-S值计算公式:K-S=max(TPR-FPR)

K-S值<0.2.一般认为模型没有区分能力。

K-S值[0.2.0.3],模型具有一定区分能力,勉强可以接受

K-S值[0.3.0.5],模型具有较强的区分能力。

K-S值大于0.75.往往表示模型有异常。

二、K-s曲线绘制


import matplotlib.pyplot as plt
#第一个参数是模型的预测值,第二个参数是模型的真实值
def draw_ks_curve(predict_result,true_result):
    tpr_list = []  #存放真正率数据
    fpr_list = []  #存放假正率数据
    dif_list = []  #存放真假正率差值
    max_ks_dot = []
    
    for i in np.arange(0,1.1,0.1):
        tpr = 0
        fpr = 0
        for j in range(len(predict_result)):
            if list(predict_result[j])[0]>i and true_result[j]==1:
               tpr = tpr+1
               tpr_list.append(tpr)
            if list(predict_result[j])[0]>i and true_result[j]==0:
               fpr = fpr+1
               fpr_list.append(fpr)
        tpr = tpr/sum(true_result)
        fpr = fpr/(len(true_result)-sum(true_result))
    fig = plt.figure(num=1, figsize=(15, 8),dpi=80)     #开启一个窗口,同时设置大小,分辨率
    plt.plot(np.arange(0,1,0.1),tpr_list)
    plt.plot(np.arange(0,1,0.1),fpr_list)


数据分析咨询请扫描二维码

客服在线
立即咨询