机器学习:分类算法性能指标之ROC曲线

时间:2022-12-08 09:00:48

      在介绍ROC曲线之前,先说说混淆矩阵及两个公式,因为这是ROC曲线计算的基础。

1.混淆矩阵的例子(是否点击广告):

机器学习:分类算法性能指标之ROC曲线

     说明:

            TP:预测的结果跟实际结果一致,都点击了广告。

            FP:预测结果点击了,但是真实情况是未点击。

            FN:预测结果没有点击,但是真实情况是点击了。

            TN:预测结果没有点击,真实情况也是没有点击。

2.两个公式:

    1)真正率:

         TPR=TP/(TP+FN)

    2)假正率

         FPR=FP/(FP+TN)

3.ROC曲线就是真正率随假正率的变化情况。下面用一段代码展示一下(sklearn包中包含相关算法):

##导入相关包
import numpy as np
from sklearn import metrics
import matplotlib.pyplot as plt

##设置y值:表示实际值
y = np.array([1, 1, 2, 2])
##设置pred值:表示预测后的值
pred = np.array([0.1, 0.4, 0.35, 0.8])
##计算相关数据:注意返回的结果顺序
fpr, tpr, thresholds = metrics.roc_curve(y, pred, pos_label=2)
##计算曲线下面积
roc_auc=metrics.auc(fpr, tpr)
##绘图
plt.clf()
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.0])
plt.xlabel(
'False Positive Rate')
plt.ylabel(
'True Positive Rate')
plt.legend(loc
="lower right")
plt.show()

  结果如图所示:

 机器学习:分类算法性能指标之ROC曲线

4.关于ROC曲线

  1)虚线所示直线随机分类时的ROC曲线,一般画到图中作为参照点

  2)对于一个完美的分类器,ROC曲线应该是从(0,0)到(0,1),然后横着连到(1,1)的折线

  3)ROC曲线越接近左上角,分类效果越好

5.关于AUC

  1)AUC表示曲线下面的面积

  2)对于一个完美的分类器,AUC的值应该为1

  3)对于一个随机猜测分类器(即图中虚直线),AUC的面积为0.5

  4)AUC面积越大,分类效果越好