क्या किसी को पता है कि अगर निम्नलिखित का वर्णन किया गया है और (दोनों ही तरह से) अगर यह एक बहुत ही असंतुलित लक्ष्य चर के साथ एक भविष्य कहनेवाला मॉडल सीखने के लिए एक प्रशंसनीय विधि की तरह लगता है?
अक्सर डेटा खनन के सीआरएम अनुप्रयोगों में, हम एक मॉडल की तलाश करेंगे जहां सकारात्मक घटना (सफलता) बहुमत (नकारात्मक वर्ग) के सापेक्ष बहुत कम है। उदाहरण के लिए, मेरे पास 500,000 उदाहरण हो सकते हैं जहां केवल 0.1% सकारात्मक वर्ग के हैं (जैसे ग्राहक खरीदा गया)। इसलिए, एक प्रेडिक्टिव मॉडल बनाने के लिए, एक तरीका यह है कि आप डेटा को सैंपल दें जिससे आप सभी पॉजिटिव क्लास इंस्टेंसेस और केवल नेगेटिव क्लास इंस्टेंसेस का एक सैंपल रखें ताकि पॉजिटिव से नेगेटिव क्लास का अनुपात 1 के करीब हो (शायद 25%) से 75% सकारात्मक नकारात्मक)। नमूनाकरण, अंडरस्लैमलिंग, एसएमओटीई आदि साहित्य में सभी तरीके हैं।
मैं उत्सुक हूं कि ऊपर बुनियादी नमूना रणनीति का संयोजन कर रहा हूं लेकिन नकारात्मक वर्ग के साथ।
- सभी सकारात्मक वर्ग उदाहरण रखें (जैसे 1,000)
- संतुलित नमूना (उदाहरण 1,000) बनाने के लिए नकारात्मक क्लास इंस्टेंस का नमूना लें।
- मॉडल को फिट करें
- दोहराना
किसी को भी ऐसा करने से पहले सुना? बगैर परेशानी के यह लगता है कि 500,000 होने पर नकारात्मक वर्ग के केवल 1,000 उदाहरणों का नमूना लेना यह है कि भविष्यवक्ता स्थान विरल होगा और आपके पास संभावित भविष्यवक्ता मूल्यों / प्रतिमानों का प्रतिनिधित्व नहीं हो सकता है। मदद करने में मदद करने लगता है।
मैंने देखा कि रपटर और कुछ भी नहीं "ब्रेक" है जब नमूनों में से एक में एक भविष्यवक्ता के लिए सभी मान नहीं होते हैं (तब नहीं टूटता है जब तब उन भविष्यवाणियों के मूल्यों के साथ उदाहरणों की भविष्यवाणी की जाती है:
library(rpart)
tree<-rpart(skips ~ PadType,data=solder[solder$PadType !='D6',], method="anova")
predict(tree,newdata=subset(solder,PadType =='D6'))
कोई विचार?
अद्यतन: मैंने एक वास्तविक विश्व डेटा सेट लिया (प्रत्यक्ष मेल प्रतिक्रिया डेटा का विपणन) और यादृच्छिक रूप से इसे प्रशिक्षण और सत्यापन में विभाजित किया। 618 भविष्यवक्ता और 1 बाइनरी लक्ष्य (बहुत दुर्लभ) हैं।
Training:
Total Cases: 167,923
Cases with Y=1: 521
Validation:
Total Cases: 141,755
Cases with Y=1: 410
मैंने प्रशिक्षण सेट से सभी सकारात्मक उदाहरण (521) लिए और संतुलित नमूने के लिए समान आकार के नकारात्मक उदाहरणों का एक यादृच्छिक नमूना लिया। मैं एक पेड़ के पेड़ को फिट करता हूं:
models[[length(models)+1]]<-rpart(Y~.,data=trainSample,method="class")
मैंने इस प्रक्रिया को 100 बार दोहराया। फिर इन 100 मॉडलों में से प्रत्येक के लिए सत्यापन नमूने के मामलों पर वाई = 1 की संभावना का अनुमान लगाया। मैंने केवल एक अंतिम अनुमान के लिए 100 संभावनाओं का औसत निकाला। मैंने सत्यापन सेट पर संभावनाओं को निर्धारित किया और प्रत्येक निर्णय में उन मामलों के प्रतिशत की गणना की जहां वाई = 1 (मॉडल की रैंकिंग क्षमता का आकलन करने के लिए पारंपरिक विधि)।
Result$decile<-as.numeric(cut(Result[,"Score"],breaks=10,labels=1:10))
यहाँ प्रदर्शन है:
यह देखने के लिए कि बिना किसी बैगिंग की तुलना में, मैंने केवल पहले नमूने के साथ सत्यापन नमूने की भविष्यवाणी की (सभी सकारात्मक मामलों और समान आकार का एक यादृच्छिक नमूना)। स्पष्ट रूप से, सैंपल आउट किए गए सत्यापन नमूने पर प्रभावी होने के लिए नमूना किया गया डेटा बहुत विरल या ओवरफिट था।
एक दुर्लभ घटना और बड़े एन और पी होने पर बैगिंग रूटीन की प्रभावकारिता का सुझाव देना।