2019-03-15
閱讀量:
1628
ROC繪圖優(yōu)化背后的理由是什么?
第一個(gè)代碼片段是微不足道的,與定義一致
drawROC.A <- function(T, D) {
cutpoints <- c(-Inf, sort(unique(T)), Inf)
sens <- sapply(cutpoints,
function(c) sum(D[T>c])/sum(D))
spec <- sapply(cutpoints,
function(c) sum((1-D)[T<=c]/sum(1-D)))
plot(1-spec, sens, type = "l")
}
然后作者說(我做了一些小編輯),
有一個(gè)相對(duì)簡(jiǎn)單的函數(shù)優(yōu)化,可以大大提高速度,但代價(jià)是需要T
一個(gè)數(shù)字,而不僅僅是一個(gè)對(duì)象>
和<=
定義的對(duì)象
drawROC.B <- function(T, D){ DD <- table(-T, D) sens <- cumsum(DD[ ,2]) / sum(DD[ ,2]) mspec <- cumsum(DD[ ,1]) / sum(DD[ ,1]) plot(mspec, sens, type="l") }
我已經(jīng)花了很長時(shí)間閱讀優(yōu)化版本,但是卡在第一行:看起來-
前面的負(fù)號(hào)T
用于以相反的順序執(zhí)行累積總和,但為什么呢?
混淆了,我把兩個(gè)函數(shù)產(chǎn)生的ROC繪制在一起,檢查結(jié)果是否相同。
左圖是由drawROC.A
而產(chǎn)生的,而右圖是結(jié)果drawROC.B
。乍一看,它們并不完全相同,但如果你仔細(xì)觀察,Y軸的范圍是不同的,所以它們實(shí)際上是相同的圖。
解決辦法:這DD <- table(-T, D)意味著以相反的順序執(zhí)行累積和,這是因?yàn)槲覀冋谟?jì)算Pr(T> c),而表的累積和正在計(jì)算T中小于或等于當(dāng)前元素的元素?cái)?shù)。
換句話說,這也可以,因?yàn)镻r(T> c)= 1 - Pr(T <= c)。






評(píng)論(0)


暫無數(shù)據(jù)
CDA考試動(dòng)態(tài)
CDA報(bào)考指南
推薦帖子
0條評(píng)論
0條評(píng)論
0條評(píng)論