ROC曲线的横坐标轴是FPR(False Positive Rate),纵坐标轴是TPR(True Positive Rate),对应于下面的混淆矩阵(fusion matrix):
T
P
R
=
T
P
T
P
+
F
N
TPR = \frac{TP}{TP+FN}
T
P
R
=
T
P
+
F
N
T
P
TP指的是正类被分为正类的个数,FN指的是正类被分为负类的个数(错误的负类),所以TP+FN指的就是所有正类的个数,这样这个比值的意义就是
所有正类样本中被正确分类为正类的比值
。结合异常点检测的例子(异常点是正类,正常点是负类)就是,异常点中被正确分为异常点的比值。
F
P
R
=
F
P
F
P
+
T
N
FPR = \frac{FP}{FP+TN}
F
P
R
=
F
P
+
T
N
F
P
FP指的是负类被分为正类的个数(错误的正类),TN指的是负类被分为负类的个数,所以FP+TN就是所有负类的个数,这样这个比值的意义就是
所有负类样本中被错误分为正类的比值
。还是结合异常点检测的例子就是,正常点中被错误地分为异常点的比值。
再用在知乎上看到的一句来升华:AUC指的是分类器输出该正样本为正的那个概率值 比 分类器输出该负样本为正的那个概率值 要大的可能性。
因此,总的来说TPR和FPR分别
可以看出TPR和FPR分别是TP和FP在其所在混淆矩阵的所在列的比例。
ROC曲线的作用是
为分类器选择最优阈值
,如一个二分类的分类器对一个样本的的分类score是0.6,阈值设置为大于0.5时分类为正类,那么这个样本就是正类。而如果阈值设置为大于0.7时分类为正类,那么自然这个样本就被分为了负类。这样不同阈值得到的TPR和FPR自然是不一样的,但是总有一个阈值是最合适的。
所以,在ROC曲线中,一般认为
ROC曲线中最靠近左上角的点是分类错误最少的最优阈值
。另外,所取的阈值越多,采样的点也就越多,从而形成的ROC曲线也就越平滑。如下图中分别是对应了TPR和FPR在(0,0)、(0.5,0.75)以及(1,1)条件下形成的ROC曲线。
AUC即是ROC曲线下方区域构成的面积(Area Under ROC Curve)。AUC面积越大,模型的分类效果越好。
ROC和AUC一般常用于
label unbanlance
的数据的分类指标中。如在异常点检测中,异常点,也就是正类,常常很少。如100个样本点中只有一个异常点,我们把所有数据都分类为负类,得到的accuracy是99%,但是显然accuracy并不是我们要的衡量指标。而通过ROC曲线得到的TPR和FPR都是0(TP和FP都是0),这样得到的AUC也就是0了。
文中图片来源:如何理解机器学习和统计中的AUC? – 无涯的回答 – 知乎
https://www.zhihu.com/question/39840928/answer/241440370