हां, ऐसी परिस्थितियां हैं जहां सामान्य रिसीवर ऑपरेटिंग वक्र प्राप्त नहीं किया जा सकता है और केवल एक बिंदु मौजूद है।
एसवीएम स्थापित किए जा सकते हैं ताकि वे वर्ग सदस्यता संभावनाओं का उत्पादन करें। ये एक सामान्य मूल्य होगा जिसके लिए एक रिसीवर ऑपरेटिंग वक्र का उत्पादन करने के लिए एक सीमा होगी ।
क्या यह वही है जिसको आप ढूंढ रहें थे।
आरओसी में कदम आमतौर पर कोवरिएट में असतत भिन्नता के साथ कुछ भी करने के बजाय परीक्षण मामलों की छोटी संख्या के साथ होता है (विशेष रूप से, आप एक ही बिंदु के साथ समाप्त होते हैं यदि आप अपने असतत थ्रेसहोल्ड को चुनते हैं ताकि प्रत्येक नए बिंदु के लिए केवल एक नमूना परिवर्तन हो इसका काम)।
निश्चित रूप से मॉडल के अन्य (हाइपर) मापदंडों को अलग-अलग करने से एफपीआर में अन्य घटता देने वाले विशिष्टता / संवेदनशीलता जोड़े के सेट का उत्पादन होता है; टीपीआर समन्वय प्रणाली।
निश्चित रूप से एक वक्र की व्याख्या इस बात पर निर्भर करती है कि वक्र में क्या बदलाव आया।
आईरिस डेटा सेट के "वर्सिकलर" वर्ग के लिए एक सामान्य आरओसी (यानी आउटपुट के रूप में संभावनाओं का अनुरोध करना):
- FPR; TPR (γ = 1, C = 1, प्रायिकता सीमा):
एक ही प्रकार की समन्वय प्रणाली, लेकिन ट्यूनिंग मापदंडों के कार्य के रूप में TPR और FPR: inate और C:
FPR; TPR (γ, C = 1, प्रायिकता सीमा = 0.5):
FPR; TPR (γ = 1, C, प्रायिकता सीमा = 0.5):
इन प्लॉटों का एक अर्थ होता है, लेकिन यह अर्थ सामान्य आरओसी से अलग होता है!
यहाँ R कोड मैंने उपयोग किया है:
svmperf <- function (cost = 1, gamma = 1) {
model <- svm (Species ~ ., data = iris, probability=TRUE,
cost = cost, gamma = gamma)
pred <- predict (model, iris, probability=TRUE, decision.values=TRUE)
prob.versicolor <- attr (pred, "probabilities")[, "versicolor"]
roc.pred <- prediction (prob.versicolor, iris$Species == "versicolor")
perf <- performance (roc.pred, "tpr", "fpr")
data.frame (fpr = perf@x.values [[1]], tpr = perf@y.values [[1]],
threshold = perf@alpha.values [[1]],
cost = cost, gamma = gamma)
}
df <- data.frame ()
for (cost in -10:10)
df <- rbind (df, svmperf (cost = 2^cost))
head (df)
plot (df$fpr, df$tpr)
cost.df <- split (df, df$cost)
cost.df <- sapply (cost.df, function (x) {
i <- approx (x$threshold, seq (nrow (x)), 0.5, method="constant")$y
x [i,]
})
cost.df <- as.data.frame (t (cost.df))
plot (cost.df$fpr, cost.df$tpr, type = "l", xlim = 0:1, ylim = 0:1)
points (cost.df$fpr, cost.df$tpr, pch = 20,
col = rev(rainbow(nrow (cost.df),start=0, end=4/6)))
df <- data.frame ()
for (gamma in -10:10)
df <- rbind (df, svmperf (gamma = 2^gamma))
head (df)
plot (df$fpr, df$tpr)
gamma.df <- split (df, df$gamma)
gamma.df <- sapply (gamma.df, function (x) {
i <- approx (x$threshold, seq (nrow (x)), 0.5, method="constant")$y
x [i,]
})
gamma.df <- as.data.frame (t (gamma.df))
plot (gamma.df$fpr, gamma.df$tpr, type = "l", xlim = 0:1, ylim = 0:1, lty = 2)
points (gamma.df$fpr, gamma.df$tpr, pch = 20,
col = rev(rainbow(nrow (gamma.df),start=0, end=4/6)))
roc.df <- subset (df, cost == 1 & gamma == 1)
plot (roc.df$fpr, roc.df$tpr, type = "l", xlim = 0:1, ylim = 0:1)
points (roc.df$fpr, roc.df$tpr, pch = 20,
col = rev(rainbow(nrow (roc.df),start=0, end=4/6)))