[总结]ROC曲线、AUC、准确度、召回率

ROC曲线、AUC、准确度、召回率…

  • 混淆矩阵
Label : 1Label : 0
Estimation: 1TP(True Positive)
Estimation: 0FN(False Negative)

- 准确率和召回率(Precision & Recall)

准确率为预测为正的人当中有多少预测正确了。

Precision(P)=TPTP+FP P r e c i s i o n ( P ) = T P T P + F P

召回率为真正为正的人当中有多少被预测到了。
Recall(R)=TPTP+FN R e c a l l ( R ) = T P T P + F N

  • F值:综合考虑了P和R。

    2F=1P+1R 2 F = 1 P + 1 R

  • ROC曲线 : x轴为假阳性(FPR),y轴为真阳性(TPR)。

    若我们预测出来的结果都是预测为正的概率值,那么混淆矩阵需要确定一个阈值,才可以得到。

    针对每个阈值,都可以计算两个指标(分母为分子真实所属类的样本数目):

    ①真阳率:是指真正正样例中的预测出来的比例,等价于召回率。

    TPR=R=TPTP+FN T P R = R = T P T P + F N

    ②假阳率:是指所有负样例中被预测为正的比例。
    FPR=FPFP+TN F P R = F P F P + T N

    不同的阈值得到不同的 TPR T P R FPR F P R 值,连起来则得到ROC曲线。

    若模型完全正确,则 FP=FN=0 F P = F N = 0 ,则有 TPR=1,FPR=0 T P R = 1 , F P R = 0 .

    此时ROC曲线经过(0,1)点,因此认为ROC曲线越靠近左上角越好。

  • AUC(Area Under Curve):ROC曲线下的面积。


    这里写图片描述

  • Gini系数:Gini系数指ROC曲线与中线(上图红线)围成的面积和中线(上图红线)之上的面积(0.5)的比例。

    两者之间换算公式为 Gini=2AUC1=2(AUC0.5) G i n i = 2 ∗ A U C − 1 = 2 ( A U C − 0.5 ) .

  • KS(Kolmogorov-Smirnov)值:TPR与FPR的差的最大值。

    KS值可以反映模型的最优区分效果,此时所取的阈值一般作为定义好坏用户的最优阈值。

    KS=max(TPRFPR) K S = max ( T P R − F P R )

  • PR曲线(Precision-Recall curve):PR曲线是准确率和召回率的点连成的线。

这里写图片描述

  • 比较

    TPR、FPR、Precision、Recall的定义来对比,TPR、Recall的分母为样本中坏客户的个数,FPR的分母为样本中好客户的个数,样本一旦确定分母即为定值,因此三个指标的变化随分子增加单调递增。但是Precision的分母为预测为坏客户的个数,会随着阈值的变化而变化,因此Precision的变化受TP和FP的综合影响,不单调,变化情况不可预测。而且TP和FP的值分别受样本中好坏客户个数的制约,若样本极不均衡,比如好客户过多,则随Recall的增加,FP会远大于TP的值,Precision会变化很大。
    相对来讲ROC曲线会稳定很多,在正负样本量都足够的情况下,ROC曲线足够反映模型的判断能力。


参考文献:https://www.jianshu.com/p/55b17fe758e4

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在支持向量机中,绘制ROC曲线可以得到精确度和准确度。 首先,我们需要使用支持向量机模型对数据进行训练和预测。然后,根据预测结果和真实标签,计出不同阈值下的真正例率(True Positive Rate,也就是召回率)和假正例率(False Positive Rate)。通过改变阈值,我们可以得到一系列的真正例率和假正例率的值。 接下来,我们可以使用这些真正例率和假正例率的值来绘制ROC曲线ROC曲线是以假正例率为横轴,真正例率为纵轴的曲线。曲线上的每个点代表了一个特定的阈值下的真正例率和假正例率。通过连接这些点,我们可以得到ROC曲线。 在ROC曲线上,我们可以通过计曲线下的面积(AUC)来评估模型的性能。AUC的取值范围在0到1之间,值越接近1表示模型的性能越好。 绘制ROC曲线和计AUC可以使用Python中的scikit-learn库来实现。下面是一个示例代码: ```python from sklearn import svm from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 假设X是特征数据,y是标签数据 X = ... y = ... # 创建支持向量机模型 model = svm.SVC(probability=True) # 训练模型 model.fit(X, y) # 预测概率 y_score = model.predict_proba(X)[:, 1] # 计真正例率和假正例率 fpr, tpr, thresholds = roc_curve(y, y_score) # 计AUC roc_auc = auc(fpr, tpr) # 绘制ROC曲线 plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], 'k--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver Operating Characteristic') plt.legend(loc="lower right") plt.show() ``` 通过运行以上代码,我们可以得到支持向量机模型的ROC曲线,并计出相应的精确度和准确度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值