मैं कैसे व्याख्या कर सकता हूं कि मुझे पीसीए से क्या मिलता है?


14

एक विश्वविद्यालय के असाइनमेंट के हिस्से के रूप में, मुझे डेटा प्री-प्रोसेसिंग को काफी विशाल, मल्टीवीरेट (> 10) कच्चे डेटा सेट पर संचालित करना होगा। मैं शब्द के किसी भी अर्थ में एक सांख्यिकीविद् नहीं हूं, इसलिए मैं थोड़ा उलझन में हूं कि क्या चल रहा है। अग्रिम में क्षमा याचना संभवत: एक सहज सरल प्रश्न है - मेरे सिर की कताई विभिन्न उत्तरों को देखने के बाद और आँकड़े-बोलने के माध्यम से मिटाने की कोशिश करती है।

मैंने पढ़ा है कि:

  • पीसीए मुझे अपने डेटा की गतिशीलता को कम करने की अनुमति देता है
  • ऐसा गुण / आयामों को विलय / हटाने से होता है जो बहुत सहसंबंधित करते हैं (और इस प्रकार थोड़ा अनावश्यक हैं)
  • यह covariance डेटा पर eigenvectors पाकर ऐसा करता है (एक अच्छा ट्यूटोरियल के लिए धन्यवाद जो मैंने इसे सीखने के लिए किया है)

जो माहान है।

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

PersonID     Sex     Age Range    Hours Studied     Hours Spent on TV      Test Score     Coursework Score 
1            1       2            5                 7                      60             75
2            1       3            8                 2                      70             85 
3            2       2            6                 6                      50             77
...          ...     ...          ...               ...                    ...            ...

मुझे बिल्कुल यकीन नहीं है कि मैं किसी भी परिणाम की व्याख्या कैसे करूंगा।

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

बस अपने डेटा पर पीसीए का प्रदर्शन करना (एक आँकड़े पैकेज का उपयोग करना) संख्याओं के एक NxN मैट्रिक्स (जहां एन मूल आयामों की संख्या है) से बाहर निकलता है, जो मेरे लिए पूरी तरह से ग्रीक है।

मैं पीसीए कैसे कर सकता हूं और मूल आयामों के संदर्भ में मुझे जो कुछ भी मिल सकता है उसे एक तरह से ले सकता हूं?


3
आपके उदाहरण डेटा में डेटा प्रकारों का मिश्रण दिखाया गया है: सेक्स द्विबीजपत्री है, आयु क्रमिक है, अन्य 3 अंतराल हैं (और वे अलग-अलग इकाइयों में हैं)। रैखिक पीसीए करना अंतराल डेटा के लिए सही है (लेकिन आपके पास सबसे पहले इकाइयों के कारण उन चर को जेड-मानकीकृत करना है)। यह बहस का विषय है कि क्या पीसीए बाइनरी या डायकोटोमस डेटा के लिए उपयुक्त है । आपको रैखिक PCA में क्रमिक डेटा का उपयोग नहीं करना चाहिए। लेकिन आपके उदाहरण डेटा के साथ मुख्य प्रश्न: इसके साथ पीसीए करने के लिए बिल्कुल क्यों ; इस मामले में क्या अर्थ हो सकता है?
tnnphns

यह पीडीएफ पीसीए के आवेदन के लिए उपयोगी है । यहाँ अन्य पोस्ट आपके पीसीए परिणामों के "अर्थ" का वर्णन करते हुए एक अच्छा काम करते हैं।
एम्स

(कृपया मुझे गलत होने पर सही करें) मेरा मानना ​​है कि पीसीए डेटा में रुझानों को खोजने में मदद करने के लिए / और यह पता लगाने के लिए बहुत उपयोगी हो सकता है कि कौन सी विशेषताएँ किससे संबंधित हो सकती हैं (जो मुझे लगता है कि अंत में पता लगाना होगा पैटर्न और पसंद)। मेरे असाइनमेंट का विवरण है कि मेरे पास यह विशाल डेटा सेट है और मुझे बस क्लस्टरिंग और क्लासिफायर लागू करना है, और यह उन चरणों में से एक है जो पूर्व-प्रसंस्करण के लिए महत्वपूर्ण हैं। अगर मैं डेटा सेट से कुछ दूसरी ऑर्डर विशेषताओं को निकालने की कोशिश करता हूं, तो मुझे अंतराल डेटा में उन्हें प्राप्त करने की कोशिश करनी होगी?
निट्सुआ

3
मैं केवल आपको, वर्तमान में, पीसीए (इस साइट पर,) पर अधिक पढ़ने के लिए सिफारिश कर सकता हूं। कई अनिश्चितताएं निश्चित रूप से दूर हो जाएंगी।
tnnphns

ऊपर दिए गए कई बढ़िया लिंक, यहाँ एक छोटा उदाहरण है, जो "पीसीए" के बारे में आपको एक अच्छा उदाहरण दे सकता है पीसीए के बारे में प्रतिगमन के मामले में, एक व्यावहारिक उदाहरण के साथ और बहुत कम, यदि सभी तकनीकी शब्दों में। sites.stat.psu.edu/~ajw13/stat505/fa06/16_princomp/…
leviathan

जवाबों:


15

आपके द्वारा पोस्ट किए गए ट्यूटोरियल के पेज 13-20, पीसीए का उपयोग गतिशीलता में कमी के लिए कैसे किया जाता है, इसकी एक बहुत ही सहज ज्यामितीय व्याख्या प्रदान करता है।

आपके द्वारा उल्लेखित 13x13 मैट्रिक्स संभवतः "लोडिंग" या "रोटेशन" मैट्रिक्स है (मैं अनुमान लगा रहा हूं कि आपके मूल डेटा में 13 चर थे?) जिसे दो (समकक्ष) तरीकों में से एक में व्याख्या किया जा सकता है:

  1. आपके लोडिंग मैट्रिक्स के कॉलम के निरपेक्ष मान बताते हैं कि प्रत्येक घटक प्रत्येक घटक के लिए आनुपातिक रूप से कितना "योगदान देता है"।

  2. रोटेशन मैट्रिक्स आपके डेटा को आपके रोटेशन मैट्रिक्स द्वारा परिभाषित आधार पर घुमाता है। इसलिए यदि आपके पास 2-डी डेटा है और अपने डेटा को अपने रोटेशन मैट्रिक्स से गुणा करें, तो आपका नया एक्स-एक्सिस पहला मुख्य घटक होगा और नया वाई-एक्सिस दूसरा मुख्य घटक होगा।

संपादित करें: यह प्रश्न बहुत कुछ पूछा जाता है, इसलिए जब मैं पीसीए का उपयोग आयामीता में कमी के लिए कर रहा हूं, तो मैं एक विस्तृत दृश्य व्याख्या करने जा रहा हूं।

Y = x + शोर से उत्पन्न 50 बिंदुओं के नमूने पर विचार करें। पहला मुख्य घटक लाइन y = x के साथ और दूसरा घटक लाइन y = -x के साथ लेट जाएगा, जैसा कि नीचे दिखाया गया है।

यहाँ छवि विवरण दर्ज करें

पहलू अनुपात इसे थोड़ा गड़बड़ करता है, लेकिन इसके लिए मेरा शब्द लें कि घटक ऑर्थोगोनल हैं। PCA को लागू करने से हमारा डेटा घूम जाएगा ताकि घटक x और y अक्ष बन जाएं:

यहाँ छवि विवरण दर्ज करें

परिवर्तन से पहले के डेटा सर्किल हैं, इसके बाद के डेटा क्रॉस हैं। इस विशेष उदाहरण में, डेटा को इतना घुमाया नहीं गया जितना कि लाइन y = -2x पर फ़्लिप किया गया था, लेकिन हम यहाँ आसानी से वाई-अक्ष को उल्टा कर सकते हैं ताकि इसे सामान्य रूप से नुकसान के बिना एक रोटेशन के रूप में वर्णित किया जा सके।

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

यहाँ छवि विवरण दर्ज करें

हम अपने मूल डेटा को मूल अक्ष पर वापस घुमाकर (ठीक, प्रक्षेपित) करके आंशिक रूप से पुनर्प्राप्त कर सकते हैं।

यहाँ छवि विवरण दर्ज करें

गहरे नीले बिंदु "पुनर्प्राप्त" डेटा हैं, जबकि खाली बिंदु मूल डेटा हैं। जैसा कि आप देख सकते हैं, हमने मूल डेटा से कुछ जानकारी खो दी है, विशेष रूप से दूसरे प्रमुख घटक की दिशा में विचरण। लेकिन कई उद्देश्यों के लिए, यह संकुचित विवरण (पहले प्रमुख घटक के साथ प्रक्षेपण का उपयोग करके) हमारी आवश्यकताओं के अनुरूप हो सकता है।

यदि आप इसे स्वयं दोहराना चाहते हैं तो इस कोड को मैंने इस उदाहरण को बनाने के लिए उपयोग किया है। यदि आप दूसरी पंक्ति पर शोर घटक के विचरण को कम करते हैं, तो PCA परिवर्तन द्वारा खोए गए डेटा की मात्रा में भी कमी आएगी, क्योंकि डेटा पहले मुख्य घटक में परिवर्तित हो जाएगा:

set.seed(123)
y2 = x + rnorm(n,0,.2)
mydata = cbind(x,y2)
m2 = colMeans(mydata)

p2 = prcomp(mydata, center=F, scale=F)
reduced2= cbind(p2$x[,1], rep(0, nrow(p2$x)))
recovered = reduced2 %*% p2$rotation

plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Data with principal component vectors')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+abs(p2$rotation[1,1])
       ,y1=m2[2]+abs(p2$rotation[2,1])
       , col='red')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+p2$rotation[1,2]
       ,y1=m2[2]+p2$rotation[2,2]
       , col='blue')

plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Data after PCA transformation')
points(p2$x, col='black', pch=3)
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+abs(p2$rotation[1,1])
       ,y1=m2[2]+abs(p2$rotation[2,1])
       , col='red')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+p2$rotation[1,2]
       ,y1=m2[2]+p2$rotation[2,2]
       , col='blue')
arrows(x0=mean(p2$x[,1])
      ,y0=0
      ,x1=mean(p2$x[,1])
      ,y1=1
      ,col='blue'
       )
arrows(x0=mean(p2$x[,1])
       ,y0=0
       ,x1=-1.5
       ,y1=0
       ,col='red'
)
lines(x=c(-1,1), y=c(2,-2), lty=2)


plot(p2$x, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='PCA dimensionality reduction')
points(reduced2, pch=20, col="blue")
for(i in 1:n){
  lines(rbind(reduced2[i,], p2$x[i,]), col='blue')
}

plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Lossy data recovery after PCA transformation')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+abs(p2$rotation[1,1])
       ,y1=m2[2]+abs(p2$rotation[2,1])
       , col='red')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+p2$rotation[1,2]
       ,y1=m2[2]+p2$rotation[2,2]
       , col='blue')
for(i in 1:n){
  lines(rbind(recovered[i,], mydata[i,]), col='blue')
}
points(recovered, col='blue', pch=20)

5
डेविड, कृपया, उपयोग की शर्तों "रोटेशन मैट्रिक्स" (उर्फ eigenvectors) और "लोड हो रहा है मैट्रिक्स" से बचना चाहिए। शुद्धता के लिए और लोगों को गुमराह करने के लिए नहीं। पीसीए में लोडिंग उनके आईगेनवैल्यूज़ द्वारा सामान्य करने के बाद ईजनवेक्टर हैं। धन्यवाद।
ttnphns

3
@ मुझे लगता है कि यह पूरी तरह से निर्भर करता है कि आप किस पैकेज का उपयोग करते हैं। अक्सर ये शब्द पूरी तरह से विनिमेय हैं। यहां "लोडिंग" के उपयोग पर विचार करें: utdallas.edu/~herve/abdi-awPCA2010.pdf । आर फ़ंक्शन को भी देखें prcompजहां लोडिंग मैट्रिक्स केवल मैट्रिक्स है जिसका कॉलम यूनिट ईजेनवेक्टर हैं। मुझे लगता है कि आप अनावश्यक रूप से तकनीकी हो रहे हैं, और ज्यादातर मामलों में मेरा मानना ​​है कि इन शब्दों का इस्तेमाल पारस्परिक रूप से किया जाता है।
डेविड मार्क्स

4
क्षमा करें, लेकिन मैं असहमत होगा। कारण: याद रखें कि पीसीए और कारक विश्लेषण के लिए लोडिंग दोनों सार्थक (और एक ही अर्थ में!) हैं। लोडिंग सीधे सहसंबंधों / सहसंबंधों के बराबर हैं। Eigenvectors रोटेशन कॉशन हैं। कारक विश्लेषण में, कई तरीके रोटेशन ( निष्कर्षण चरण में) से नहीं निपटते हैं । इसलिए, दो शब्दों को मिलाना वास्तव में छात्रों को गुमराह करने वाला है और इससे बचना चाहिए।
tnnphns

छोटा बिंदु: सही वर्तनी हमेशा और केवल "मूल" है, "सिद्धांत" नहीं। मैंने तदनुसार संपादित किया है, लेकिन एक छवि जिसे मैं संपादित नहीं कर सकता।
निक कॉक्स

1
एक और दृश्य यहाँ पाया जा सकता है setosa.io/ev/principal-component-analysis
SIslam

2

मैं कहूंगा कि आपका प्रश्न न केवल एक योग्य प्रश्न cross validatedहै stack overflow, बल्कि इसमें भी , जहां आपको बताया जाएगा कि आर (.. आदि) में आयाम कमी को कैसे प्रभावी ढंग से लागू करने के लिए आपको यह पहचानने में मदद मिलेगी कि कौन सा कॉलम / चर बेहतर रूप से विचरण में योगदान देता है। संपूर्ण डेटासेट।

पीसीए (प्रिंसिपल कंपोनेंट एनालिसिस) में एसवीडी (सिंग्युलर वैल्यू डिकंपोजिशन) जैसी ही कार्यक्षमता होती है, और वे वास्तव scaleमें डेटासेट में जेड / ट्रांसफॉर्मेशन लागू करने के बाद ठीक वैसी ही प्रक्रिया होती है ।

यहां कुछ संसाधन दिए गए हैं, जिनसे आप आधे घंटे में बेहतर समझ हासिल कर सकते हैं।

मैं आपको यह समझने में मदद करने में सक्षम नहीं हूं कि svd को कैसे लागू किया जाए और प्रत्येक घटक क्या करता है, यह समझने के लिए एक ज्वलंत कोडिंग समाधान दिया जाए, लेकिन लोग कमाल के हैं, यहां कुछ बहुत ही जानकारीपूर्ण पोस्ट हैं, जिन्हें मैं SVD के आवेदन पक्ष के साथ पकड़ लेता था, भले ही मैं जानिए कैसे हाथ लगाती है 3by3 SVD की समस्या .. :)

  1. जेफ लीक द्वारा कौरसेरा डेटा एनालिसिस क्लास: वीडियो लेक्चर / क्लास नोट्स
  2. एक बहुत ही जानकारीपूर्ण छात्र पोस्ट
  3. अमेरिकन मैथमैटिकल सोसाइटी की एक पोस्ट।

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

1

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

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

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

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