स्तरीकृत क्रॉस सत्यापन का उपयोग क्यों करें? यह विचरण से संबंधित लाभ को नुकसान क्यों नहीं पहुंचाता है?


29

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

क्या मेरा तर्क त्रुटिपूर्ण है?

EDIT मुझे इस बात में दिलचस्पी है कि क्या यह तरीका CV की भलाई को नुकसान पहुंचाता है। मैं देख सकता हूं कि यदि आपके पास एक छोटा सा नमूना / बहुत असंतुलित कक्षाएं हैं तो दोनों आवश्यक हैं / दोनों ही एक वर्ग में मामूली वर्ग के प्रतिनिधि नहीं होने से बचने के लिए।

पेपर क्रॉस-वैलिडेशन स्टडीज में एपल्स-टू-एपल्स: क्लासिफायर इनफॉरमेशन मेजरमेंट में स्ट्रैटिफिकेशन के लिए केस को आगे बढ़ाया जाता है, लेकिन सभी तर्क 'स्ट्रेटिफिकेशन एक सुरक्षा और अधिक स्थिरता प्रदान करते हैं' के लिए राशि लगते हैं, लेकिन किसी भी सुरक्षा के लिए पर्याप्त रूप से आवश्यक नहीं होगा। डेटा।

क्या इसका उत्तर बस इतना है कि "हम इसका उपयोग आवश्यकता से अधिक करते हैं क्योंकि हमारे पास शायद ही पर्याप्त डेटा हो।" ?

जवाबों:


18

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

RxK- गुना क्रॉस-वैधीकरण K अलग परीक्षण सिलवटों को सुनिश्चित करता है, लेकिन फिर अलग-अलग यादृच्छिक विभाजन के लिए R बार दोहराया जाता है ताकि K-CV के लिए स्वतंत्रता मान्यताओं को रखा जा सके, लेकिन यह पुनरावृत्ति के साथ खो जाता है।

स्तरीकृत क्रॉस-वैलिडेशन प्रिंसिपल का उल्लंघन करता है कि आँकड़ों की गणना करने से पहले परीक्षण लेबल को कभी नहीं देखा जाना चाहिए, लेकिन यह आमतौर पर सहज माना जाता है क्योंकि एकमात्र प्रभाव सिलवटों को संतुलित करना है, लेकिन इससे विविधता का नुकसान होता है ( विचरण का अवांछित नुकसान)। यह पूरी तरह से पूरी आबादी से स्वाभाविक रूप से आकर्षित होने के समान नमूना के निर्माण के बूस्ट्रैप विचार से आगे बढ़ता है। संभवतः मुख्य कारण स्तरीकरण महत्वपूर्ण है जो वर्गीकरण एल्गोरिदम में दोषों को संबोधित करता है, क्योंकि वे बहुत आसानी से कक्षाओं के अधिक या कम प्रतिनिधित्व द्वारा पक्षपाती हैं। एक एल्गोरिथ्म जो संतुलन तकनीकों का उपयोग करता है (या तो चयन या भार द्वारा) या एक मौका-सही माप का अनुकूलन करता है (कप्पा या अधिमानतः सूचना) इससे कम प्रभावित होता है, हालांकि ऐसे एल्गोरिदम भी कर सकते हैं '

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

पुनः पहनावा और विविधता: यदि प्रशिक्षण तह पर सीखे गए क्लासिफायरर्स का उपयोग फ्यूजन के लिए किया जाता है, तो यह केवल सामान्यीकरण त्रुटि का अनुमान नहीं है, सीवी की बढ़ती कठोरता, स्तरीकृत बूटस्ट्रैप और स्तरीकृत सीवी विविधता का नुकसान होता है, और संभावित जोखिम, बूटस्ट्रैप की तुलना में, बूटस्ट्रैप के लिए मजबूर किया जाता है। और मजबूर सीवी।


क्या यह संभव होगा कि स्तरीकृत बूटस्ट्रैप "जहां फोर्स बूटस्ट्रैप" बेहतर हो "पर कुछ संदर्भ पत्र प्रदान करें?"
us --r11852

16

शायद आप इसे इस तरह से सोच सकते हैं। मान लीजिए कि आपके पास एक डेटासेट है जहां 100 नमूने हैं, कक्षा 'ए' में 90 और कक्षा 'बी' में 10 हैं। इस बहुत असंतुलित डिज़ाइन में यदि आप सामान्य यादृच्छिक समूह बनाते हैं, तो आप 'B' वर्ग से बहुत कम (या कुछ NONE!) मॉडल का निर्माण कर सकते हैं। यदि आप एक मॉडल का निर्माण कर रहे हैं, जो डेटा पर प्रशिक्षित है, जहां बहुत कम हैं, या यहां तक ​​कि कोई भी नहीं है, तो दूसरी श्रेणी के आप यह कैसे उम्मीद कर सकते हैं कि यह प्रभावी रूप से दुर्लभ समूह की भविष्यवाणी कर सकता है? स्तरीकृत क्रॉस-वैधीकरण यादृच्छिकरण के लिए अनुमति देता है, लेकिन यह भी सुनिश्चित करता है कि इन असंतुलित डेटासेट में दोनों वर्गों में से कुछ हैं।

अधिक 'संतुलित' डेटासेट के साथ स्तरीकृत CV का उपयोग करने के बारे में चिंताओं को शांत करने के लिए, आइए R कोड का उपयोग करके एक उदाहरण देखें।

require(mlbench)
require(caret)
require(cvTools)

# using the Sonar dataset (208 samples)
data(Sonar)

# see the distribution of classes are very well balanced
prop.table(table(Sonar$Class))

> prop.table(table(Sonar$Class))

M         R 
0.5336538 0.4663462 

# stratified
# set seed for consistency
# caret::createFolds does stratified folds by default
set.seed(123)
strat <- createFolds(Sonar$Class, k=10)

# non-stratified using cvTools
set.seed(123)
folds <- cvFolds(nrow(Sonar), K=10, type="random")
df <- data.frame(fold = folds$which, index = folds$subsets)
non_strat <- lapply(split(df, df$fold), FUN=function(x) x$index)

# calculate the average class distribution of the folds
strat_dist <- colMeans(do.call("rbind", lapply(strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
    non_strat_dist <- colMeans(do.call("rbind", lapply(non_strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
strat_dist
> strat_dist
M         R 
0.5338312 0.4661688 
non_strat_dist
> non_strat_dist
M         R 
0.5328571 0.4671429 

जैसा कि आप देख सकते हैं, एक डेटासेट में जो अच्छी तरह से संतुलित है सिलवटों को यादृच्छिक मौका द्वारा समान वितरण होगा। इसलिए स्तरीकृत सीवी इन परिस्थितियों में बस एक आश्वासन उपाय है। हालाँकि, विचरण को संबोधित करने के लिए आपको प्रत्येक गुना के वितरण को देखना होगा। कुछ परिस्थितियों में (यहां तक ​​कि 50-50 से शुरू होने पर) आप उन सिलवटों को ले सकते हैं जिनमें यादृच्छिक संयोग से 30-70 के विभाजन होते हैं (आप ऊपर दिए गए कोड को चला सकते हैं और वास्तव में इसे खुश देख सकते हैं!)। यह एक खराब प्रदर्शन करने वाले मॉडल को जन्म दे सकता है क्योंकि इसमें एक वर्ग के लिए पर्याप्त नहीं था कि वह सटीक भविष्यवाणी कर सके जिससे समग्र सीवी संस्करण बढ़ रहा है। यह स्पष्ट रूप से अधिक महत्वपूर्ण है जब आपके पास 'सीमित' नमूने होते हैं जहां आपको वितरण में बहुत अधिक अंतर होने की संभावना होती है।

अब बहुत बड़े डेटासेट के साथ, स्तरीकरण आवश्यक नहीं हो सकता है क्योंकि सिलवटों में काफी बड़ा होगा फिर भी संभावना है कि कम से कम 'दुर्लभ' वर्ग का अच्छा अनुपात हो। हालांकि, वास्तव में कोई कम्प्यूटेशनल नुकसान नहीं है और स्तरीकरण से बचने का कोई वास्तविक कारण नहीं है यदि आपके नमूने असंतुलित हैं, भले ही आपके व्यक्तिगत विचार में आपके पास कितना भी डेटा हो।


हां, इससे कुल मतलब बनता है। हालाँकि, यह एक बहुत ही विशिष्ट मामला है और आप इसे डेटा की कमी को ध्यान में रखते हुए कर रहे हैं। अगर आपके पास 10,000 नमूने थे, तो क्या आप ऐसा करेंगे? मेरा सवाल है, आदर्श रूप से और पर्याप्त डेटा दिया गया है, क्या यह एक अच्छा विचार है?
जेम्स ओनर्स

1
@kungfujam, यह इस बात पर निर्भर करता है कि आपका डेटा कितना असंतुलित है। यहां तक ​​कि भारी मात्रा में डेटा के साथ, आप बहुत कम अन्य वर्ग (बेतरतीब ढंग से) के साथ समाप्त हो सकते हैं। इस संबंध में कुछ शोध हुए हैं। हालांकि थोड़ा दिनांकित, कोहावी ने बताया कि stratifcation is generally a better scheme, both in terms of bias and variance, when compared to regular cross-validation। कोई भी सही नमूना योजना नहीं है लेकिन असंतुलित डिजाइन में स्तरीकरण एक अच्छा तरीका है।
cdeterman

इसके लिए शुक्रिया। मुझे अभी कोहावी पेपर मिला है। पुराना लेकिन सोने के जैसा खरा। मैं देख सकता हूं कि सामान्य वर्गों में पूरी तरह से संतुलित नहीं हैं और डेटा सीमित है => स्तरीकरण आम तौर पर बेहतर है ... लेकिन उचित संतुलन दिया मुझे लगता है जैसे कि यह एक उल्लंघन है!
जेम्स ओनर्स

@kungfujam, आप किस हिस्से को उल्लंघन मानते हैं? के-फोल्ड को यादृच्छिक रूप से छोड़ दिया जाता है, क्योंकि उन्हें विशेष रूप से विभिन्न समूहों के एक निश्चित अनुपात की आवश्यकता होती है। आप इसे बेतरतीब ढंग से प्रत्येक समूह से अपने सिलवटों को बनाने और एक समग्र गुना के लिए उन्हें एक साथ जोड़कर सोच सकते हैं जिससे यादृच्छिकरण को बनाए रखा जा सके, जिसके बारे में आप चिंतित हैं। एक उचित संतुलन (जैसे 60% -40%) को देखते हुए, यह संभावना है कि आपके सिलवटों में स्तरीकरण के साथ या बिना (पाठ्यक्रम की कुछ भिन्नता) समान अनुपात होगा।
cdeterman

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