PR 곡선 플롯에서의 "기준선" 은 총 훈련 데이터 수 대한 양의 예 의 수와 동일한 높이를 갖는 수평선 , 즉 데이터에서 긍정적 인 예의 비율 ( ).N P피엔피엔
그래, 왜 이럴까? "정크 분류기" 가 있다고 가정 해 봅시다 . 반환 무작위 확률 받는 번째 샘플 인스턴스 클래스에있을 . 편의상 이라고 말합니다 . 이 랜덤 클래스 할당의 직접적인 의미는 가 데이터의 긍정적 인 예의 비율과 동일한 (예상되는) 정밀도를 갖습니다. 자연 스럽습니다. 모든 우리의 데이타 완전히 랜덤 서브 샘플 것이다 정확하게 분류 예. 이것은 어떤 확률 임계 값에 true가됩니다C J p i i y i A p i ~ U [ 0 , 1 ] C J E { P씨제이씨제이피나는나는와이나는ㅏ피나는∼ U[ 0 , 1 ]씨제이qCJq[0,1]qACJqpi~U[0,1]q(100(1-q))%(100(1-q))%AxyP이자형{ P엔}큐 반환 한 클래스 멤버쉽의 확률에 대한 결정 경계로 사용할 수 있습니다 . ( 의 값이다 확률 값보다 크거나 동일 여기서 클래스에 분류된다 리콜 성능 한편.) (예상의)은 같 경우 . 주어진 임계 값에서 우리가 선택할 것입니다 (약) 이후이 포함됩니다 우리의 전체 데이터의 (약) 클래스의 인스턴스의 총 수의씨제이큐[ 0 , 1 ]qACJqpi∼U[0,1]q(100(1−q))%(100(1−q))%A샘플에서. 그러므로 우리가 처음에 언급 한 수평선! 모든 리콜 값 ( PR 그래프의 값)에 대해 해당 정밀도 값 ( PR 그래프의 값)은 .xyPN
간단한 참고 사항 : 임계 값 는 일반적으로 1에서 예상 리콜을 뺀 값과 같지 않습니다 . 이것은 위에서 언급 한 의 경우 결과 의 무작위 균일 분포로 발생합니다. 다른 분포 (예를 들어, )에 대해 와 리콜 사이의이 근사 아이덴티티 관계는 유지되지 않습니다. 은 이해하고 정신적으로 시각화하는 것이 가장 쉽기 때문에 사용되었습니다. 의 다른 랜덤 분포 의 경우 의 PR 프로파일은 변경되지 않습니다. 주어진 값에 대한 PR 값의 배치 만 변경됩니다.C J C J p i ~ B ( 2 , 5 ) q U [ 0 , 1 ] [ 0 , 1 ] C J qqCJCJpi∼B(2,5)qU[0,1][0,1]CJq
이제 완벽한 분류에 관한 , 하나는 반환 가능성이있는 분류 의미 샘플 인스턴스에 클래스의 복지 경우 클래스에 참으로 및 추가 확률 반환 경우 클래스의 멤버가 아닌 . 이것은 모든 임계 값 대해 정밀도를 가질 것임을 의미합니다 (즉, 그래프 용어에서는 정밀도 에서 시작하는 선을 얻습니다 ). 정밀도를 얻지 못하는 유일한 지점 은 입니다. 들면 1 y i A y i A C P 0 y i A q 100 % 100 % 100 % q = 0 q = 0 PCP1yiAyiACP0yiAq100%100%100%q=0q=0정밀도는 우리의 데이타 양성 사례 비율 (로 하강 )로서 (미치게?) 우리는 심지어 점을 분류 클래스의 존재의 확률 클래스 인 것으로 . 의 PR 그래프에는 정밀도에 대해 과 두 가지 가능한 값만 있습니다. 0AACP1PPN0AACP1PN
OK와 일부 R 코드는 양수 값이 샘플의 에 해당하는 예제와 함께 이것을 처음으로 보여줍니다 . 각 점과 관련된 확률 값이이 점이 등급이라는 확신을 정량화한다는 점에서 클래스 범주의 "소프트 할당"을 수행합니다 .A40%A
rm(list= ls())
library(PRROC)
N = 40000
set.seed(444)
propOfPos = 0.40
trueLabels = rbinom(N,1,propOfPos)
randomProbsB = rbeta(n = N, 2, 5)
randomProbsU = runif(n = N)
# Junk classifier with beta distribution random results
pr1B <- pr.curve(scores.class0 = randomProbsB[trueLabels == 1],
scores.class1 = randomProbsB[trueLabels == 0], curve = TRUE)
# Junk classifier with uniformly distribution random results
pr1U <- pr.curve(scores.class0 = randomProbsU[trueLabels == 1],
scores.class1 = randomProbsU[trueLabels == 0], curve = TRUE)
# Perfect classifier with prob. 1 for positives and prob. 0 for negatives.
pr2 <- pr.curve(scores.class0 = rep(1, times= N*propOfPos),
scores.class1 = rep(0, times = N*(1-propOfPos)), curve = TRUE)
par(mfrow=c(1,3))
plot(pr1U, main ='"Junk" classifier (Unif(0,1))', auc.main= FALSE,
legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.50)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.20)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
plot(pr1B, main ='"Junk" classifier (Beta(2,5))', auc.main= FALSE,
legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.50)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.20)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
plot(pr2, main = '"Perfect" classifier', auc.main= FALSE,
legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
여기서 검은 원과 삼각형 은 처음 두 플롯에서 각각 및 나타냅니다 . 우리는 즉시 "정크"분류 기가 과 같은 정밀도로 빠르게 이동 함을 알 수 있습니다 . 마찬가지로 완벽한 분류기는 모든 리콜 변수에서 정밀도 을 갖습니다. 당연하게도 "정크"분류기의 AUCPR은 샘플의 긍정적 인 비율 ( )과 같고 "완벽 분류기"의 AUCPR은 대략 입니다.q = 0.20 Pq=0.50q=0.20 1≈0.401PN1≈0.401
현실적으로 완벽한 분류기의 PR 그래프는 회귀를 가질 수 없기 때문에 약간 쓸모가 없습니다 (우리는 절대 부류 만을 예측하지 않습니다 ). 컨벤션 문제로 왼쪽 상단에서 선을 그리기 시작합니다. 엄밀히 말하면 두 점만 표시하면 끔찍한 곡선이됩니다. :디0
기록을 위해, PR 곡선의 유용성에 관한 이력서에는 이미 매우 좋은 답변이 있습니다 : here , here 및 here . 주의 깊게 읽는 것만으로도 PR 곡선에 대한 일반적인 이해가 가능해야합니다.