हम निर्णय पेड़ों के लिए आरओसी वक्र कैसे बना सकते हैं?


13

आम तौर पर हम निर्णय पेड़ों की तरह असतत classifiers के लिए एक आरओसी वक्र आकर्षित नहीं कर सकते। क्या मैं सही हू? वहाँ किसी भी तरह से dsr के लिए एक आरओसी वक्र आकर्षित करने के लिए है?


1
आप अपने एसेर को यहां पा सकते हैं: आंकड़े. stackexchange.com/questions/105501/…
rapaio

[R में निर्णय लेने के लिए "प्रशिक्षण सेट" बनाम "परीक्षण सेट" के लिए [1] [1] [1] [1]: आंकड़े.stackexchange.com/questions/49416/… आप यहाँ अपना उत्तर पा सकते हैं।
संग्राम

@rapaio क्षमा करें आपका लिंक एक वर्गीकरण में दहलीज खोजने के लिए एक आरओसी वक्र दिखाता है जो 1 और 0 (निरंतर मूल्य) के बीच उत्पादन करता है।
DataMiner

@Sangram ये R में समाधान हैं, लेकिन मैं यह समझना चाहता हूं कि यह कैसे काम करता है।
DataMiner

जवाबों:


15

(x,y)=(FPR,TPR)FPRTPR

विकिपीडिया पृष्ठ पर इसकी गणना कैसे की जाती है, इस पर और देखें ।

(0,0)(1,1)

TFTF(scoreT,scoreF)=(countTcountT+countF,countFcountT+countF)=(10/15,5/15)=(0.66,0.33)


13

डिसीजन ट्री के लिए, वर्गों को अभी भी निश्चितता के कुछ स्तर के साथ भविष्यवाणी की जाती है। जवाब पहले से ही @rapaio द्वारा दिया गया है, लेकिन मैं इस पर थोड़ा विस्तार करूंगा।

निम्नलिखित निर्णय पेड़ की कल्पना करें (यह इस एक का थोड़ा संशोधित संस्करण है )

वृक्ष का उदाहरण

प्रत्येक नोड पर न केवल बहुमत वर्ग लेबल होते हैं, बल्कि अन्य लोग जो उस पत्ते पर समाप्त हो जाते हैं, इसलिए हम उस पत्ते पर निश्चितता की डिग्री प्रदान कर सकते हैं, जिस पर हम लेबल की भविष्यवाणी करते हैं।

उदाहरण के लिए, निम्नलिखित आंकड़ों पर विचार करें

डेटा

हम इसे चलाते हैं, और स्कोर को आउटपुट पर असाइन करते हैं, वास्तविक लेबल पर नहीं। इसके साथ, हम एक आरओसी वक्र बना सकते हैं, जैसे कि यहाँ सुझाया गया है

आर सी वक्र

यह थोड़ा समझ में आता है, हालांकि, इसका उपयोग करने के लिए अपनी दहलीज को ट्यून करें (चूंकि, निश्चित रूप से, निर्णय पेड़ों में दहलीज जैसी कोई चीज नहीं है), लेकिन इसका उपयोग अभी भी एयूसी की गणना करने के लिए किया जा सकता है, जो इस मामले में 0.92 है।

यहाँ इस्तेमाल किया गया आर कोड:

outlook = c('rain', 'overcast', 'rain', 'sunny', 'rain', 
            'rain', 'sunny', 'overcast', 'overcast', 'overcast', 
            'sunny', 'sunny', 'rain', 'rain', 'overcast',
            'sunny', 'overcast', 'overcast', 'sunny', 'sunny',
            'sunny', 'overcast')
humidity = c(79, 74, 80, 60, 65, 79, 60, 74, 77, 80, 
             71, 70, 80, 65, 70, 56, 80, 70, 56, 70,
             71, 77)
windy = c(T, T, F, T, F, T, T, T, T, F, T, F, F, F, T, T, F, T, T, F, T, T)
play = c(F, F, T, F, T, F, F, T, T, T, F, F, T, T, T, T, T, T, F, T, F, T)

game = data.frame(outlook, humidity, windy, play)
game$score = NA

attach(game)
game$score[outlook == 'sunny' & humidity <= 70] = 5/8
game$score[outlook == 'sunny' & humidity > 70] = 1 - 3/4
game$score[outlook == 'overcast'] = 4/5
game$score[outlook == 'rain' & windy == T] = 1 - 2/2
game$score[outlook == 'rain' & windy == F] = 3/3
detach(game)

game$predict = game$score >= 0.5
game$correct = game$predict == game$play

library(ROCR)

pred = prediction(game$score, game$play)
roc = performance(pred, measure="tpr", x.measure="fpr")
plot(roc, col="orange", lwd=2) 
lines(x=c(0, 1), y=c(0, 1), col="red", lwd=2)

auc = performance(pred, 'auc')
slot(auc, 'y.values')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.