二分类模型评价指标-KS值


title: ‘二分类模型评价指标-KS值’
author: “”
date: “2018年7月13日”
output: word_document

knitr::opts_chunk$set(echo = TRUE,eval=FALSE)

1. KS值

1.1 概念

  KS值越大,表示模型能够将正、负客户区分开的程度越大。
  通常来讲,KS>0.2即表示模型有较好的预测准确性。

  柯尔莫哥洛夫-斯米尔诺夫检验(Колмогоров-Смирнов检验)基于累计分布函数,用以检验两个经验分布是否不同或一个经验分布与另一个理想分布是否不同。

  绘制方式与ROC曲线略有相同,都要计算TPR和FPR。但是TPR和FPR都要做纵轴,横轴为把样本分成多少份。
步骤:

  1. 按照分类模型返回的概率降序排列
  2. 把0-1之间等分N份,等分点为阈值,计算TPR、FPR
  3. 对TPR、FPR描点画图即可

KS值即为Max(TPR-FPR)

###1.2 代码

  提供R代码一份,仅供参考。

# 获取数据 --------------------------------------------------------------------
#以ROCR包里自带数据为例

# 获取数据 --------------------------------------------------------------------
#以ROCR包里自带数据为例
library(ROCR)
data(ROCR.simple)
result <- data.frame(pre_prob=ROCR.simple$predictions,true_label=ROCR.simple$labels)
#概率大于0.5为正类,小于0.5负类
result <- within(result,{
  pre_label <- NULL
  pre_label[pre_prob>0.5] <- 1
  pre_label[pre_prob<=0.5] <- 0
})
head(result)


#install.packages("gmodels")
library(gmodels)
CrossTable(x=result$true_label,y=result$pre_label,prop.chisq=FALSE)
#画PRC曲线:横轴TPR纵轴Precision.Threshold
TPR <- NULL
FPR <- NULL
for(i in seq(from=1,to=0,by=-0.1)){
  #判为正类实际也为正类
  TP <- sum((result$pre_prob >= i) * (result$true_label == 1)) 
  #判为正类实际为负类
  FP <- sum((result$pre_prob >= i) * (result$true_label == 0))
  #判为负类实际为负类
  TN <- sum((result$pre_prob < i) * (result$true_label == 0)) 
  #判为负类实际为正类
  FN <- sum((result$pre_prob < i) * (result$true_label == 1)) 
  TPR <- c(TPR,TP/(TP+FN))
  FPR <- c(FPR,FP/(FP+TN))
}
library(ggplot2)
ggplot(data=NULL,mapping = aes(x=seq(0,1,0.1),y=TPR))+
  geom_point()+
  geom_smooth(se=FALSE,formula = y ~ splines::ns(x,10), method ='lm')+
  geom_line(mapping = aes(x=seq(0,1,0.1),y=FPR),linetype=6)
max(TPR-FPR)#KS值为0.69

下面的图坐标轴标题有误,纵轴tpr/fpr,横轴为threshold阈值(感谢sinat_27339001指出)

knitr::include_graphics("../Picture/Pic09-KS.png",dpi = 600)

这里写图片描述
PS:并没有觉得这个KS值有什么用啊~

2. Lift值

  以一个例子计算:
  对于某二分类模型,针对1000名顾客打分。如果实际数据中有90名顾客产生购买行为。那么,Random Rate=9%。按照概率降序排序,取前10%。如果其中60个人产生购买行为,那么排名前10%的用户其实际购买率的Lift=(60/100)/9%=6.67

3. 捕获率及响应率

  1. 按照概率降序排序,0-1等分,等分点为阈值
  2. 响应率为各个等分区间内的属于正1的占该区间或者累计区间总体观察数量的百分比
  3. 捕获率为各个等分区间内的属于正1的占该区间或者累计区间总体观察属于正1数量的百分比

                      2017-06-05 于杭州
                      2018-07-13 于南京市建邺区新城科技园

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值