पीसीए और के-गुना क्रॉस-वैलिडेशन इन कैरट पैकेज आर


16

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

हालाँकि, caretR पैकेज में, train()फ़ंक्शन में आपके द्वारा पास किया जाने वाला प्रशिक्षण डेटा पहले से ही PCA द्वारा संसाधित किया जाता है। तो जब एल्गोरिथ्म प्रदर्शन पार सत्यापन k गुना, पार सत्यापन सेट पहले पीसीए के साथ के माध्यम से संसाधित किया गया है preProcess()और predict()और पीसीए "फिटिंग" में इस्तेमाल किया वास्तव में है।

क्या स्थिति के बारे में मेरी समझ सही है? पीसीए के साथ क्रॉस-मान्यता के लिए Ie कैरेट की प्रक्रिया (या वास्तव में, किसी भी rescaling / केंद्रित विधि के साथ) "गलत" है क्योंकि डेटा का पूर्व-प्रसंस्करण क्रॉस-सत्यापन सेट और साथ ही प्रशिक्षण सेट पर किया जाता है? और यदि हां, तो परिणामों पर इसका कितना बड़ा प्रभाव पड़ेगा?


1
दिलचस्प सवाल। क्या प्रोफेसर एनजी कारण देते हैं कि "पीसीए को केवल प्रशिक्षण डेटा पर क्यों प्रदर्शन किया जाना चाहिए और फिर मैप का उपयोग क्रॉस सत्यापन और परीक्षण सेट को बदलने के लिए किया जाता है"? मेरा अंतर्ज्ञान यह है कि प्रभाव न्यूनतम होना चाहिए, क्योंकि ट्रेन / cv / परीक्षण डेटा को समान वितरण से आने के लिए माना जाता है, और PCA आउटपुट / निर्भर चर (ओं) को शामिल नहीं करता है।
मिउरा

1
@miura हाँ वह करता है। पीसीए प्रदर्शन करते समय, हमें वांछित "बनाए रखा विचरण" को प्राप्त करने के लिए आवश्यक आउटपुट वैक्टर में न्यूनतम संख्या k आयामों के लिए हल करना होगा। यह पैरामीटर k अब प्रभाव में है (मेरी समझ में) हमारे एल्गोरिथ्म का एक अतिरिक्त पैरामीटर जिसे हमें फिट करने की आवश्यकता है। यदि हम क्रॉस-वैलिडेशन सेट पर भी पीसीए का प्रदर्शन करते हैं, तो हम सीवी सेट पर अपने एल्गोरिथ्म के एक हिस्से को प्रभावी रूप से प्रशिक्षित कर रहे हैं, इस प्रकार क्रॉस-वैल्यूएशन का मान कम हो रहा है।
mchangun

मुझे लगता है कि आप पीसीए और एमडीएस को भ्रमित कर रहे हैं, लेकिन दोनों तरीकों से आप एक वांछित बनाए हुए विचरण सेट नहीं करते हैं। लेकिन आप इसे उन अपराधों से गणना कर सकते हैं जो वे k आयामों को कम करने के लिए लाते हैं। आपको इसे फिट करने की आवश्यकता नहीं है क्योंकि पहला आयाम हमेशा दूसरे की तुलना में अधिक विचरण को कम करेगा, और दूसरे को तीसरे की तुलना में अधिक ...
llrs

जवाबों:


18

मैंने व्याख्यान नहीं देखा, इसलिए जो कहा गया था, उस पर मैं टिप्पणी नहीं कर सकता।

मेरी $ 0.02: यदि आप रेज़मैपलिंग का उपयोग करके प्रदर्शन का अच्छा अनुमान प्राप्त करना चाहते हैं, तो आपको वास्तव में पूर्व के बजाय रेज़ामलिंग के दौरान सभी ऑपरेशन करना चाहिए। यह वास्तव में फ़ीचर चयन [1] के साथ-साथ पीसीए जैसे गैर-तुच्छ कार्यों के लिए सच है। यदि यह परिणामों में अनिश्चितता जोड़ता है, तो इसे फिर से शुरू करने में शामिल करें।

प्रमुख घटक प्रतिगमन के बारे में सोचें: कुछ घटकों पर रेखीय प्रतिगमन के बाद पीसीए। पीसीए अनुमान मापदंडों (शोर के साथ) और घटकों की संख्या भी चुना जाना चाहिए (विभिन्न मूल्यों के परिणामस्वरूप अलग परिणाम => अधिक शोर होगा)।

कहते हैं कि हमने योजना 1 के साथ 10 गुना सीवी का उपयोग किया:

conduct PCA
pick the number of components
for each fold:
   split data
   fit linear regression on the 90% used for training
   predict the 10% held out
end:

या योजना 2:

for each fold:
   split data
   conduct PCA on the 90% used for training
   pick the number of components
   fit linear regression
   predict the 10% held out
end:

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

मैं हमेशा सभी कार्यों को w / resampling में नहीं करने का दोषी हूं, लेकिन केवल तब जब मैं प्रदर्शन अनुमानों (जो असामान्य है) के बारे में वास्तव में परवाह नहीं करता हूं।

क्या दोनों योजनाओं में बहुत अंतर है? यह डेटा और प्री-प्रोसेसिंग पर निर्भर करता है। यदि आप केवल केंद्र और स्केलिंग कर रहे हैं, तो शायद नहीं। यदि आपके पास एक टन डेटा है, तो शायद नहीं। जैसे-जैसे प्रशिक्षण सेट का आकार घटता जाता है, खराब अनुमान लगने का जोखिम बढ़ता जाता है, खासकर अगर n पी के करीब है।

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

@mchangun: मुझे लगता है कि घटकों की संख्या एक ट्यूनिंग पैरामीटर है और आप संभवतः प्रदर्शन अनुमानों का उपयोग करके इसे चुनना चाहेंगे जो सामान्य है। आप स्वचालित रूप से K को चुन सकते हैं जैसे कि कम से कम X% विचरण को समझाया गया है और उस प्रक्रिया को फिर से शुरू करने के भीतर शामिल करें ताकि हम उस प्रक्रिया में शोर के लिए जिम्मेदार हों।

मैक्स

[१] एम्ब्रोज़, सी।, और मैक्लाक्लन, जी। (२००२)। माइक्रोएरे जीन-अभिव्यक्ति डेटा के आधार पर जीन निष्कर्षण में चयन पूर्वाग्रह। नेशनल एकेडमी ऑफ साइंसेज की कार्यवाही, 99 (10), 6562-6566।


21

trainफ़ंक्शन चलाने से पहले डेटा को प्रीप्रोसेस न करें ! ट्रेन फ़ंक्शन के लिए preProcess तर्क का उपयोग करें , और प्री-प्रोसेसिंग को प्रत्येक पुन: नमूनाकरण पुनरावृत्ति पर लागू किया जाएगा।

जैसे यह मत करो:

library(caret)
dat <- iris
pp <- preProcess(dat[,-5], method="pca")
dat[,-5] <- predict(pp, dat[,-5])
knnFit1 <- train(Species~., dat, method = "knn", preProcess=c("pca"), 
    trControl = trainControl(method = "cv"))

यह करो!

dat <- iris
knnFit2 <- train(Species~., dat, method = "knn", preProcess=c("pca"), 
    trControl = trainControl(method = "cv"))

1
यदि मैं आपके सुझाव के अनुसार प्रीप्रोसेस करता हूं, तो क्या मुझे पूर्वानुमानों के लिए मॉडल का उपयोग करने के लिए नए डेटा को प्रीप्रोसेस करने की आवश्यकता है? फिलहाल, मैं केवल यही करता हूं: pred <- predict(knnFit2, newdata) जहां newdataतराजू नहीं है। क्या कैरेट यह जानने के लिए पर्याप्त स्मार्ट है कि newdataभविष्यवाणियों के लिए इसका उपयोग करने से पहले इसे प्रीप्रोसेस करने की आवश्यकता है ?
mchangun

7
@ मचंगुन नं। कैरेट पूर्व-प्रसंस्करण मापदंडों को बचाता है, और पूर्व-पूर्वानुमान में नए डेटा को प्री-प्रोसेस करेगा। कॉल करें। यह बहुत चालाक है!
Zach
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.