上图中,我们最常用的就是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的值画出的图形。这个不同阈值的设定可以是将[0,1]区间等分然后取阈值进行计算。当然这样会出现一个新的问题,假如某些概率只落在[0.0092,0.578]区间内时,那么将阈值取0.1到0.9时会出现ROC曲线后边的点都为(0,0),因此需要改进。

改进原理:将区间[0.0092,0.578]按照之前的等分划分方法划分为10份,然后再按不同阈值计算。

具体步骤:1.将(0,1)升级为(min(p),max(p))

2.取值(min(p),max(p))/10,设定阈值为(min(p),max(p))*k/10,其中k=1,......9

3.根据不同阈值计算的不同的(FPR,TPR)值

对于多个指标可以画出好几条ROC曲线,此时看AUC指标选优,AUC为ROC曲线下方的面积,值越大说明模型的分辨效果越好。

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

KS曲线是将概率从小到大进行排序,取10%的值为阈值,同理将10%*k(k=1,......9)处值作为阈值,计算不同的FPR和TPR,以10%*k(k=1,......9)为横坐标,同时分别以TPR和FPR为纵坐标画出两条曲线就是KS曲线。而KS值=|max(TPR-FPR)|

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

将所有的样本根据分数值从低到高排序均分成20组,分别计算20组的实际好样本数、实际坏样本数、累积好样本数、累积坏样本数、累积好样本数占比、累积坏样本数占比、差值。其中,实际好坏样本数分别为该组内的好坏样本数;累积好坏样本数为该组累积好坏样本数;累积好坏样本数占比为累积好坏样本数占总好坏样本数的比值;差值为累积坏样本数占比 - 累积好样本数占比。KS值为差值绝对值的最大值,具体的可以从下方的表看:

在一个小案例中,为了方便计算10个变量的KS值自己定义了一个计算KS值的函数:ks_value

# 注:

# data_analysis是待分析的数据

# independent_variable是自变量

# dependent_variable是因变量

# level1是因变量中的一个因子水平

# level2是因变量中另一个因子水平

data_arrange %

arrange(eval(parse(text = independent_variable)))

#将数据按照自变量从小到大排序

independent %

select(independent_variable) %>%

unlist()

#筛选出排序后的自变量

cut_independent_variable

#对排序后的自变量进行深度分箱操作,分20组,并返回每个数据所在的组别

data_cut

#将返回的组别与排序后的所有数据放在一起

fact_level1 %

filter(eval(parse(text = dependent_variable)) == level1) %>%

group_by(cut_independent_variable) %>%

summarise(fact_level1 = n())

#分组计算出因子水平1的总数

fact_level2 %

filter(eval(parse(text = dependent_variable)) == level2) %>%

group_by(cut_independent_variable) %>%

summarise(fact_level2 = n())

#分组计算出因子水平2的总数

fact_sample %

na.omit() %>%

mutate(cumsum_level2 = cumsum(fact_level2), #level2累积和

cumsum_level1 = cumsum(fact_level1), #level1累积和

cum_sum_level2_prob = cumsum_level2/sum(fact_level2), #level2累积占比

cum_sum_level1_prob = cumsum_level1/sum(fact_level1), #level1累积占比

D_value = abs(cum_sum_level1_prob - cum_sum_level2_prob)) #两累积占比的差

ks_value = fact_sample %>%

select(D_value) %>%

max()

#计算ks值:ks值是两累积占比的最大值

ks_value

}

ks_value(loandata, "score10", "bad_good", "bad", "good")

该代码的数据如下附件中所示。完整代码附件中也有。

ks 曲线_ROC、KS曲线及AUC、KS值相关推荐

  1. AUC、KS评价指标、洛伦兹曲线、Gini系数、Lift曲线和Gain曲线

    文章目录 1.AUC 1.1.混淆矩阵 1.2.ROC曲线 1.3.关于AUC值 2.KS评价指标 3.洛伦兹曲线 4.Gini系数 5.Lift曲线和Gain曲线 5.1.Lift曲线 5.2.Ga ...

  2. 模型效果评估指标(ROC、AUC/KS、Lift、PSI)

    以二分类问题为例 混淆矩阵(Confusion Matrix) 对测试集数据进行预测,得到下列混淆矩阵中的数据 注:TP.FN.FP.TN以预测的结果是否准确来命名. 预测模型评估指标的本质是从模型预 ...

  3. 分类器评估指标——混淆矩阵 ROC AUC KS AR PSI Lift Gain

    目录 1.混淆矩阵 混淆矩阵原理 混淆矩阵的python代码 2.准确率(Accuracy).精确率(Precision).灵敏度(Sensitivity).召回率(Recall).特异度(Speci ...

  4. 一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1

    文章目录 二分类的评价指标 一.混淆矩阵与 TP.TN.FP.FN 二.准确率.精确率.召回率.F1值 三.P-R 曲线 四.ROC 曲线.AUC 值 五.P-R曲线和ROC曲线有什么区别,如何选择? ...

  5. mysql实现pr曲线_ROC 曲线与 PR 曲线

    ROC 曲线和 PR 曲线是评估机器学习算法性能的两条重要曲线,两者概念比较容易混淆,但是两者的使用场景是不同的.本文主要讲述两种曲线的含义以及应用的场景. 定义 上面四个指标用大白话解释如下 Rec ...

  6. roc曲线怎么绘制_ROC曲线和PR曲线

    在机器学习中,ROC曲线被广泛应用于二分类问题中来评估分类器的可信度,当处理一些高度不均衡的数据集时,PR曲线能表现出更多的信息. 在二分类问题中,分类器将一个实例的分类标记为正例还是负例,这可以用一 ...

  7. 分类性能度量指标:准确性(AC)、敏感性(SE)、特异性(SP)、F1评分、ROC曲线、PR(Precision-Recall)曲线、AUC曲线,混淆曲线

    一:比较容易理解的比喻 以糖尿病人的筛查为例.第一个钟形代表正常人,第二个钟形代表糖尿病人.理想中,如果正常人和糖尿病人的血糖范围完全没有重合就好了.这样我就把标准定在中间那个最低点.低于此点的,就是 ...

  8. PR曲线,ROC曲线和AUC的区别

    参考资料: https://www.cnblogs.com/pinard/p/5993450.html https://blog.csdn.net/dinosoft/article/details/4 ...

  9. 机器学习之性能度量指标——决定系数R^2、PR曲线、ROC曲线、AUC值、以及准确率、查全率、召回率、f1_score

    一.线性回归的决定系数(也称为判定系数,拟合优度) 相关系数是R哈~~~就是决定系数的开方! 正如题所说决定系数是来衡量回归的好坏,换句话说就是回归拟合的曲线它的拟合优度!也就是得分啦~~ 决定系数它 ...

  10. ks检验python代码_如何使用适当的标准化方法从KolmogorovSmirnov测试(ks测试)中获得正确的p_值和ks_值?...

    我正在研究一个财务问题,我要实现一个函数,在每只股票的信号回报率的正态分布之间使用Kolmogorov-Smirnov检验(KS-test).我将对每个股票的信号回报率在正态分布上运行KS测试,对于这 ...

最新文章

  1. 利用LSM实现更安全的linux
  2. 数据结构 c c java_用java做开发,却学c语言的数据结构,这样好吗?
  3. 详解C++移动语义std::move()
  4. 基于面向对象的图片轮播(js原生代码)
  5. Spark源码分析之DAGScheduler以及stage的划分
  6. Visual Studio的语法着色终于调得赏心悦目
  7. gitlab 使用现有 nginx 服务器
  8. 电话机器人源码智能电话机器人7项技术特点,教你选择合适的电话机器人!
  9. 记一次nsp解包(nscb解包nsp/xci,cpk解包,转hca、adx到MP3,转nsm、m2v到MP4方法集锦)
  10. winrar解压器_今日软件 | 马冬梅下载器、微软OFFICE、安卓超级备份、安卓原生启动器、高颜值音乐播放器、WinRAR、雷鸟下载、动态壁纸...
  11. Linux: 介绍make menuconfig中的每个选项含义【转】
  12. HEVC/H.265与AVC/H.264对比总结
  13. 微信扫一扫二维码直接打开手机默认外部浏览器
  14. 机器学习——PCA(主成分分析)与人脸识别
  15. iconfont字体图标以及css字体图标在线制作和使用(推荐)
  16. 苹果IOS开发者账号总结
  17. javascript之内置函数
  18. 阿里云ACP级认证考试心得+过关经验
  19. 百度18年兴衰背后:一部互联网流量变迁史
  20. 关于使用PyQt5时报错This application failed to start because no Qt platform plugin could be initialized及后续问题

热门文章

  1. H.266/VVC:色度帧内预测模式之CCLM技术
  2. CLK_OF_DECLARE 解析
  3. 勤学修身 放飞梦想4
  4. AUPRC Vs 平均查准率
  5. 青龙面板——每日自动拿京豆
  6. MapReduce--实现手机流量分析
  7. 计算机网络实验:华为交换机的常用命令
  8. 学Excel,办公不求人-优就业-专题视频课程
  9. mysql忘记密码怎么处理
  10. 如何提升会议体验感和氛围感?