ROC曲线学习

Posted qi-yuan-008

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROC曲线学习相关的知识,希望对你有一定的参考价值。

ROC曲线:全称 Receiver Operating Characteristic曲线,即受试者工作特性曲线,在机器学习领域常用于判断分类器的好坏。

要了解ROC曲线,首先要了解该曲线的横纵坐标 —— FPR(1-特异度)TPR(召回率或者灵敏度)

1. 基本概念 —— 混淆矩阵

技术图片

绘制混淆矩阵https://www.cnblogs.com/qi-yuan-008/p/11675499.html

2. ROC曲线的横坐标是FPR值,纵坐标是TPR值;每指定一个threshold,就对应一个FPR-TPR值对。

threshold 表示的是:测试样本中每个样本预测为正的概率,并且从大到小排列。

AUC的值表示的是:ROC曲线下方区域的面积大小 —— 即对曲线进行积分所得;一般来说,AUC的值越大,分类器的分类性能越好。

3. Python绘制ROC曲线:

以支持向量机分类为例,假设训练样本为:x_train,y_train,测试样本为:x_test,y_test

from sklearn.svm import SVC
from sklearn.metrics import confusion_matrix
from sklearn import metrics
import matplotlib.pyplot as plt

def svm_func(x_train,y_train,x_test,y_test):
    clf = SVC(kernel = linear, verbose=True)
    clf.fit(x_train,y_train)
    pred = clf.predict(x_test)

    #混淆矩阵, labels为数据中各类标签值,这里0为负样本,2为正样本
    cm = confusion_matrix(y_test, pred, labels=[0, 2]) #纵坐标是y_test,横坐标是pred
    print(cm)

    # 绘制ROC曲线
    fpr, tpr, thresholds = metrics.roc_curve(y_test, pred, pos_label=2) # pos_label表示选定该标签是正,其他的均为负,绘制ROC曲线
    auc = metrics.auc(fpr, tpr)  #计算AUC值
    
    # # 设置绘图风格
    plt.figure()
    plt.style.use(ggplot)
    
    # 绘制ROC曲线
    plt.plot(fpr, tpr,‘‘)
    # 绘制参考线
    plt.plot((0,1),(0,1),r--)
    # 添加文本
    plt.text(0.5,0.5,AUC值为%.2f % auc, fontsize=16)

    plt.title(支持向量机模型的ROC曲线)
    plt.xlabel(1-specificity)
    plt.ylabel(Sensitivity)
    
    # 中文和负号的正常显示
    plt.rcParams[font.sans-serif] = [SimHei]
    plt.rcParams[axes.unicode_minus] = False
    
    # 去除图形顶部边界和右边界的刻度
    plt.tick_params(top=False, right=False)
    plt.show()

技术图片

注:

[1]. ROC曲线适用于二分类,但是可以扩展至多分类。

[2]. 当负样本数量远远大于正样本数量时,ROC曲线可能会不正确,这时可用PR曲线(Precision-Recall曲线)。

##

参考:

https://blog.csdn.net/u012429555/article/details/82973387

https://www.cnblogs.com/Zhi-Z/p/8728168.html

https://blog.csdn.net/qq_30992103/article/details/99730059

https://zhuanlan.zhihu.com/p/25212301

https://www.jianshu.com/p/2ca96fce7e81

以上是关于ROC曲线学习的主要内容,如果未能解决你的问题,请参考以下文章

机器学习中的性能指标:精度召回率,PR曲线,ROC曲线和AUC,及示例代码

Sklearn机器学习——ROC曲线ROC曲线的绘制和AUC面积运用ROC曲线找到最佳阈值

R语言机器学习 | 9 ROC曲线

ROC曲线学习

绘制 Roc 曲线的自动编码器分类

机器学习-ROC曲线