第八十九篇 模型评估AUC,KS,ROC曲线

心得:平时用到模型评估挺多的,来总结一下各个评估标准的具体计算方法和原理

一、混淆矩阵

混淆矩阵是用来总结一个分类器结果的矩阵。对于k元分类,其实它就是一个k x k的表格,用来记录分类器的预测结果。

比如我们最常见的二分类:

比如我们一个模型对15个样本进行预测,然后结果如下。

预测值:1 1 1 1 1 0 0 0 0 0 1 1 1 0 1

真实值:0 1 1 0 1 1 0 0 1 0 1 0 1 0 0

统计到表里如下:
在这里插入图片描述
通常我们会用TP,FP,TN,FN等指标来计算一些模型的效果指标
在这里插入图片描述

二、 准确率,精确率,召回率,F-measure

1. 准确率

在这里插入图片描述

所有的预测正确(正类负类)的占总的比重:准确率 = (5+4) / 15 = 0.6

2. 精确率(precision, 或者PPV, positive predictive value)

在这里插入图片描述
搜索中,精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率

即正确预测为正的占全部预测为正的比例 :精确率 = 5 / (5+4) = 0.556

3. 召回(recall, 或者敏感度,sensitivity,真阳性率,TPR,True Positive Rate)

在这里插入图片描述
搜索中,召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。

Recall = 5 / (5+2) = 0.714

4. F-Measure是Precision和Recall加权调和平均

F1值为算数平均数除以几何平均数,且越大越好
在这里插入图片描述
F1-值 = 25 / (25+4+2) = 0.625

三、TPR,FPR,AUC,ROC,KS

TPR: 真正率 代表将正真实的样本划分为正样本的概率
FPR: 假正率 代表将真实的负样本划分为正样本的概率
在这里插入图片描述

1. ROC曲线:用来评判分类、检测结果的好坏

横坐标:1-Specificity,伪正类率(False positive rate,FPR,FPR=FP/(FP+TN)),预测为正但实际为负的样本占所有负例样本的比例;

纵坐标:Sensitivity,真正类率(True positive rate,TPR,TPR=TP/(TP+FN)),预测为正且实际为正的样本占所有正例样本的比例。

ROC绘制:
1. 模型预测的一般是样本的概率值,我们计算TPR和FPR是分好的类,所以我们需要定义阈值,将概率一分为二,变成二分类
2. 一种阈值比如0.5可以将概率分开,会对应一组TPR,FPR。阈值的取法平常不一定是0.5,所以多个阈值的取法,造就了多组的TPR,FPR
3. 每次选取一个不同的threshold,得到一组FPR和TPR,以FPR值为横坐标和TPR值为纵坐标,即ROC曲线上的一点。
4. 最后可以画出ROC图了

2. AUC: ROC曲线线下的面积为auc值
from sklearn.metrics import roc_curve, auc
auc_value = auc(fpr, tpr)
3. KS(Kolmogorov-Smirnov)

KS用于模型风险区分能力进行评估, 指标衡量的是好坏样本累计分部之间的差值,好坏样本累计差异越大,KS指标越大,那么模型的风险区分能力越强。
ks = max(TPR-FPR)

sklearn示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc

ture_y = np.array([1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0])

np.random.seed(1)
predict_y = np.random.rand(len(ture_y))

fpr, tpr, thresholds = roc_curve(ture_y, predict_y)
auc_value = auc(fpr, tpr)

ks = max(tpr-fpr)

print("fpr:{},tpr:{}".format(fpr,tpr))
print("thresholds:{}".format(thresholds))
plt.plot(fpr, tpr)
plt.legend(["auc:%.2f ks:%d"%(auc_value,ks*100)])
plt.show()

在这里插入图片描述

输出:

fpr:[0.   0.   0.25 0.25 0.75 0.75 1.   1.  ],tpr:[0.14285714 0.28571429 0.28571429 0.57142857 0.57142857 0.71428571
 0.71428571 1.        ]
thresholds:[7.20324493e-01 5.38816734e-01 4.19194514e-01 3.96767474e-01
 3.02332573e-01 1.86260211e-01 1.46755891e-01 1.14374817e-04]
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值