ํƒœ๊ทธ ๋ณด๊ด€๋ฌผ: classification

classification

์ˆ˜๋™์œผ๋กœ ๊ณก์„  ์•„๋ž˜ ๋ฉด์  (AUC) ๋˜๋Š” c- ํ†ต๊ณ„๋Ÿ‰์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ• โ€œ์ •ํ™•ํ•œโ€๋ชจ๋ธ ๋ถ„๋ฅ˜ ์ˆ˜๋ฅผ ์‹๋ณ„ํ•˜๊ณ 

์ด์ง„ ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ๋ชจ๋ธ์˜ ์ˆ˜์ž‘์—…์œผ๋กœ ๊ณก์„  ์•„๋ž˜ ๋ฉด์  (AUC) ๋˜๋Š” c- ํ†ต๊ณ„๋Ÿ‰์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ ์ข…์† ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์‹ค์ œ ๊ฐ’, ๋ณด์กด (1 = ์œ ์ง€; 0 = ์œ ์ง€๋˜์ง€ ์•Š์Œ)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ํšŒ๊ท€ ๋ถ„์„์— ์˜ํ•ด ์ƒ์„ฑ ๋œ ๊ฐ ๊ด€์ธก์น˜์˜ ์˜ˆ์ธก ๋ณด์กด ์ƒํƒœ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ํ›ˆ๋ จ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค (0์—์„œ 1๊นŒ์ง€).

์ €์˜ ์ดˆ๊ธฐ ์ƒ๊ฐ์€ โ€œ์ •ํ™•ํ•œโ€๋ชจ๋ธ ๋ถ„๋ฅ˜ ์ˆ˜๋ฅผ ์‹๋ณ„ํ•˜๊ณ  โ€œ์ •ํ™•ํ•œโ€๊ด€์ธก ์ˆ˜๋ฅผ ์ด ๊ด€์ธก ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด c- ํ†ต๊ณ„๋Ÿ‰์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. โ€œ์ •ํ™•ํ•œโ€๊ธฐ์ค€, ๊ด€์ธก์น˜์˜ ์‹ค์ œ ๋ณด์œ  ์ƒํƒœ๊ฐ€ 1์ด๊ณ  ์˜ˆ์ธก ๋œ ๋ณด์œ  ์ƒํƒœ๊ฐ€> 0.5์ด๋ฉด โ€œ์ •ํ™•ํ•œโ€๋ถ„๋ฅ˜์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ด€์ธก์น˜์˜ ์‹ค์ œ ๋ณด์œ  ์ƒํƒœ = 0์ด๊ณ  ์˜ˆ์ธก ๋œ ๋ณด์œ  ์ƒํƒœ๊ฐ€ <0.5 ์ธ ๊ฒฝ์šฐ โ€œ์ •ํ™•ํ•œโ€๋ถ„๋ฅ˜์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ธก ๊ฐ’์ด 0.5 ์ผ ๋•Œ โ€œtieโ€๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€๋งŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ์ดํ„ฐ ์„ธํŠธ์—์„œ ํ•ด๋‹น ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, โ€œ์ •ํ™•ํ•˜์ง€ ์•Š์€โ€๋ถ„๋ฅ˜๋Š” ๊ด€์ธก์น˜์˜ ์‹ค์ œ ๋ณด์œ  ์ƒํƒœ = 1์ด๊ณ  ์˜ˆ์ธก ๋œ ๋ณด์œ  ์ƒํƒœ๊ฐ€ <0 ์ธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. 5 ๋˜๋Š” ๊ฒฐ๊ณผ์˜ ์‹ค์ œ ๋ณด์กด ์ƒํƒœ๊ฐ€ 0์ด๊ณ  ์˜ˆ์ธก ๋ณด์กด ์ƒํƒœ๊ฐ€> 0.5 ์ธ ๊ฒฝ์šฐ. ๋‚˜๋Š” TP, FP, FN, TN์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ์ด ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง€๋ฉด c ํ†ต๊ณ„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.



๋‹ต๋ณ€

Hanley โ€˜s & McNeil์˜ 1982 ๋…„ ๋…ผ๋ฌธ โ€˜ ROC (์ˆ˜์‹ ๊ธฐ ๋™์ž‘ ํŠน์„ฑ) ๊ณก์„  ์•„๋ž˜ ์˜์—ญ์˜ ์˜๋ฏธ์™€ ์‚ฌ์šฉ โ€˜์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ณ‘ ์ƒํƒœ ๋ฐ ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ ํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (์˜ˆ : ๋ฌผ๋ฅ˜ ๋ชจ๋ธ์˜ ์˜ˆ์ƒ ์œ„ํ—˜์— ํ•ด๋‹น). ์˜ค๋ฅธ์ชฝ์˜ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ์‹ค์ œ ์งˆ๋ณ‘ ์ƒํƒœ๊ฐ€ โ€˜์ •์ƒโ€™์ธ ํ™˜์ž์˜ ์ˆ˜์ด๊ณ  ๋‘ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ์‹ค์ œ ์งˆ๋ณ‘ ์ƒํƒœ๊ฐ€ โ€˜๋น„์ •์ƒโ€™ ์ธ ํ™˜์ž์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค .

(1) ํ™•์‹คํžˆ ์ •์ƒ : 33/3
(2) ์•„๋งˆ ์ •์ƒ : 6/2
(3) ์˜์‹ฌ์Šค๋Ÿฌ์šด : 6/2
(4) ์•„๋งˆ๋„ ๋น„์ •์ƒ : 11/11
(5) ํ™•์‹คํžˆ ๋น„์ •์ƒ : 2/33

๋”ฐ๋ผ์„œ ์ด 58 ๋ช…์˜ โ€˜์ •์ƒ์ ์ธโ€™ํ™˜์ž์™€ โ€™51โ€™์˜ ๋น„์ •์ƒ์ ์ธ ํ™˜์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ธก ๋ณ€์ˆ˜๊ฐ€ 1, โ€˜์ •ํ™•ํžˆ ์ •์ƒโ€™์ธ ๊ฒฝ์šฐ ํ™˜์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ •์ƒ์ด๋ฉฐ (36 ๋ช…์˜ ํ™˜์ž ์ค‘ 33 ๋ช…์— ๋Œ€ํ•ด ์ฐธ), 5 ์ผ ๋•Œ โ€˜ํ™•์‹คํžˆ ๋น„์ •์ƒ์ ์ธโ€™ํ™˜์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„์ •์ƒ์ž…๋‹ˆ๋‹ค ( 35 ๋ช…์˜ ํ™˜์ž), ์˜ˆ์ธก์ž๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 2, 3 ๋˜๋Š” 4 ์ ์˜ ํ™˜์ž๋ฅผ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๊ฒฐ๊ณผ ๊ฒ€์‚ฌ์˜ ๋ฏผ๊ฐ๋„์™€ ํŠน์ด์„ฑ์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ™˜์ž๋ฅผ ๋น„์ •์ƒ ๋˜๋Š” ์ •์ƒ์œผ๋กœ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ์ปท์˜คํ”„๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ๋„์™€ ํŠน์ด์„ฑ

๋‹ค๋ฅธ ์ปท์˜คํ”„์— ๋Œ€ํ•œ ์ถ”์ • ๊ฐ๋„ ๋ฐ ํŠน์ด๋„๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . (์ด์ œ๋ถ€ํ„ฐ๋Š” โ€˜๋ฏผ๊ฐ๋„โ€™์™€ โ€˜ํŠน์ด์„ฑโ€™์„ ์ž‘์„ฑํ•˜์—ฌ ๊ฐ’์˜ ์ถ”์ • ํŠน์„ฑ์„ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค.)

๊ฒ€์‚ฌ ๊ฒฐ๊ณผ์— ์ƒ๊ด€์—†์ด ๋ชจ๋“  ํ™˜์ž๋ฅผ ๋น„์ •์ƒ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•ด ์ปท์˜คํ”„๋ฅผ ์„ ํƒํ•˜๋ฉด (์ฆ‰, ์ปท์˜คํ”„ 1+๋ฅผ ์„ ํƒํ•˜๋”๋ผ๋„) ๊ฐ๋„๋Š” 51/51 = 1์ด๋ฉ๋‹ˆ๋‹ค. ํŠน์ด๋„๋Š” 0์ž…๋‹ˆ๋‹ค. / 58 = 0. ์†Œ๋ฆฌ๊ฐ€ ์ž˜ ๋“ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋œ ์—„๊ฒฉํ•œ ์ปท์˜คํ”„๋ฅผ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ๊ฐ€ 2 ์ด์ƒ์ธ ํ™˜์ž ๋งŒ ๋น„์ •์ƒ์œผ๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ 3 ๋ช…์˜ ๋น„์ •์ƒ ํ™˜์ž๋ฅผ ๊ทธ๋ฆฌ์›Œํ•˜๊ณ  48/51 = 0.94์˜ ๊ฐ๋„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” 33/58 = 0.57์˜ ํ›จ์”ฌ ๋” ๋†’์€ ํŠน์ด์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋‹ค์–‘ํ•œ ์ปท์˜คํ”„ (3, 4, 5,> 5)๋ฅผ ์„ ํƒํ•˜์—ฌ์ด ์ž‘์—…์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋งˆ์ง€๋ง‰์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋†’์€ ์‹œํ—˜ ์ ์ˆ˜๊ฐ€ 5 ์ธ ๊ฒฝ์šฐ์—๋„ ํ™˜์ž๋ฅผ ๋น„์ •์ƒ์œผ๋กœ ๋ถ„๋ฅ˜ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .)

ROC ๊ณก์„ 

๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ปท์˜คํ”„์— ๋Œ€ํ•ด์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  1์—์„œ ํŠน์ด์„ฑ์„ ๋บ€ ๋ฏผ๊ฐ๋„๋ฅผ ํ”Œ๋กฏํ•˜๋ฉด ROC ๊ณก์„ ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ R ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Data
norm     = rep(1:5, times=c(33,6,6,11,2))
abnorm   = rep(1:5, times=c(3,2,2,11,33))
testres  = c(abnorm,norm)
truestat = c(rep(1,length(abnorm)), rep(0,length(norm)))

# Summary table (Table I in the paper)
( tab=as.matrix(table(truestat, testres)) )

์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

        testres
truestat  1  2  3  4  5
       0 33  6  6 11  2
       1  3  2  2 11 33

๋‹ค์–‘ํ•œ ํ†ต๊ณ„๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

( tot=colSums(tab) )                            # Number of patients w/ each test result
( truepos=unname(rev(cumsum(rev(tab[2,])))) )   # Number of true positives
( falsepos=unname(rev(cumsum(rev(tab[1,])))) )  # Number of false positives
( totpos=sum(tab[2,]) )                         # The total number of positives (one number)
( totneg=sum(tab[1,]) )                         # The total number of negatives (one number)
(sens=truepos/totpos)                           # Sensitivity (fraction true positives)
(omspec=falsepos/totneg)                        # 1 โˆ’ specificity (false positives)
sens=c(sens,0); omspec=c(omspec,0)              # Numbers when we classify all as normal

์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ (์ถ”์ •) ROC ๊ณก์„ ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

plot(omspec, sens, type="b", xlim=c(0,1), ylim=c(0,1), lwd=2,
     xlab="1 โˆ’ specificity", ylab="Sensitivity") # perhaps with xaxs="i"
grid()
abline(0,1, col="red", lty=2)

AUC ์ˆ˜๋™ ๊ณ„์‚ฐ

์‚ฌ๋‹ค๋ฆฌ๊ผด ๋ฉด์ ์— ๋Œ€ํ•œ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ROC ๊ณก์„  ์•„๋ž˜ ๋ฉด์ ์„ ๋งค์šฐ ์‰ฝ๊ฒŒ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

height = (sens[-1]+sens[-length(sens)])/2
width = -diff(omspec) # = diff(rev(omspec))
sum(height*width)

๊ฒฐ๊ณผ๋Š” 0.8931711์ž…๋‹ˆ๋‹ค.

์ผ์น˜ ์ธก์ •

AUC๋Š” ๋˜ํ•œ ์ผ์น˜ ์ธก์ •์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฑธ๋ฆด ๊ฒฝ์šฐ ์Œ ํ•˜๋‚˜๊ฐ€ ์ •์ƒ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋น„์ •์ƒ์ด๋‹ค ํ™˜์ž๋ฅผ, ์šฐ๋ฆฌ๋Š” (๊ฐ€์žฅ ๋†’์€ (๊ฐ€์žฅ โ€˜๋น„์ •์ƒ ๋ณด์ด๋Š”โ€™)์˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ๋น„์ •์ƒ ํ•˜๋‚˜ ๋นˆ๋„๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๊ทธ๋“ค์€ ๊ฐ™์€ ๊ฐ’์ด์žˆ๋Š” ๊ฒฝ์šฐ, ์šฐ๋ฆฌ ์ด๊ฒƒ์„ โ€˜์Šน๋ฆฌ์˜ ์ ˆ๋ฐ˜โ€™์œผ๋กœ ์„ธ์‹ญ์‹œ์˜ค).

o = outer(abnorm, norm, "-")
mean((o>0) + .5*(o==0))

๋‹ต์€ ๋‹ค์‹œ ROC ๊ณก์„  ์•„๋ž˜ ์ธ 0.8931711์ž…๋‹ˆ๋‹ค. ํ•ญ์ƒ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์ผ์น˜์˜ ๊ทธ๋ž˜ํ”ฝ๋ณด๊ธฐ

Harrell์ด ๊ทธ์˜ ๋‹ต๋ณ€์—์„œ ์ง€์ ํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ ๊ทธ๋ž˜ํ”ฝ์œผ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. y ์ถ• ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ ์ˆ˜ (์œ„ํ—˜ ์ถ”์ •์น˜) ์™€ x ์ถ• ์— ๋Œ€ํ•œ ์‹ค์ œ ์งˆ๋ณ‘ ์ƒํƒœ (์—ฌ๊ธฐ์„œ ์•ฝ๊ฐ„์˜ ์ง€ ํ„ฐ๋ง์ด ์žˆ์Œ)๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

plot(jitter(truestat,.2), jitter(testres,.8), las=1,
     xlab="True disease status", ylab="Test score")

์ด์ œ ์™ผ์ชฝ์˜ ๊ฐ ์ง€์  ( โ€˜์ •์ƒโ€™ํ™˜์ž)๊ณผ ์˜ค๋ฅธ์ชฝ์˜ ๊ฐ ์ง€์  ( โ€˜๋น„์ •์ƒโ€™ํ™˜์ž) ์‚ฌ์ด์— ์„ ์„ ๊ทธ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์–‘์˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์„ ์˜ ๋น„์œจ (์ฆ‰, ์ผ์น˜ ์Œ ์˜ ๋น„์œจ )์€ ์ผ์น˜ ์ง€์ˆ˜ (ํ‰ํ‰ํ•œ ์„ ์€ โ€™50 % ์ผ์น˜ โ€˜๋กœ ๊ณ„์‚ฐ)์ž…๋‹ˆ๋‹ค.

๋™์  ์ˆ˜ (๋™์ผํ•œ ์œ„ํ—˜ ์ ์ˆ˜)๋กœ ์ธํ•ด์ด ์˜ˆ์ œ์˜ ์‹ค์ œ ์„ ์„ ์‹œ๊ฐํ™”ํ•˜๋Š” ๊ฒƒ์€ ์•ฝ๊ฐ„ ์–ด๋ ต์ง€๋งŒ ์•ฝ๊ฐ„์˜ ์ง€ ํ„ฐ๋ง๊ณผ ํˆฌ๋ช…์„ฑ์„ ํ†ตํ•ด ํ•ฉ๋ฆฌ์ ์ธ ํ”Œ๋กฏ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

d = cbind(x_norm=0, x_abnorm=1, expand.grid(y_norm=norm, y_abnorm=abnorm))
library(ggplot2)
ggplot(d, aes(x=x_norm, xend=x_abnorm, y=y_norm, yend=y_abnorm)) +
  geom_segment(colour="#ff000006",
               position=position_jitter(width=0, height=.1)) +
  xlab("True disease status") + ylab("Test\nscore") +
  theme_light()  + theme(axis.title.y=element_text(angle=0))

์šฐ๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์„ ์ด ์œ„์ชฝ์œผ๋กœ ๊ธฐ์šธ์–ด ์ง์— ๋”ฐ๋ผ ์ผ์น˜ ์ง€์ˆ˜๊ฐ€ ๋†’์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ ์œ ํ˜•์˜ ๊ด€์ธก ์Œ์—์„œ ์ง€์ˆ˜์— ๋Œ€ํ•œ ๊ธฐ์—ฌ๋„๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์˜ ๋Œ€๋ถ€๋ถ„์€ ์œ„ํ—˜ ์ ์ˆ˜๊ฐ€ 1 ์ธ ์ •์ƒ ํ™˜์ž์™€ ์œ„ํ—˜ ์ ์ˆ˜๊ฐ€ 5 (1-5 ์Œ) ์ธ ๋น„์ •์ƒ ํ™˜์ž์™€ ์ง์„ ์ด๋ฃจ๊ณ  ์žˆ์ง€๋งŒ, 1-4 ์Œ๊ณผ 4-5 ์Œ์—์„œ๋„ ์ƒ๋‹นํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฝ์‚ฌ ์ •์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค์ œ ์ผ์น˜ ์ง€์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

d = transform(d, slope=(y_norm-y_abnorm)/(x_norm-x_abnorm))
mean((d$slope > 0) + .5*(d$slope==0))

๋Œ€๋‹ต์€ ๋‹ค์‹œ 0.8931711, ์ฆ‰ AUC์ž…๋‹ˆ๋‹ค.

Wilcoxonโ€“Mannโ€“Whitney ํ…Œ์ŠคํŠธ

์ผ์น˜ ์ธก์ •๊ณผ Wilcoxonโ€“Mann-Whitney ํ…Œ์ŠคํŠธ ๊ฐ„์—๋Š” ๋ฐ€์ ‘ํ•œ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ›„์ž๋Š” ์ผ์น˜ ํ™•๋ฅ  (์ฆ‰, ๊ฐ€์žฅ โ€˜๋น„์ •์ƒ์ ์ธโ€™ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ฅผ ๊ฐ–๋Š” ์ž„์˜์˜ ์ •์ƒ-๋น„์ •์ƒ ์Œ ์—์„œ ๋น„์ •์ƒ ํ™˜์ž ์ž„์„ ํ™•์ธ)์ด ์ •ํ™•ํžˆ 0.5์ธ์ง€ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ํ†ต๊ณ„๋Ÿ‰์€ ์ถ”์ • ๋œ ์ผ์น˜ ์„ฑ ํ™•๋ฅ ์˜ ๊ฐ„๋‹จํ•œ ๋ณ€ํ™˜ ์ผ๋ฟ์ž…๋‹ˆ๋‹ค.

> ( wi = wilcox.test(abnorm,norm) )
    Wilcoxon rank sum test with continuity correction

data:  abnorm and norm
W = 2642, p-value = 1.944e-13
alternative hypothesis: true location shift is not equal to 0

๊ฒ€์ • ํ†ต๊ณ„๋Ÿ‰ ( W = 2642)์€ ์ผ์น˜ ์Œ์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ์Œ์˜ ์ˆ˜๋กœ ๋‚˜๋ˆ„๋ฉด ๊ฐ€์กฑ ์ˆ˜๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

w = wi$statistic
w/(length(abnorm)*length(norm))

์˜ˆ, ROC ๊ณก์„  ์•„๋ž˜ ์ธ 0.8931711์ž…๋‹ˆ๋‹ค.

๋ณด๋‹ค ์‰ฌ์šด AUC ๊ณ„์‚ฐ ๋ฐฉ๋ฒ• (R)

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ ์ž์‹ ์„ ์œ„ํ•ด ์ธ์ƒ์„ ๋” ํŽธํ•˜๊ฒŒํ•ฉ์‹œ๋‹ค. ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ์ž๋™์œผ๋กœ AUC๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Epi ํŒจํ‚ค์ง€

์ด EpiํŒจํ‚ค์ง€๋Š” ๋‹ค์–‘ํ•œ ํ†ต๊ณ„ (AUC ํฌํ•จ)๊ฐ€ ํฌํ•จ ๋œ ๋ฉ‹์ง„ ROC ๊ณก์„ ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

library(Epi)
ROC(testres, truestat) # also try adding plot="sp"

pROC ํŒจํ‚ค์ง€

pROCROC ์ถ”์ •์น˜๋ฅผ ๋งค๋„๋Ÿฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ณ  (๋งค๋„๋Ÿฌ์šด ROC๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ AUC ์ถ”์ •์น˜๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—) ํŒจํ‚ค์ง€ ๋„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค .

(๋นจ๊ฐ„์ƒ‰ ์„ ์€ ์›๋ž˜ ROC์ด๊ณ  ๊ฒ€์€ ์ƒ‰ ์„ ์€ ๋งค๋„๋Ÿฝ๊ฒŒ ๋œ ROC์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ 1 : 1 ์ข…ํšก๋น„์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ๊ฐ๋„์™€ ํŠน์ด๋„๋Š” ๋ชจ๋‘ 0-1 ๋ฒ”์œ„์ด๋ฏ€๋กœ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.)

ํ‰ํ™œ ROC ์˜ ์ถ”์ • AUC ๋Š” 0.9107์ด๋ฉฐ ํ‰ํ™œ ROC์˜ AUC ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์•ฝ๊ฐ„ ๋” ํฝ๋‹ˆ๋‹ค (๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์™œ ๋” ํฐ์ง€ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). (์‹ค์ œ๋กœ AUC๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜์žˆ๋Š” ๊ณ ์œ  ํ•œ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๊ฐ’์ด ๋„ˆ๋ฌด ์ ์Šต๋‹ˆ๋‹ค).

rms ํŒจํ‚ค์ง€

ํ•˜๋ ์˜ rmsํŒจํ‚ค์ง€๋Š” ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ด€๋ จ ์šฉ์–ด ์ƒ‰์ธ ํ†ต๊ณ„๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค rcorr.cens()๊ธฐ๋Šฅ. C Index๊ทธ ์ถœ๋ ฅ์€ AUC์ด๋‹ค :

> library(rms)
> rcorr.cens(testres,truestat)[1]
  C Index
0.8931711

caTools ํŒจํ‚ค์ง€

๋งˆ์ง€๋ง‰์œผ๋กœ caToolsํŒจํ‚ค์ง€์™€ colAUC()๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ๋„์›€์ด ๋  ?colAUC์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ (์ฃผ๋กœ ์†๋„ ๋ฐ ๋‹ค์ฐจ์› ๋ฐ์ดํ„ฐ ์ž‘์—… ๊ธฐ๋Šฅ โ€“ ์ฐธ์กฐ )์— ๋น„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์žฅ์  ์ด ์žˆ์Šต๋‹ˆ๋‹ค . ๊ทธ๋Ÿฌ๋‚˜ ๋ฌผ๋ก  ์šฐ๋ฆฌ๊ฐ€ ๋ฐ˜๋ณตํ•ด์„œ ๊ณ„์‚ฐ ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋Œ€๋‹ต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

library(caTools)
colAUC(testres, truestat, plotROC=TRUE)
             [,1]
0 vs. 1 0.8931711

๋งˆ์ง€๋ง‰ ๋‹จ์–ด

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด AUC๊ฐ€ ์‹œํ—˜์ด ์–ผ๋งˆ๋‚˜ โ€˜์ข‹์€โ€™์ง€๋ฅผ ๋งํ•ด ์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ AUC๊ฐ€ ๊ฒ€์‚ฌ๊ฐ€ ํ™˜์ž๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ถ„๋ฅ˜ ํ•  ํ™•๋ฅ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€์ด๋‹ค ์—†์Šต๋‹ˆ๋‹ค . ์œ„์˜ ์˜ˆ์™€ ๊ณ„์‚ฐ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด AUC๋Š” ๊ฐ€๋Šฅํ•œ ๊ฐ ์ปท์˜คํ”„๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ํ…Œ์ŠคํŠธ ํŒจ๋ฐ€๋ฆฌ ์— ๋Œ€ํ•ด ์•Œ๋ ค์ค๋‹ˆ๋‹ค .

AUC๋Š” ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ปท์˜คํ”„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. โ€˜๋ฌด์˜๋ฏธํ•œโ€™์ฐจ๋‹จ ๊ฐ’์˜ ๋ฏผ๊ฐ๋„์™€ ํŠน์ด์„ฑ์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์•ผํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์—ฌ์ „ํžˆ AUC๋Š” (๋ถ€๋ถ„์ ์œผ๋กœ) ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค. (๋ฌผ๋ก  AUC๊ฐ€ 1์— ๋งค์šฐ ๊ฐ€๊นŒ์šฐ๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ์— ํฐ ์ฐจ๋ณ„ ๋ ฅ์ด ์žˆ์œผ๋ฉฐ, ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ๋งค์šฐ ํ–‰๋ณต ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

AUC์˜ โ€˜๋ฌด์ž‘์œ„ ์ •์ƒ-๋น„์ •์ƒโ€™ํŽ˜์–ด ํ•ด์„์€ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค (์˜ˆ๋ฅผ ๋“ค์–ด ์ƒ์กด ๋ชจ๋ธ๋กœ ํ™•์žฅ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ๋†’์€ (์ƒ๋Œ€) ์œ„ํ—˜์ด์žˆ๋Š” ์‚ฌ๋žŒ์ด ๊ฐ€์žฅ ๋นจ๋ฆฌ ์‚ฌ๋งํ•˜๋Š”์ง€ ํ™•์ธ). ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ•˜๋‚˜๋Š” ๋“œ๋ฌธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค ์•Œ๊ณ  ํ•˜๋‚˜๊ฐ€ ํ•˜๋‚˜์˜ ๊ฑด๊ฐ•ํ•˜๊ณ  ํ•˜๋‚˜ , ์•„ํ”ˆ ์‚ฌ๋žŒ์„ ๋ณ‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค ์‚ฌ๋žŒ์„ ์•Œ๊ณ ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์น˜๋ฃŒํ•˜๋Š” ๊ทธ๋“ค์˜ ๊ฒฐ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. (์–ด์จŒ๋“  ๊ฒฐ์ •์€ ์‰ฌ์šฐ๋ฏ€๋กœ ์ถ”์ • ์œ„ํ—˜์ด ๊ฐ€์žฅ ๋†’์€ ๊ฒฐ์ •์„ ์ฒ˜๋ฆฌํ•˜์‹ญ์‹œ์˜ค.)

๋”ฐ๋ผ์„œ ์‹ค์ œ ROC ๊ณก์„ ์„ ์—ฐ๊ตฌํ•˜๋Š” ๊ฒƒ์ด AUC ์š”์•ฝ ์ธก์ •๋ฒ•์„ ๋ณด๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์œ ์šฉ ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ROC ๋ฅผ ์˜คํƒ (false positive) ๋ฐ ์˜คํƒ (false negative ) ๋น„์šฉ (์ถ”์ •์น˜) ๊ณผ ํ•จ๊ป˜ ์—ฐ๊ตฌ ๋Œ€์ƒ์˜ ๊ธฐ๋ณธ ์š”์œจ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋”˜๊ฐ€์— ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ AUC๋Š” ๊ต์ •์ด ์•„๋‹Œ ์ฐจ๋ณ„ ๋งŒ ์ธก์ • ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์œ„ํ—˜ ์ ์ˆ˜์— ๋”ฐ๋ผ ๋‘ ์‚ฌ๋žŒ (ํ•œ ์‚ฌ๋žŒ๊ณผ ๊ฑด๊ฐ•ํ•œ ์‚ฌ๋žŒ)์„ ๊ตฌ๋ณ„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ด€์‹ฌ ์žˆ๋Š” ์ ˆ๋Œ€ ๊ฐ’์ด ์•„๋‹Œ ์ƒ๋Œ€ ์œ„ํ—˜ ๊ฐ’ (๋˜๋Š” ์œŒ ์ฝ•์Šจ-๋งจ-ํœ˜ํŠธ๋‹ˆ ํ…Œ์ŠคํŠธ ํ•ด์„ ์ฐธ์กฐ) ๋งŒ ์กฐ์‚ฌ ํ•ฉ๋‹ˆ๋‹ค . ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ ์œ„ํ—˜์„ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ ๋กœ์ง€์Šคํ‹ฑ ๋ชจ๋ธ์—์„œ 2๋ฅผ ์ถ”์ •ํ•˜๋ฉด ์ •ํ™•ํžˆ ๋™์ผํ•œ AUC (๋ฐ ROC)๋ฅผ ์–ป๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

์œ„ํ—˜ ๋ชจ๋ธ์„ ํ‰๊ฐ€ํ•  ๋•Œ๋Š” ๊ต์ • ๋„ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด ์œ„ํ—˜ ์ ์ˆ˜ (์˜ˆ : 0.7)๊ฐ€์žˆ๋Š” ๋ชจ๋“  ํ™˜์ž๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์ด๋“ค ์ค‘ ์•ฝ 70 %๊ฐ€ ์‹ค์ œ๋กœ ์•„ํ”ˆ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์œ„ํ—˜ ์ ์ˆ˜์— ๋Œ€ํ•ด์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค (์ผ๋ถ€ ์Šค๋ฌด๋”ฉ / ๋กœ์ปฌ ํšŒ๊ท€ ๋ถ„์„ ์‚ฌ์šฉ). ๊ฒฐ๊ณผ๋ฅผ ํ”Œ๋กฏํ•˜๋ฉด ๊ทธ๋ž˜ํ”ฝ ๋ณด์ • ์ธก์ • ๊ฐ’์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์™€ ๋ชจ๋ธ์ด์žˆ๋Š” ๊ฒฝ์šฐ ๋ชจ๋‘ ์ข‹์€ ๊ต์ •๊ณผ ์ข‹์€ ์ฐจ๋ณ„, ๋‹น์‹ ์€ ์ข‹์€ ๋ชจ๋ธ์„ ๊ฐ€์ง€๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ™‚


๋‹ต๋ณ€

์ด ์งˆ๋ฌธ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค : ROC ๊ณก์„  ์ดํ•ด

ROC ๊ณก์„ ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ROC ๊ณก์„  ๊ทธ๋ฆฌ๊ธฐ

์ˆœ์œ„ ๋ถ„๋ฅ˜ ๊ธฐ๊ฐ€ ์ฒ˜๋ฆฌ ํ•œ ๋ฐ์ดํ„ฐ ์„ธํŠธ

  • ์ ์ˆ˜ ๊ฐ์†Œ์— ๋Œ€ํ•œ ์ˆœ์œ„ ํ…Œ์ŠคํŠธ ์˜ˆ
  • ์—์„œ ์‹œ์ž‘
    (0,0)


  • x


    • x

      1/pos


    • x

      1/neg

pos

neg

์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ AUC ROC๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

auc = 0.0
height = 0.0

for each training example x_i, y_i
  if y_i = 1.0:
    height = height + tpr
  else
    auc = auc + height * fpr

return auc

์ด ๋ฉ‹์ง„ gif ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ทธ๋ฆผ์€์ด ๊ณผ์ •์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ปค๋ธŒ ๋งŒ๋“ค๊ธฐ


๋‹ต๋ณ€

Karl์˜ ๊ฒŒ์‹œ๋ฌผ์—๋Š” ํ›Œ๋ฅญํ•œ ์ •๋ณด๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ง€๋‚œ 20 ๋…„ ๋™์•ˆ ๋ˆ„๊ตฐ๊ฐ€์˜ ์ƒ๊ฐ์„ ์ข‹์€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๊พธ๋Š” ROC ๊ณก์„ ์˜ ์˜ˆ๋ฅผ ์•„์ง ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒธ์†ํ•œ ๊ฒฌํ•ด์—์„œ ROC ๊ณก์„ ์˜ ์œ ์ผํ•œ ๊ฐ€์น˜๋Š” ๊ทธ ์˜์—ญ์ด ๋งค์šฐ ์œ ์šฉํ•œ ์ผ์น˜ ํ™•๋ฅ ๊ณผ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ROC ๊ณก์„  ์ž์ฒด๋Š” ๋…์ž๊ฐ€ ์ปท์˜คํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์œ ํ˜นํ•ฉ๋‹ˆ๋‹ค.

c

Y=0,1

x

Y=1

y

Y=0

Y=1

n

R HmiscํŒจํ‚ค์ง€ rcorr.cens๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ ์ „์ฒด ๊ฒฐ๊ณผ๋ฅผ ์ธ์‡„ํ•˜์—ฌ ์ž์„ธํ•œ ์ •๋ณด, ํŠนํžˆ ํ‘œ์ค€ ์˜ค๋ฅ˜๋ฅผ๋ณด์‹ญ์‹œ์˜ค.


๋‹ต๋ณ€

๋‹ค์Œ์€ ๋‹จ์ˆœํžˆ ์‚ฌ๋‹ค๋ฆฌ๊ผด ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ROC ๊ณก์„  ์•„๋ž˜ ์˜์—ญ์„ ๊ฐ€์ ธ ์™€์„œ AUC๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ•์˜ ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค.

AUC๋Š” ๋ฌด์ž‘์œ„๋กœ ์ƒ˜ํ”Œ๋ง ๋œ ์–‘์„ฑ ๊ด€์ธก์น˜๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ์ƒ˜ํ”Œ๋ง ๋œ ์Œ์„ฑ ๊ด€์ธก์น˜๋ณด๋‹ค ์˜ˆ์ธก ํ™•๋ฅ  (์–‘์ˆ˜)์ด ํด ํ™•๋ฅ ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์–‘์„ฑ ๋ฐ ์Œ์„ฑ ๊ด€์ธก ๊ฐ’์˜ ์Œ๋ณ„ ์กฐํ•ฉ์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ AUC๋ฅผ ๋งค์šฐ ์‰ฝ๊ฒŒ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ๋ณธ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฐ ๊ฒฝ์šฐ ๊ด€์ธก์น˜๋ฅผ ๋ฌด์ž‘์œ„๋กœ ํ‘œ๋ณธ ์ถ”์ถœ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํŽœ๊ณผ ์ข…์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AUC๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ƒ˜ํ”Œ์ด ์ ๊ฑฐ๋‚˜ ์‹œ๊ฐ„์ด ๋งŽ์ง€ ์•Š์œผ๋ฉด ์ด๊ฒƒ์ด ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด R์—์„œ :

n <- 100L

x1 <- rnorm(n, 2.0, 0.5)
x2 <- rnorm(n, -1.0, 2)
y <- rbinom(n, 1L, plogis(-0.4 + 0.5 * x1 + 0.1 * x2))

mod <- glm(y ~ x1 + x2, "binomial")

probs <- predict(mod, type = "response")

combinations <- expand.grid(positiveProbs = probs[y == 1L],
        negativeProbs = probs[y == 0L])

mean(combinations$positiveProbs > combinations$negativeProbs)
[1] 0.628723

pROCํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

library(pROC)
auc(y, probs)
Area under the curve: 0.6287

๋ฌด์ž‘์œ„ ์ƒ˜ํ”Œ๋ง ์‚ฌ์šฉ :

mean(sample(probs[y == 1L], 100000L, TRUE) > sample(probs[y == 0L], 100000L, TRUE))
[1] 0.62896

๋‹ต๋ณ€

  1. ๊ด€์ธก ๊ฐ’์— ๋Œ€ํ•œ ์ง„์ •ํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์‚ฌํ›„ ํ™•๋ฅ ์„ ๊ณ„์‚ฐ ํ•œ ๋‹ค์Œ์ด ํ™•๋ฅ ๋กœ ๊ด€์ธก ๊ฐ’์˜ ์ˆœ์œ„๋ฅผ ๋งค ๊น๋‹ˆ๋‹ค.

  3. P

    N


    Sum of true ranksโˆ’0.5PN(PN+1)PN(Nโˆ’PN)


๋‹ต๋ณ€