कैरेट पैकेज का उपयोग करना विशिष्ट थ्रेशोल्ड मूल्यों के लिए भ्रम मैट्रीस प्राप्त करना संभव है?


13

मैंने trainद्विआधारी प्रतिक्रिया के लिए एक लॉजिस्टिक रिग्रेशन मॉडल (के माध्यम से ) प्राप्त किया है, और मैंने लॉजिस्टिक कंफ्यूजन मैट्रिक्स के माध्यम से प्राप्त किया confusionMatrixहै caret। यह मुझे लॉजिस्टिक मॉडल कन्फ्यूजन मैट्रिक्स देता है, हालांकि मुझे यकीन नहीं है कि इसे प्राप्त करने के लिए किस सीमा का उपयोग किया जा रहा है। मैं का उपयोग कर विशिष्ट दहलीज मूल्यों के लिए भ्रम की स्थिति मैट्रिक्स कैसे प्राप्त करूं confusionMatrixमें caret?


मेरे पास कोई जवाब नहीं है, लेकिन अक्सर इस तरह के सवालों का जवाब मदद फ़ाइल में दिया जाता है। यदि वह विफल रहता है, तो आप स्रोत कोड को स्वयं देख सकते हैं। आप confusionmatrixकोष्ठक के बिना, टाइप करके कंसोल को स्रोत मुद्रित कर सकते हैं ।
छायाकार

यह बिल्कुल स्पष्ट नहीं है कि आपने वास्तव में क्या किया है। क्या आपने पैकेज glmसे फ़ंक्शन को कॉल किया statsऔर इसके परिणाम को पास किया confusionMatrix? मुझे नहीं पता था कि कोई ऐसा कर सकता है, और मैनुअल पढ़ने से यह स्पष्ट नहीं हो सकता है कि कोई भी ऐसा कर सकता है। या तुमने predictकुछ किया? एक छोटा उदाहरण मदद करेगा।
कैलिमो

1
@ कैलीमो ने मॉडल को फिट करने के लिए trainफ़ंक्शन का उपयोग किया है caret, जो मुझे द्विपद परिवार के साथ एक चमक के रूप में निर्दिष्ट करता है। मैं तो के predictमाध्यम से उत्पन्न वस्तु पर समारोह का इस्तेमाल किया train
ब्लैक मिल्क

जवाबों:


11

आर में अधिकांश वर्गीकरण मॉडल एक वर्ग भविष्यवाणी और प्रत्येक वर्ग के लिए संभाव्यता दोनों का उत्पादन करते हैं। बाइनरी डेटा के लिए, लगभग हर मामले में, क्लास की भविष्यवाणी 50% संभावना कटऑफ पर आधारित है।

glmएक ही है। के साथ caret, का उपयोग करके predict(object, newdata)आप पूर्वानुमानित वर्ग देता है और predict(object, new data, type = "prob")आपको वर्ग-विशिष्ट संभावनाएं देगा (जब objectयह उत्पन्न होता है train)।

आप अपने खुद के मॉडल को परिभाषित करके और जो भी कटऑफ चाहते हैं उसे लागू करके चीजों को अलग तरीके से कर सकते हैं। caret वेबसाइट भी एक है उदाहरण है कि संभावना कटऑफ अनुकूलन करने के लिए resampling उपयोग करता है।

tl; डॉ

confusionMatrix भविष्यवाणी की गई कक्षाओं का उपयोग करता है और इस प्रकार 50% संभावना कटऑफ है

मैक्स


14

एक आसान तरीका है, यह मानते हुए tune <- train(...):

probsTest <- predict(tune, test, type = "prob")
threshold <- 0.5
pred      <- factor( ifelse(probsTest[, "yes"] > threshold, "yes", "no") )
pred      <- relevel(pred, "yes")   # you may or may not need this; I did
confusionMatrix(pred, test$response)

जाहिर है, आप "सर्वश्रेष्ठ" एक को चुनने के लिए जो कुछ भी करना चाहते हैं, उस पर सीमा निर्धारित कर सकते हैं, जहां सबसे अच्छा मतलब उच्चतम संयुक्त विशिष्टता और संवेदनशीलता है:

library(pROC)
probsTrain <- predict(tune, train, type = "prob")
rocCurve   <- roc(response = train$response,
                      predictor = probsTrain[, "yes"],
                      levels = rev(levels(train$response)))
plot(rocCurve, print.thres = "best")

अधिकतम पोस्ट किए गए उदाहरण को देखने के बाद, मुझे यकीन नहीं है कि कुछ सांख्यिकीय बारीकियां हैं जो मेरे दृष्टिकोण को कम वांछित बनाती हैं।


आउटपुट rocCurve प्लॉट में, तीन मानों का क्या मतलब है? उदाहरण के लिए मेरे डेटा पर यह 0.289 (0.853, 0.831) कहता है। क्या 0.289 सर्वश्रेष्ठ सीमा का संकेत देता है जो किसी को द्विआधारी परिणाम का सीमांकन करने में उपयोग करना चाहिए? यानी अनुमानित संभावना के साथ हर मामला> 0.289 को "1" कोडित किया जाएगा और हर मामले को अनुमानित संभावना के साथ <0.289 को caretपैकेज के 0.5 डिफ़ॉल्ट सीमा के बजाय "0" कोडित किया जाएगा ?
कोइप

2
हां यह बिल्कुल सही है, और कोष्ठक में अन्य 2 मान संवेदनशीलता और विशिष्टता हैं (ईमानदारी से, हालांकि, मैं भूल गया हूं कि कौन सा है)
efh0888

2
इसके बाद से, तब से मुझे लगा कि आप इसे आरसी वक्र से निकाल सकते हैं, rocCurve$thresholds[which(rocCurve$sensitivities + rocCurve$specificities == max(rocCurve$sensitivities + rocCurve$specificities))]जिसके प्रयोग से आप चाहें तो उन्हें अलग-अलग तरीके से वजन करने की सुविधा भी दे सकते हैं ... एक आखिरी बात जो ध्यान देने योग्य है, वह यह है कि आप शायद थ्रेशोल्ड ट्यून करना चाहते हैं (जैसे आप किसी भी मॉडल हाइपरपरमीटर के साथ) जैसा कि मैक्स यहाँ बताता है
efh0888
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.