Перейти к основному содержимому

Построение ROC-кривой по данным

При практическом построении ROC-кривой нам не нужно перебирать все вещественные пороги α\alpha, поскольку мы работаем с конечной выборкой

(x1,y1),(x2,y2),...(xN,yN).(\mathbf{x}_1,y_1),(\mathbf{x}_2,y_2),...(\mathbf{x}_N,y_N).

Мы рассчитываем относительную дискриминантную функцию нашего классификатора g(x)g(\mathbf{x}) для каждого объекта и сортируем все объекты по возрастанию этой функции:

g(x(1))g(x(2))...g(x(N))g\left(\mathbf{x}_{(1)}\right)\ge g\left(\mathbf{x}_{(2)}\right)\ge...\ge g\left(\mathbf{x}_{(N)}\right)

Далее ROC-кривая строится итеративно, стартуя из точки (FPR0,TPR0FPR_0,TPR_0)=(0,0) при движении вдоль значений g(x)g(\mathbf{x}) справа-налево, перебирая в качестве пороговых α\alpha только следующие значения:

g(x(N)),g(x(N1)),...g(x(1)),g(x(1))1g\left(\mathbf{x}_{(N)}\right), g\left(\mathbf{x}_{(N-1)}\right),... g\left(\mathbf{x}_{(1)}\right), g\left(\mathbf{x}_{(1)}\right)-1

При переходе через объект положительного класса следующая точка ROC-кривой получается сдвигом вверх на 1N+\frac{1}{N_+}, поскольку на один верно-положительный объект стало больше, что повысит TPR на 1N+\frac{1}{N_+} при том же уровне FPR.

А при переходе через отрицательный - сдвигом вправо на 1N\frac{1}{N_-}, поскольку стало на один объект больше среди ложно-положительных срабатываний. FPR увеличится, а TPR останется неизменным.

Пример построения ROC-кривой показан на рисунке:

ROCcurveconstructionpng

Далее ROC-кривая может сглаживаться линейной интерполяцией между точками.