爱收集资源网

常见模型评价指标及ROC曲线运用

网络整理 2023-09-26 23:02

编辑推荐

假如你对于个别概念还一知半解,快来上一节建模基础课,巩固一下基本方法吧!明天为你们深度分解几个常见的模型评价指标,中间还有ROC曲线的巧妙运用一例哦。

无论是借助模型对信用申请人进行毁约辨识,还是对授信申请人进行逾期辨识……在各类各样的统计建模中,永远必不可少的一步是对模型的评价,这样我们就可以依据模型评价指标的取值高低,来决定选定那个模型。

近来在某国外商业建行的授信项目中,我们尝试了决策树、logistic等模型来找寻逾期顾客的特点。有三天一位专攻系统的男子伴突然问我,ROC曲线和K-S曲线的区别和联系是哪些?我当时简单解释了一下,事后却细思恐极,由于我仅仅解释了知其然,而没有解释所以然。好吧,为了帮男子伴真正理解这种概念,我就在此详尽分解一番。

以二分类问题为例有roc指标的软件,模型输出会出现四种情况:

预测1

预测0

合计

真实1

TruePositive(TP)

FalseNegative(FN)

ActualPositive

(TP+FN)

真实0

FalsePositive(FP)

有roc指标的软件_有roc指标的软件_有roc指标的软件

TrueNegative(TN)

ActualNegative

(FP+TN)

合计

PredictedPositive

(TP+FP)

PredictedNegative

(FN+TN)

TP+FP+

FN+TN

我们最关心的结果是正确预测的机率和错判率,常见的指标有:

(1)TruePositiveRate,简称为TPR,估算公式为TPR=TP/(TP+FN)——所有真实的“1”中,有多少被模型成功选出;

(2)FalsePositiveRate,简称为FPR,估算公式为FPR=FP/(FP+TN)——所有真实的“0”中,有多少被模型错判为1了;

(3)Precision=TP/(TP+FP),或2TP/((TP+FN)+(TP+FP))。

其中最常用的是TPR和FPR。最理想的模型,其实是TPR尽量高而FPR尽量低啦,但是任何模型在提升正确预测机率的同时,也会无法防止地降低错判率。听上去有点具象,好在有ROC曲线十分形象地抒发了两者之间的关系。

有roc指标的软件_有roc指标的软件_有roc指标的软件

对于一个二分类模型,输出的最初结果是连续的;假定早已确定一个阈值,这么最初结果小于阈值时,则输出最终结果为1,大于阈值则输出为0。如果阈值取值为0.6,这么FPR和TPR就可以估算出此时的取值,标志为一个点,记为(FPR1,TPR1);假如阈值取值为0.5,同理就可以估算出另一个点,记为(FPR2,TPR2)。设定不同的阈值,就可以估算不同的点(FPR,TPR),

我们以FPR为横座标,TPR为纵座标,把不同的点连成曲线,就得到了ROC曲线。理论上ROC就是如此画下来的,这么问题来了,阈值怎样确定?

以Logistic模型为例,模型输出的结果显然是机率,之后我们通过设定阈值,把机率转化为最终的输出结果0和1。首先出现在我们脑中的直观看法,就是把(0,1)区间进行等分,例如,等分为十个区间(虽然分成多少份都可以,你们可以自由发挥),这么就可以分别以0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9为阀值,首先估算出按照阈值判断出的0和1有多少,以及判断为1真实为1和判别为1真实为0的有多少;之后估算出不同的(FPR,TPR)值;最后把点之间进行连线,画出的曲线即是ROC曲线。

下边,我们以某商业建行某时间段内某分理处顾客的逾期相关数据为例详尽说明:P代表此分行的某顾客的逾期率(姑且定义为在此时间段内某顾客的逾期可能性),Y代表是否为高逾期顾客,X是与逾期有关的相关指标,例如行业、企业规模、客户的三级分类等等。

但是,当把这个直观的看法对案例数据付诸施行的时侯,我们发觉估算出的机率值都落在[0.0092,0.578]区间范围内。这些情况下,假如还用前面的“直观看法”(即一直假设P大于阀值时,判断为0),这么设定阀值为0.1到0.5时,还能估算出不同的(FPR,TPR)值;而将阀值取到0.6到0.9时,模型的判断结果为所有的样本就都是0了……sosad!估算出的(FPR,TPR)值都是(0,0),ROC曲线的点由11个弄成了6个…….

看来实践是检验真理的惟一标准!面对这个特殊案例,我们的直观看法肯定须要改进。最终,我们的实现方式是:

1.把(0,1)区间升级为(min(P),max(P));

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

3.依照不同的阈值,估算出不同的(FPR,TPR)值。

这时侯再画出ROC曲线,就防止了里面的问题。

我给男子伴讲了一下以上思路,但是男子伴又发问了:这样在写代码实现的过程中,每次都要和阈值进行做比较,估算量比较大,不如先对样本估算出的P值从小到大排序(其实从大到小也可以),取前百分之几(例如10%)处的值为阈值,这么排序然后前百分之几(例如前10%)的判断为0,其他则判断为1。这样估算量就少了好多啦!

于是,我们继续改进阈值的设置,首先把Logistic模型输出的机率从小到大排序,之后取10%的值(也就是机率值)作为阈值,同理把10%*k(k=1,2,3,…,9)处的值作为阈值,估算出不同的(FPR,TPR)值,就可以画出ROC曲线啦。

然而,从小到大排序以后,每次取前百分之几处的值为阈值呢?总共分成10份还是100还是1000份呢?有选择困难症的男子伴又郁闷了,告诉你个办法,别苦恼,有多少个模型输出的机率值就分成多少份,不再考虑百分之几!例如Logistic模型输出的机率有214个,这么我们把214个目标变量从小到大进行排序,之后分别以这214个的机率值为阈值,可以估算出214个不同的(FPR,TPR)值,也可以画出ROC曲线。

ROC曲线画好后有roc指标的软件,就要发挥好处!对于一个模型一组参数可以画出一条ROC曲线,此时最优的阈值是哪些呢?TPR和FPR是正相关的,也就是说,正确判断出1的数目降低时,必然要伴随着代价:错判为1的FP也降低。

从ROC曲线上也可以反映出这些变化,从ΔTPR>ΔFPR到ΔTPR

有roc指标的软件
上一篇:电脑网络问题解决方案 下一篇:没有了
相关文章