बाइनरी वर्गीकरण की समस्याओं में auc बनाम logloss का अनुकूलन


12

मैं एक द्विआधारी वर्गीकरण कार्य कर रहा हूं जहां परिणाम संभावना काफी कम है (aroung 3%)। मैं यह तय करने का प्रयास कर रहा हूं कि क्या एयूसी या ऑप्ट-लॉस द्वारा ऑप्टिमाइज़ किया जाए। जितना मैंने समझा है, एयूसी वर्ग के बीच भेदभाव करने के लिए मॉडल की क्षमता को अधिकतम करता है, जबकि लॉग्लॉस वास्तविक और अनुमानित संभावनाओं के बीच द्वंद्ववाद को दंडित करता है। मेरे कार्य में सटीक सटीकता को जांचना अत्यंत महत्वपूर्ण है। इसलिए मैं लॉगलॉस चुनूंगा, लेकिन मुझे आश्चर्य है कि क्या सर्वश्रेष्ठ लॉग-लॉस मॉडल भी सर्वश्रेष्ठ एयूसी / जीआईएनआई मॉडल होना चाहिए।

जवाबों:


12

जैसा कि आप उल्लेख करते हैं, एयूसी एक रैंक सांख्यिकीय (यानी स्केल इनवेरिएंट) है और लॉग लॉस एक अंशांकन सांख्यिकीय है। कोई तुच्छ रूप से एक मॉडल का निर्माण कर सकता है जिसमें एक ही एयूसी है, लेकिन पूर्वानुमान मूल्यों को स्केल करके लॉग नुकसान को कम करने में विफल रहता है। विचार करें:

auc <-  function(prediction, actual) {
  mann_whit <- wilcox.test(prediction~actual)$statistic
  1 - mann_whit / (sum(actual)*as.double(sum(!actual)))
}

log_loss <- function (prediction, actual) {
  -1/length(prediction) * sum(actual * log(prediction) + (1-actual) * log(1-prediction))
}

sampled_data <- function(effect_size, positive_prior = .03, n_obs = 5e3) {
  y <- rbinom(n_obs, size = 1, prob = positive_prior)
  data.frame( y = y,
              x1 =rnorm(n_obs, mean = ifelse(y==1, effect_size, 0)))
}

train_data <- sampled_data(4)
m1 <- glm(y~x1, data = train_data, family = 'binomial')
m2 <- m1
m2$coefficients[2] <- 2 * m2$coefficients[2]

m1_predictions <- predict(m1, newdata = train_data, type= 'response')
m2_predictions <- predict(m2, newdata = train_data, type= 'response')

auc(m1_predictions, train_data$y)
#0.9925867 
auc(m2_predictions, train_data$y)
#0.9925867 

log_loss(m1_predictions, train_data$y)
#0.01985058
log_loss(m2_predictions, train_data$y)
#0.2355433

इसलिए, हम यह नहीं कह सकते हैं कि AUC को अधिकतम करने के लिए एक मॉडल का अर्थ है कम से कम लॉग लॉस। क्या लॉग नुकसान को कम करने वाला एक मॉडल अधिकतम एयूएम से मेल खाता है, संदर्भ पर बहुत अधिक निर्भर करेगा; वर्ग पृथक्करण, मॉडल पूर्वाग्रह आदि, व्यवहार में, कोई एक कमजोर संबंध पर विचार कर सकता है, लेकिन सामान्य तौर पर वे बस अलग उद्देश्य होते हैं। निम्नलिखित उदाहरण पर विचार करें जो वर्ग पृथक्करण (हमारे भविष्यवक्ता का प्रभाव आकार) को बढ़ाता है:

for (effect_size in 1:7) {
  results <- dplyr::bind_rows(lapply(1:100, function(trial) {
                                    train_data <- sampled_data(effect_size)
                                    m <- glm(y~x1, data = train_data, family = 'binomial')
                                    predictions <- predict(m, type = 'response')
                                    list(auc = auc(predictions, train_data$y),
                                         log_loss = log_loss(predictions, train_data$y),
                                         effect_size = effect_size)
                                  }))
  plot(results$auc, results$log_loss, main = paste("Effect size =", effect_size))
  readline()
}

effect_1

यहाँ छवि विवरण दर्ज करें


बहुत जानकारीपूर्ण उत्तर। आपके उत्तर में दो भविष्यवाणियाँ हैं, एक ही AUC के साथ लेकिन बहुत अलग लॉग लॉस है। इसलिए मैं इस सवाल पर आता हूं: मैंने एयूसी को अनुकूलित करने के लिए एक मॉडल को प्रशिक्षित किया है। लेकिन बाद में मुझे एहसास हुआ कि मुझे लॉग लॉस के लिए जाने की जरूरत है। मैं लॉग लॉस के लिए मॉडल को वापस लेने का जोखिम नहीं उठा सकता (जो आदर्श मामला होना चाहिए)। क्या मैं भविष्यवाणियों पर कोई भी परिवर्तन लागू कर सकता हूं, ताकि इसका सबसे अच्छा लॉग नुकसान हो। (यहां माना गया लॉग नुकसान बाइनरी अर्थ है, संदर्भ संभावना 1 या 0 है)।
राजेश दचिराजू

1
आपके मॉडल का क्या अनुमान है? यदि आप पीछे की संभावनाओं का निर्माण कर रहे हैं, तो लॉग लॉस केवल समझ में आता है, जो कि एयूके अनुकूलित मॉडल के लिए संभव नहीं है। एयूसी जैसे रैंक के आंकड़े केवल भविष्यवाणियों के सापेक्ष आदेश पर विचार करते हैं, इसलिए भविष्यवाणियों के बीच अंतराल का परिमाण अप्रासंगिक है; स्पष्ट रूप से यह संभावनाओं के मामले में नहीं है। आपके द्वारा अपनी AUC अनुकूलित भविष्यवाणियों पर किए गए किसी भी स्केलिंग को इस समस्या का समाधान करना होगा। इसके अलावा, यह केवल एक उचित पीछे के अनुमान के प्रति आपकी भविष्यवाणियों के अंशांकन को संबोधित करता है, न कि एलएल का वैश्विक न्यूनतमीकरण, जैसा कि इस पोस्ट में उल्लिखित है।
खोल

1
आप एक प्रारंभिक बिंदु के रूप में प्लॉट स्केलिंग में दिलचस्पी ले सकते हैं ।
खोल

मैं समझता हूं कि यह वैश्विक नहीं है। मैं बस एक परिवर्तन को सेट करना चाहता हूं जिसमें एक पैरामीटर हो सकता है और फिर इसके साथ खेल सकते हैं।
राजेश दचिराजू

1

असंतुलित लेबल के लिए, सटीक-रिकॉल कर्व के तहत क्षेत्र AUC ( https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4349800/ या python scikit-learn डॉक्स ) के लिए बेहतर है।

इसके अलावा, यदि आपका लक्ष्य सटीकता को अधिकतम करना है, तो आप प्रदर्शन मीट्रिक के रूप में "सटीक" का उपयोग करके सबसे अच्छे मॉडल (एल्गोरिथ्म + हाइपरपरमेटर्स) का चयन करने के लिए क्रॉस-वैलिडेशन करने पर विचार कर सकते हैं।


2
मैं यहाँ कुछ कारणों से नीचे उतरा। 1) आपको अपने पहले बयान के लिए स्रोत या कारण का हवाला देना चाहिए। 2) कैसे आप सटीक के लिए अनुकूलित करते हैं? यह एक पतित मॉडल नहीं बनायेगा?
मैथ्यू

2
ठीक है मुझे एक बेहतर जवाब देने में मदद करने के लिए धन्यवाद। मैंने 2 संदर्भ जोड़े। और आप परिशुद्धता के लिए कैसे अनुकूलित करते हैं? किसी भी अन्य मीट्रिक की तरह। आप "स्कोरिंग" को अपने स्कोरिंग फ़ंक्शन के रूप में निर्दिष्ट करते हैं, उदाहरण के लिए scikit-learn में। शुद्धता एक सटीकता की तरह मीट्रिक है, AUC, आदि
पॉल

आह, निश्चित रूप से। लेकिन मुझे लगता है कि जब लोग "अनुकूलन" पढ़ते हैं तो वे मान लेते हैं कि यह आपके मॉडल के प्रशिक्षण के दौरान है। मुझे लगता है कि स्केलेरोन यह बहुत गलत हो जाता है, क्योंकि यह एक निश्चित वर्गीकरण सीमा का उपयोग करता है, और आपको वास्तव में क्रॉस सत्यापन के साथ ट्यूनिंग करना चाहिए।
मैथ्यू

1
हां, अब मैं देखता हूं कि "अनुकूलन" कैसे भ्रामक हो सकता है। यकीन नहीं होता कि ओपी का मतलब कैसा था। मेरे लिए, यह आपके जैसा है: सीवी के माध्यम से हाइपरपरमेटर्स को ट्यून करें ताकि परिशुद्धता अधिकतम हो। और मुझे लगता है कि आप इसे स्केलेर में भी कैसे लागू करते हैं।
पॉल

यदि आप उस स्पष्टीकरण को जोड़ देते हैं, तो मुझे लगता है कि आपका उत्तर यहां सुधर जाएगा। विषय से थोड़ा हटकर, लेकिन मुझे लगता है कि स्केलेर का समर्थन करने में काफी खराब है, क्योंकि यह एक निश्चित वर्गीकरण सीमा के आधार पर धुन करता है, जो मैं तर्क देता हूं कि यह काफी बुरा व्यवहार है।
मैथ्यू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.