本文主要记录几种常用的模型检验方法,重点在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代码片断。
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(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)
假设条件是模型的误差服从独立正态分布。 让n为观察数,SSR(SUM SQAURE OF RESIDUE)为残差平方和,那么AIC变为:
AIC=2k+nln(SSR/n)
4.BIC(SBC,SIC)
Schwarz's Bayesian Criterion,贝叶斯信息准则
lnL:最大对数你似然值
p:参数个数
n:样本量
5.PSI群体稳定性指标
PSI(population stability index)