एक मल्टीस्कूलर क्लासिफायर की गुणवत्ता का निर्धारण कैसे करें


30

दिया हुआ

  • उदाहरणों के साथ एक डाटासेट xi एक साथ के साथ कक्षाएं जहां हर उदाहरण वास्तव में करने के लिए एक वर्ग के अंतर्गत आता हैNxiyi
  • एक बहुस्तरीय क्लासिफायरियर

प्रशिक्षण और परीक्षण के बाद मैं मूल रूप से के साथ एक मेज है सच वर्ग और भविष्यवाणी की वर्ग हर उदाहरण के लिए परीक्षण सेट में। इसलिए हर उदाहरण के लिए मेरे पास या तो एक मैच ( ) या एक मिस ( ) है।yiaiy मैं = एक मैं y मैंएक मैंxiyi=aiyiai

मैं मैच की गुणवत्ता का मूल्यांकन कैसे कर सकता हूं? मुद्दा यह है कि कुछ वर्गों में कई सदस्य हो सकते हैं, अर्थात कई उदाहरण इसके हैं। जाहिर है कि यदि सभी डेटा बिंदुओं में से 50% एक वर्ग के हैं और मेरा अंतिम क्लासिफायर 50% सही है, तो मुझे कुछ नहीं मिला है। मैं बस एक तुच्छ क्लासिफायर बनाया जा सकता है जो कि सबसे बड़ी कक्षा को कोई फर्क नहीं पड़ता कि इनपुट क्या है।

क्या प्रत्येक कक्षा के लिए मैचों और हिट के ज्ञात परीक्षण सेट के आधार पर एक क्लासिफायर की गुणवत्ता का अनुमान लगाने के लिए एक मानक तरीका है? शायद प्रत्येक विशेष वर्ग के लिए मिलान दरों में अंतर करना भी महत्वपूर्ण है?

सबसे आसान तरीका जो मैं सोच सकता हूं, वह है सबसे बड़े वर्ग के सही मैचों को बाहर करना। और क्या?


मुझे यकीन नहीं है कि मैं सवाल को सही ढंग से समझ पाऊंगा। क्या आप कन्फ्यूजन मैट्रिक्स और व्युत्पन्न उपायों को जानते हैं ? क्या यह आपके प्रश्न का उत्तर है? या आप कुछ अधिक जटिल का उल्लेख करते हैं?
स्टेफेन

मुझे लगता है कि यह मेरे भ्रम का स्रोत है: पहले पैराग्राफ में आप बताते हैं कि .. यि असली वर्ग है और ... क्या आपका मतलब है कि एक उदाहरण एक से अधिक वर्ग का हो सकता है / है? या क्या हर एक x मेरे पास है / बिल्कुल एक वर्ग है? क्या आप स्पष्ट कर सकते हैं ? xixi
स्टीफेन

@ ऑस्टफ़ेन: मैंने भ्रम मैट्रिक्स देखा है। मेरे विशेष मामले में मेरे पास 4 कक्षाएं हैं। इसलिए मुझे यकीन नहीं है कि कौन से व्युत्पन्न उपायों का इस्तेमाल किया जा सकता है और इससे समझ में आएगा। प्रत्येक केवल एक वर्ग का है। लेकिन वहाँ की तुलना में अधिक दो संभव कक्षाओं समग्र हैं मैं [ 1 , , एन ]xii[1,,N]
गेरनुक

@steffen वे व्युत्पन्न उपाय मुख्य रूप से बाइनरी वर्गीकरण पर लागू होते हैं , जबकि यह प्रश्न स्पष्ट रूप से दो से अधिक वर्गों के साथ काम कर रहा है। इसके बाद "सही सकारात्मक" जैसे शब्दों की संशोधित समझ की आवश्यकता होती है।
माइकल मैकगोवन

@MichaelMcGowan मैंने ओपी से स्पष्टीकरण के लिए कहा है और बाद में मल्टीस्केल्स मुद्दे को स्पष्ट रूप से प्रतिबिंबित करने के लिए एक संपादन किया है, जो संपादन (आईएमएचओ) से पहले स्पष्ट नहीं था।
स्टेफेन

जवाबों:


16

बाइनरी वर्गीकरण की तरह, आप अपने क्लासिफायर की गुणवत्ता का आकलन करने के लिए अनुभवजन्य त्रुटि दर का उपयोग कर सकते हैं । चलो एक वर्गीकारक हो, और x मैं और y मैं क्रमशः अपने डेटा बेस और अपनी श्रेणी में एक उदाहरण हो। e r r ( g ) = 1gxiyi जैसा कि आपने कहा, जब कक्षाएं असंतुलित कर रहे हैं, आधारभूत नहीं 50% लेकिन बड़ा वर्ग के अनुपात में है। आप त्रुटि को संतुलित करने के लिए प्रत्येक वर्ग पर एक वजन जोड़ सकते हैं। चलोडब्ल्यूवाईवर्ग का वजन होनाy। तौलें ऐसे सेट करें कि

err(g)=1nin1g(xi)yi
Wyyऔर परिभाषितभारित अनुभवजन्य त्रुटिआरआरडब्ल्यू()=11Wy1nin1yi=y
errW(g)=1ninWyi1g(xi)yi

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

आरओसी कर्व्स को आपकी मल्टीस्कल्स समस्या के लिए बढ़ाया जा सकता है। मेरा सुझाव है कि आप इस सूत्र का उत्तर पढ़ें ।


1
क्या भारित अनुभवजन्य त्रुटि को वर्गों की संख्या से विभाजित करना आवश्यक नहीं है, समान त्रुटि के समान पैमाने पर होना चाहिए? अन्यथा यह बहुत बड़ा होगा ...
फिलिप्पो

17

To evaluate multi-way text classification systems, I use micro- and macro-averaged F1 (F-measure). The F-measure is essentially a weighted combination of precision and recall that. For binary classification, the micro and macro approaches are the same, but, for the multi-way case, I think they might help you out. You can think of Micro F1 as a weighted combination of precision and recall that gives equal weight to every document, while Macro F1 gives equal weight to every class. For each, the F-measure equation is the same, but you calculate precision and recall differently:

F=(β2+1)PRβ2P+R,

where β is typically set to 1. Then,

Pmicro=i=1|C|TPii=1|C|TPi+FPi,Rmicro=i=1|C|TPii=1|C|TPi+FNi

Pmacro=1|C|i=1|C|TPiTPi+FPi,Rmacro=1|C|i=1|C|TPiTPi+FNi

where TP is True Positive, FP is False Positive, FN is False Negative, and C is class.


1
# Function in R, using precision, recall and F statistics

check.model.accuracy <- function(predicted.class, actual.class){

  result.tbl <- as.data.frame(table(predicted.class,actual.class ) ) 

  result.tbl$Var1 <- as.character(result.tbl$predicted.class)
  result.tbl$Var2 <- as.character(result.tbl$actual.class)

  colnames(result.tbl)[1:2] <- c("Pred","Act")

  cntr <- 0  
  for (pred.class in unique(result.tbl$Pred) ){
    cntr <- cntr+ 1
    tp <- sum(result.tbl[result.tbl$Pred==pred.class & result.tbl$Act==pred.class, "Freq"])
    tp.fp <- sum(result.tbl[result.tbl$Pred == pred.class , "Freq" ])
    tp.fn <- sum(result.tbl[result.tbl$Act == pred.class , "Freq" ])
    presi <- tp/tp.fp 
    rec <- tp/tp.fn
    F.score <- 2*presi*rec/(presi+rec)
    if (cntr == 1 ) F.score.row <- cbind(pred.class, presi,rec,F.score)
    if (cntr > 1 ) F.score.row <- rbind(F.score.row,cbind(pred.class,presi,rec,F.score))
  }

  F.score.row <- as.data.frame(F.score.row) 
  return(F.score.row)
}

check.model.accuracy(predicted.df,actual.df) 
# For multiclass, average across all classes 

5
Can you add some text to explicate this?
gung - Reinstate Monica
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.