ROC-wiki

AUC常常在文章中作为评价一个分类器优劣的指标, 却总是忘记其原由, 索性记上一笔.

TPR, FPR

首先理解TP, FP, FN, TN的概念, 下面是其对应的类型. 这里, P表示正样本, 而N表示负样本, 下表中的行为真实的标签, 列为预测的标签.

预测\真实 P N
P TP(True Positive) FP(False Negative)
N FN(False Negative) TN(True Positive)


T P R : = T P T P + F N , F P R : = F P F P + T N , \mathrm{TPR} := \frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}, \mathrm{FPR}:= \frac{\mathrm{FP}}{\mathrm{FP}+\mathrm{TN}}, TPR:=TP+FNTP,FPR:=FP+TNFP,
即TPR表示正样本分类正确的概率, FPR表示负样本判断错误(即取伪)的概率.

问题是如何通过这俩个指标反映一个二分类器的优劣, 首先假设二分类器由下列方式定义:
f : R d → R , c ( x ; T ) = I ( f ( x ) > T ) , f:\mathbb{R}^d \rightarrow \mathbb{R}, \quad c(x;T) = I(f(x)>T), f:RdR,c(x;T)=I(f(x)>T),,
其中 T T T便是阈值, 即超过一定的阈值判断其为正样本.

注: 其实此说法有瑕疵, 因为完全有可能选择超过一定的阈值判断其为负样本时分类器效果"更好", 但是这种争论没有多大意义, 逼近只需取 f ′ ( x ) = − f ( x ) f'(x)=-f(x) f(x)=f(x)即可.

显示强调 T T T的存在, 有 T P R ( T ) \mathrm{TPR}(T) TPR(T) F P R ( T ) \mathrm{FPR}(T) FPR(T), 另外, 此时 f f f可以看成一个随机变量, 不妨令 Y + Y_+ Y+表示 f f f的输入 X X X为正样本时的随机变量, Y − Y_- Y表示 f f f的输入 X X X为负样本时的随机变量, 则
T P R ( T ) = P ( Y + > T ) = ∫ T ∞ p ( y ∣ + ) d y , F P R ( T ) = P ( Y − > T ) = ∫ T ∞ p ( y ∣ − ) d y . \mathrm{TPR}(T)=P(Y_+>T) = \int_{T}^{\infty} p(y|+) \mathrm{d}y, \\ \mathrm{FPR}(T)=P(Y_->T) = \int_{T}^{\infty} p(y|-) \mathrm{d}y. TPR(T)=P(Y+>T)=Tp(y+)dy,FPR(T)=P(Y>T)=Tp(y)dy.

ROC and AUC

ROC曲线就是以 y = T P R ( T ) y=\mathrm{TPR}(T) y=TPR(T), x = F P R ( T ) x=\mathrm{FPR}(T) x=FPR(T)的曲线, T T T在这里充当一个中间变量.
AUC就是ROC曲线下的面积, 其意义是概率 P ( Y + > Y − ) P(Y_+>Y_-) P(Y+>Y):
A U C = ∫ 0 1 y ( x ) d x = ∫ 0 1 T P R ( F P R − 1 ( x ) ) d x = ∫ + ∞ − ∞ T P R ( T ) F P R ′ ( T ) d T = ∫ + ∞ − ∞ ∫ T ∞ p ( y ∣ + ) ⋅ ( − p ( y ∣ − ) ) d y d T = ∫ − ∞ + ∞ ∫ T ∞ p ( y ∣ + ) p ( y ∣ − ) d y d T = ∫ − ∞ + ∞ ∫ − ∞ ∞ I ( y > T ) p ( y ∣ + ) p ( y ∣ − ) d y d T = P ( Y + > Y − ) . \begin{array}{ll} \mathrm{AUC} &= \int_0^1 y(x) \mathrm{d}x = \int_0^1 \mathrm{TPR}(\mathrm{FPR}^{-1}(x)) \mathrm{d}x \\ &= \int_{+\infty}^{-\infty} \mathrm{TPR}(T) \mathrm{FPR}'(T) \mathrm{d}T \\ &= \int_{+\infty}^{-\infty} \int_{T}^{\infty} p(y|+) \cdot(-p(y|-)) \mathrm{d}y \mathrm{d}T \\ &= \int_{-\infty}^{+\infty} \int_{T}^{\infty} p(y|+)p(y|-) \mathrm{d}y \mathrm{d}T \\ &= \int_{-\infty}^{+\infty} \int_{-\infty}^{\infty} I(y>T)p(y|+)p(y|-) \mathrm{d}y \mathrm{d}T \\ &= P(Y_+ > Y_-). \end{array} AUC=01y(x)dx=01TPR(FPR1(x))dx=+TPR(T)FPR(T)dT=+Tp(y+)(p(y))dydT=+Tp(y+)p(y)dydT=+I(y>T)p(y+)p(y)dydT=P(Y+>Y).

当然很自然的评价指标是, AUC距离0.5越远越好(这么说是因为AUC=0, 实际上只需 f ′ ( x ) = − f ( x ) f'(x)=-f(x) f(x)=f(x)).

ROC and AUC

代码

sklearn-roc_curve

相关文章: