यादृच्छिक जंगलों में वोटों से एक "निश्चित स्कोर" बनाना?


36

मैं एक वर्गीकारक कि भेद जाएगा प्रशिक्षित करने के लिए देख रहा हूँ Type Aऔर Type Bलगभग 10,000 वस्तुओं की एक यथोचित बड़े प्रशिक्षण सेट के साथ वस्तुओं, के बारे में आधा हिस्सा हैं Type Aऔर आधा हिस्सा हैं Type B। डेटासेट में कोशिकाओं के भौतिक गुणों (आकार, माध्य त्रिज्या, आदि) का विवरण देने वाली 100 निरंतर विशेषताएं होती हैं। जोड़ीदार स्कैप्लेट्स और घनत्व प्लॉटों में डेटा की कल्पना हमें बताती है कि कई विशेषताओं में कैंसर और सामान्य कोशिकाओं के वितरण में महत्वपूर्ण ओवरलैप है।

मैं वर्तमान में इस डेटासेट के लिए एक वर्गीकरण विधि के रूप में यादृच्छिक जंगलों की खोज कर रहा हूं, और मैं कुछ अच्छे परिणाम देख रहा हूं। आर का उपयोग करते हुए, यादृच्छिक वन लगभग 90% वस्तुओं को सही ढंग से वर्गीकृत करने में सक्षम हैं।

जिन चीज़ों को हम आज़माना चाहते हैं उनमें से एक "निश्चित स्कोर" है, जो इस बात का परिमाण देगा कि हम वस्तुओं के वर्गीकरण के प्रति कितने आश्वस्त हैं। हम जानते हैं कि हमारा क्लासिफायर 100% सटीक नहीं होगा, और यहां तक ​​कि अगर भविष्यवाणियों में उच्च सटीकता प्राप्त की जाती है, तो हम प्रशिक्षित तकनीशियनों को पहचानना चाहेंगे कि कौन सी वस्तुएं सही मायने में हैं Type Aऔर Type B। इसलिए हम Type Aया के अप्रमाणित पूर्वानुमान प्रदान करने के बजाय Type B, हम प्रत्येक वस्तु के लिए एक अंक प्रस्तुत करना चाहते हैं जो यह वर्णन करेगा कि कोई वस्तु कैसे है Aया कैसे Bहै। उदाहरण के लिए, यदि हम ० से १० तक के स्कोर को तैयार करते हैं, तो ० का स्कोर एक वस्तु को इंगित कर सकता है जो Type Aवस्तुओं के समान है , जबकि १० का स्कोर इंगित करेगा कि कोई वस्तु बहुत पसंद है Type B

मैं सोच रहा था कि मैं इस तरह के स्कोर को तैयार करने के लिए यादृच्छिक जंगलों के भीतर वोट का उपयोग कर सकता हूं। चूंकि यादृच्छिक जंगलों में वर्गीकरण उत्पन्न पेड़ों के जंगल के भीतर बहुमत से मतदान के द्वारा किया जाता है, इसलिए मैं मानूंगा कि जिन वस्तुओं को 100% पेड़ों Type Aद्वारा वोट दिया गया था, उन वस्तुओं से भिन्न होंगे, जो कहते हैं, 51% पेड़ों को हो Type A

वर्तमान में, मैंने वोटों के अनुपात के लिए एक मनमाना दहलीज निर्धारित करने की कोशिश की है जिसे किसी वस्तु को वर्गीकृत करने के लिए प्राप्त करना होगा Type Aया Type Bयदि थ्रेशोल्ड पारित नहीं हुआ है तो इसे वर्गीकृत किया जाएगा Uncertain। उदाहरण के लिए, यदि मैं इस शर्त को लागू करता हूं कि 80% या अधिक पेड़ों को पारित करने के लिए एक वर्गीकरण के निर्णय पर सहमत होना चाहिए, तो मुझे पता चलता है कि 99% वर्ग की भविष्यवाणियां सही हैं, लेकिन लगभग 40% वस्तुओं के रूप में द्विपद हैं Uncertain

क्या यह समझ में आता है, फिर, भविष्यवाणियों की निश्चितता को पूरा करने के लिए मतदान की जानकारी का लाभ उठाने के लिए? या मैं अपने विचारों के साथ गलत दिशा में जा रहा हूं?


सुनिश्चित करें कि आपके पास अलग-अलग प्रशिक्षण और परीक्षण डेटा सेट हैं। सुनिश्चित करें कि आप अपने परीक्षण सेट का यथासंभव उपयोग करते हैं (आदर्श रूप में केवल एक बार)।
बोरिस गोरेलिक

@bgbg मैं 70/20/10 विभाजन में एक प्रशिक्षण / सत्यापन / परीक्षण योजना का उपयोग कर रहा हूं। मैं 70% डेटा के साथ एक मॉडल को प्रशिक्षित कर रहा हूं और 20% के सत्यापन सेट पर परिणामों के आधार पर मापदंडों को ट्यून कर रहा हूं। इन दो सेटों पर मापदंडों को ट्यून करने के बाद, मैं 10% परीक्षण सेट पर मॉडल का आकलन करता हूं। हालांकि ब्रेमेन का दावा है कि ओओबी त्रुटि दर में निर्मित एक अलग परीक्षण सेट को निरर्थक बना देता है, मैं उसके दावे से सावधान हूं।
इलियम

जवाबों:


19

यह सही समझ में आता है, और यादृच्छिक जंगलों के सभी कार्यान्वयन मैंने (जैसे MATLAB के साथ) काम किया है, संभाव्य आउटपुट प्रदान करता है और साथ ही ऐसा करने के लिए।

मैंने R कार्यान्वयन के साथ काम नहीं किया है, लेकिन अगर वोट के साथ-साथ कठिन निर्णय के लिए नरम आउटपुट प्राप्त करने का एक सरल तरीका नहीं था, तो मुझे झटका लगेगा।

संपादित करें: बस R पर नज़र रखी गई है, और भविष्यवाणी। आयामी फ़ॉरस्टेस्ट आउटपुट संभावनाओं को भी करता है।


1
आपके जवाब के लिए धन्यवाद। आप सही हैं, मैंने एक स्क्रिप्ट बनाई है जो प्रत्येक ऑब्जेक्ट को प्राप्त होने वाले वोटों के अनुपात को आउटपुट करेगी। मुझे आश्चर्य है, हालांकि, ये वोट कितने उपयोगी होंगे? क्या कोई अगला चरण है जो आप सुझाते हैं? क्या मुझे आरएफ के अतिरिक्त रन के माध्यम से मतदान के अनुपात की परिवर्तनशीलता को देखना चाहिए? मैं समझता हूं कि RF में एक स्टोकेस्टिक तत्व है। क्या कोई निदान है जिसे मुझे देखना चाहिए?
इलियम

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

@mbq क्षमा करें, क्या आप स्पष्ट कर सकते हैं कि आपका क्या मतलब है? मुझे आपके सुझाव में दिलचस्पी है और कल इसका पालन करूंगा!
इलियम

1
इसके अलावा, एक RF में परिवर्तनशीलता प्रशिक्षण चरण में आती है, इसलिए RF के माध्यम से कई बार परीक्षण नमूने चलाने से परिणाम परिवर्तित नहीं होंगे। मैं RF में AUC बनाम पेड़ों की संख्या को देखूंगा, यह सुनिश्चित करने के लिए कि आपके पास पर्याप्त पेड़ हैं, और फिर AUC के अनुसार न्यूनतम पत्ती पैरामीटर का अनुकूलन करें।
बेनामनर

2
@ जोनाथन मुझे लगता है कि mbq अंशांकन नाम की किसी चीज़ का जिक्र कर रहा है (हालाँकि अन्य नाम भी हो सकते हैं)। उदाहरण के लिए इस प्रश्न को देखें: बहु-क्लास बूस्टेड क्लासिफायर को कैलिब्रेट करना
स्टेफेन

17

यदि आप आर का उपयोग कर रहे हैं, तो कैरेट पैकेज आपको पहिया का फिर से आविष्कार करने से बचाएगा। उदाहरण के लिए, निम्न कोड एक यादृच्छिक वन मॉडल के लिए ट्यूनिंग मापदंडों को चुनने के लिए क्रॉस-वैलिडेशन का उपयोग करता है, और फिर प्रत्येक क्रॉस-वैलिडेशन फोल्ड के लिए सटीकता के औसत और मानक विचलन को आउटपुट करता है। अंत में, यह मॉडल के लिए कक्षा की संभावनाओं की गणना करता है।

library(caret)
library(PerformanceAnalytics)
data(iris)

#Make a yes/no dataset
Dataset <- iris
Dataset$Class <- ifelse(Dataset$Species=='versicolor','Yes','No')
Dataset$Class  <- as.factor(Dataset$Class)
Dataset$Species<- NULL
chart.Correlation(Dataset[-5], col= Dataset$Class)

#Fit an RF model
model <- train(Class~.,Dataset,
                method='rf',TuneLength=3,
                trControl=trainControl(
                    method='cv',number=10,
                    classProbs = TRUE))
model$results

#Predict class probabilities (i.e. 'certainty' scores)
pred <- predict(model,iris,"prob")
head(pred)

कैरेट के बारे में अच्छी बात यह है कि यह विभिन्न पूर्वानुमान मॉडल की तुलना करना बहुत आसान बनाता है। उदाहरण के लिए, यदि आप एक SVM कोशिश करना चाहते हैं, आप पाठ की जगह ले सकता method='rf'साथ method='svmLinear'या method='svmRadial'. तुम भी के आधार पर अपनी ट्यूनिंग पैरामीटर चयन कर सकते हैं एयूसी trainControl पैरामीटर के लिए एक पंक्ति जोड़कर बजाय सटीकता: summaryFunction=twoClassSummary

Finnally, वहां PerformAnalytics पैकेज से थोड़ा सा कोड है chart.Correlation(Dataset[-5], col= Dataset$Class), जिसे मॉडल बनाने की आवश्यकता नहीं है, लेकिन यह आपके डेटासेट का एक अच्छा दृश्य प्रदान करता है।


आप मुझे कैरट पैकेज का प्रशंसक बना रहे हैं। मुझे लगता है कि मैं अलग-अलग वर्गीकरण विधियों की कोशिश करने के लिए एक दूसरा आर थ्रेड खुला रखूंगा और अपने आप से सीवी और पैरामीटर ट्यूनिंग करूंगा और देखूंगा कि क्या मुझे कोई तुलनीय परिणाम मिलता है।
इलियम

@ जोनाथन यह सुनकर खुशी हुई! यह एक अद्भुत पैकेज है। modelLookup()क्या संभव है की एक सूची के लिए कमांड का प्रयास करें ।
जक

probके प्रकार predictका उपयोग करके भी उपलब्ध है randomForest(के साथ या जैसे अन्य संकुल के उपयोग के बिना अपने मॉडल प्रशिक्षित करने के लिए caretया PerformanceAnalytics)।
हैक-आर

2

RandomForest आर में पैकेज अपने विश्लेषण के बारे में अधिक से अधिक विस्तार में प्राप्त करने के लिए एक बहुत सभ्य पैकेज है। यह आपको वोट के साथ (अंश या कच्ची गिनती के रूप में) प्रदान करता है और यह ट्यूनिंग और क्रॉस सत्यापन के लिए क्षमता में निर्मित प्रदान करता है और यहां तक ​​कि आपको अपनी सुविधाओं के बारे में अधिक जानकारी भी दे सकता है (यदि आप जानना चाहते थे कि आपके 100 में से कौन से हैं) विश्लेषण में सबसे महत्वपूर्ण)।

यदि आप पहले से ही उस पैकेज का उपयोग कर रहे हैं, तो हो सकता है कि आप इसे एक नज़दीकी रूप देना चाहते हैं और यदि आप नहीं हैं तो शायद इसे देखें।

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