模型評估方法-K-S值-附R實現代碼

2019-01-18修改,新增ks值的R語言實現

風控模型中計算K-S值方法:

K-S值主要驗證風控模型對違約對象的區分能力,通常是在風控模型預測完全體樣本的風控評分後,將全體樣本按是否違約分爲兩部分,然後用K-S值檢驗兩組樣本的風控評分是否有顯著差異

將全體樣本按風控評分從低到高排序均分成十組,分別計算每組的實際好樣本數、實際壞樣本數、累計好樣本數、累計壞樣本數、累計好樣本數佔比(總好樣本數)、累計壞樣本數佔比(總壞樣本數)、abs(累計好樣本數佔比-累計壞樣本數佔比)

K-S值=max(abs(累計好樣本數佔比-累計壞樣本數佔比)),K-S值只能反映出哪個分段是區分最大的

全體樣本被分爲十等份,每份樣本風控評分的最大值可視爲閾值(小於閾值則預測爲好樣本),則累計好樣本數佔比爲真陽性率,累計壞客戶佔比爲假陽性率。K-S曲線的橫座標是等分值,縱座標分別是TPR+FRP累計值

 K-S值>0.2即可認爲模型具有比較好的預測準確性,值越大表示模型的區分度越好

ks_value=function(result,pre_prob,true_label){
	TPR <- NULL
	FPR <- NULL
	#預測概率從小到大排序
	for(i in seq(from=0,to=1,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,round(TP/(TP+FN),3))
		#僞陽性率
		FPR <- c(FPR,round(FP/(FP+TN),3))
	}

	max(TPR-FPR)	
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章