R语言-评分卡模型验证(ROC,KS,AIC,BIC)

本文主要记录几种常用的模型检验方法,重点在R语言的使用上,暂时不包括检验方法的原理。博主刚开始使用R语言不久,因此也借此机会整理记录自己的学习过程。如有不当,欢迎指正。


1. ROC与AUC,基尼系数


混淆矩阵Confusion Matirx

计算ROC之前先介绍如何计算混淆矩阵Confusion Matrix

1.可以用table(pre, test$label)

2.caret包里的confusionMatrix(data, reference)

ROC 和AUC

用pROC包的roc函数

# validate
library(pROC)  # roc
modelroc <- roc(test$label,pre)
modelauc<- auc(modelroc) # calculate area under the curve
plot(modelroc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),
     grid.col=c("green", "red"), max.auc.polygon=TRUE,
     auc.polygon.col="skyblue", print.thres=TRUE) # draw roc
Gini <- 2*modelauc-1
     

基尼系数Gini Index

基尼系数最开始为经济学指标,判断一个群体收入分配的均匀程度,基尼系数越大,说明收入分配越不均匀。国际上通常把0.4作为警戒线,当大于0.4时易出现社会动荡。

在分类模型中,基尼系数衡量的是好坏样本的均匀程度,Gini系数越大越不均匀,也意味着好坏样本分得越开,这是我们想要的。Gini系数与AUC存在如下关系:

Gini=2AUC-1

代码可直接利用pROC包计算的auc值代入公式计算gini系数,见roc代码片断。


R语言-评分卡模型验证(ROC,KS,AIC,BIC)_第1张图片R语言-评分卡模型验证(ROC,KS,AIC,BIC)_第2张图片

2.KS曲线及KS值

myKS <- function(pre,label){
  true <- sum(label)
  false <- length(label)-true
  tpr <- NULL
  fpr <- NULL
  o_pre <- pre[order(pre)] # let the threshold in an order from small to large
  for (i in o_pre){
    tp <- sum((pre >= i) & label)
    tpr <- c(tpr,tp/true)
    fp <- sum((pre >= i) & (1-label))
    fpr <- c(fpr,fp/false)
  }
    plot(o_pre,tpr,type = "l",col= "green",xlab="threshold",ylab="tpr,fpr")
    lines(o_pre,fpr,type="l", col = "red")
    KSvalue <- max(tpr-fpr)
    sub = paste("KS value =",KSvalue)
    title(sub=sub)
    cutpoint <- which(tpr-fpr==KSvalue)
    thre <- o_pre[cutpoint]
    lines(c(thre,thre),c(fpr[cutpoint],tpr[cutpoint]),col = "blue")
    cat("KS-value:",KSvalue)
}
引用自编函数myKS:

myKS(pre, test$label)


3.AIC赤池信息量准则

赤池信息量准则 (Akaike Information Criterion ( AIC ))是衡量统计模型拟合优良性的一种标准,常用与最大似然估计。AIC定量地定义了测试模型,但是如果所有的模型都不能很好的表示测试数据。AIC计算了给定模型和真实模型之间的KL值。 以下引自百度百科


AIC=2k-2ln(L)
它的假设条件是模型的误差服从独立正态分布。
其中:k是所拟合模型中参数的数量,ln(L)是对数似然值
AIC的大小取决于L和k。k取值越小,AIC越小;L取值越大,AIC值越小。k小意味着模型简洁,L大意味着模型精确。因此AIC和修正的决定系数类似,在评价模型是兼顾了简洁性和精确性。
假设条件是模型的误差服从独立正态分布。 让n为观察数,SSR(SUM SQAURE OF RESIDUE)为残差平方和,那么AIC变为:
AIC=2k+nln(SSR/n)

4.BIC(SBC,SIC)

Schwarz's Bayesian Criterion,贝叶斯信息准则

BIC = -2lnL + plnn

lnL:最大对数你似然值

p:参数个数

n:样本量


5.PSI群体稳定性指标

PSI(population stability index)





你可能感兴趣的:(R语言)