मान लीजिए कि मेरे पास एक -डायमेंशनल डेटा सेट है जहां आयाम मोटे तौर पर ऑर्थोगोनल हैं (सहसंबंध शून्य हैं)।एन
क्या इसके संदर्भ में कोई उपयोगिता है:
- दृश्य
- प्रतिनिधित्व (वर्गीकरण दक्षता के लिए)
- या अन्य मापदंड
डेटा पर आयामी कमी करने के लिए?
मान लीजिए कि मेरे पास एक -डायमेंशनल डेटा सेट है जहां आयाम मोटे तौर पर ऑर्थोगोनल हैं (सहसंबंध शून्य हैं)।एन
क्या इसके संदर्भ में कोई उपयोगिता है:
डेटा पर आयामी कमी करने के लिए?
जवाबों:
मैं एक टिप्पणी को स्पष्ट करना चाहता था जिसे मैंने @ पीटर-फ्लॉम के उत्तर के तहत छोड़ दिया था, लेकिन यह शायद एक उत्तर में लिखने लायक है। लगभग-ऑर्थोगोनल डेटा पर पीसीए चलाकर आप किस हद तक आयामों को कम कर सकते हैं? इसका उत्तर "यह निर्भर करता है" कि क्या आप सहसंबंध या सहसंयोजक मैट्रिक्स पर पीसीए प्रदर्शन करते हैं ।
यदि आप सहसंबंध मैट्रिक्स पर पीसीए का उपयोग कर रहे हैं, तो क्योंकि यह केवल पहचान मैट्रिक्स से थोड़ा अलग होगा, एक गोलाकार समरूपता है जो सभी दिशाओं को "समान रूप से सूचनात्मक" प्रदान करती है। PCA से पहले अपने वैरिएबल के वेरिएंस को एक जैसा बनाना गणितीय रूप से एक समान दृष्टिकोण है जो समान परिणाम देगा। जबकि PCA आउटपुट दूसरों की तुलना में थोड़े कम विचरण के साथ कुछ घटकों की पहचान करेगा, इसका श्रेय नमूना में भिन्नता से अधिक कुछ नहीं करने के लिए दिया जा सकता है (यदि हम जनसंख्या में शून्य सहसंबंध मानते हैं), तो इनका अनुकरण करने का एक अच्छा कारण नहीं होगा अवयव। वास्तव में घटकों के मानक विचलन के बीच ऐसी असमानता को परिमाण में कम करना चाहिए क्योंकि हम नमूना आकार बढ़ाते हैं। हम एक सिमुलेशन में इसकी पुष्टि कर सकते हैं।
set.seed(123)
princompn <- function(n, sd1=1, sd2=1, sd3=1, sd4=1, cor=TRUE) {
x1 <- rnorm(n, mean=0, sd=sd1)
x2 <- rnorm(n, mean=0, sd=sd2)
x3 <- rnorm(n, mean=0, sd=sd3)
x4 <- rnorm(n, mean=0, sd=sd4)
prcomp(cbind(x1,x2,x3,x4), scale.=cor)
}
आउटपुट:
> pc100 <- princompn(100)
> summary(pc100)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0736 1.0243 0.9762 0.9193
Proportion of Variance 0.2882 0.2623 0.2382 0.2113
Cumulative Proportion 0.2882 0.5505 0.7887 1.0000
>
> pc1m <- princompn(1e6)
> summary(pc1m)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0008 1.0004 0.9998 0.9990
Proportion of Variance 0.2504 0.2502 0.2499 0.2495
Cumulative Proportion 0.2504 0.5006 0.7505 1.0000
हालाँकि, यदि आप सहसंबंध मैट्रिक्स के बजाय सहसंयोजक मैट्रिक्स का उपयोग करके पीसीए करते हैं (समकक्ष: यदि हम पीसीए को लागू करने से पहले मानक विचलन को 1 से स्केल नहीं करते हैं), तो उत्तर आपके चर के प्रसार पर निर्भर करता है। यदि आपके चर में एक ही रूपांतर है तो हमारे पास अभी भी गोलाकार समरूपता है, इसलिए कोई "विशेषाधिकार प्राप्त दिशा" नहीं है और आयामी कमी हासिल नहीं की जा सकती है।
> pcEqual <- princompn(n=1e6, sd1=4, sd2=4, sd3=4, sd4=4, cor=FALSE)
> summary(pcEqual)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0056 4.0010 3.9986 3.9936
Proportion of Variance 0.2507 0.2502 0.2499 0.2492
Cumulative Proportion 0.2507 0.5009 0.7508 1.0000
उच्च और निम्न विचरण चर के मिश्रण के साथ, हालांकि, समरूपता कुछ विस्तृत कुल्हाड़ियों और अन्य पतले के साथ दीर्घवृत्त की तरह है। इस स्थिति में उच्च-विचरण चर (जहां दीर्घवृत्त व्यापक है) पर लोड होने वाले उच्च-विचरण घटक होंगे और निम्न-विचरण घटक निम्न-विचरण चर (जिसमें दिशाएं दीर्घवृत्त संकीर्ण हैं) पर लोड हो रही हैं।
> pcHiLo <- princompn(n=1e6, sd1=4, sd2=4, sd3=1, sd4=1, cor=FALSE)
> summary(pcHiLo)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0018 3.9985 1.0016 1.00005
Proportion of Variance 0.4709 0.4702 0.0295 0.02941
Cumulative Proportion 0.4709 0.9411 0.9706 1.00000
> round(pcHiLo$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.460 0.888 0.000 0.000
x2 -0.888 0.460 0.000 0.000
x3 0.000 0.000 -0.747 -0.664
x4 0.000 0.000 0.664 -0.747
यदि चर बहुत भिन्न भिन्न होते हैं (ज्यामितीय रूप से एक दीर्घवृत्त फिर से लेकिन सभी अक्षों के साथ भिन्न होते हैं), तो ऑर्थोगोनलिटी पहले पीसी को उच्चतम-भिन्नता चर पर बहुत अधिक लोड करने की अनुमति देती है और इसी तरह।
> pc1234 <- princompn(n=1e6, sd1=1, sd2=2, sd3=3, sd4=4, cor=FALSE)
> summary(pc1234)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 3.9981 3.0031 1.9993 1.00033
Proportion of Variance 0.5328 0.3006 0.1332 0.03335
Cumulative Proportion 0.5328 0.8334 0.9667 1.00000
> round(pc1234$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.000 0.000 -0.001 1.000
x2 0.001 -0.001 1.000 0.001
x3 0.003 -1.000 -0.001 0.000
x4 1.000 0.003 -0.001 0.000
पिछले दो मामलों में कम विचरण घटक थे जिन्हें आप आयामी कमी को प्राप्त करने के लिए फेंकने पर विचार कर सकते हैं, लेकिन ऐसा करना पहले स्थान पर सबसे कम विचरण चर को फेंकने के बराबर है । मूल रूप से, ऑर्थोगोनलिटी आपको कम-भिन्नता वाले चर के साथ कम-भिन्न घटकों की पहचान करने की अनुमति देती है, इसलिए यदि आप इस तरीके से आयामीता कम करना चाहते हैं, तो यह स्पष्ट नहीं है कि ऐसा करने के लिए आप पीसीए का उपयोग करने से लाभान्वित होंगे।
नोट बीन: समय की अवधि उस मामले पर चर्चा करने में बिताई जाती है जहां चर इकाई विचरण के लिए नहीं बदले जाते हैं - यानी सहसंबंध मैट्रिक्स के बजाय सहसंयोजक का उपयोग करना - यह संकेत के रूप में नहीं लिया जाना चाहिए कि यह दृष्टिकोण किसी भी तरह से अधिक महत्वपूर्ण है, और निश्चित रूप से ऐसा नहीं है बेहतर है"। स्थिति की समरूपता और अधिक सूक्ष्म है, इसलिए लंबे समय तक चर्चा की आवश्यकता है।
आप स्थानीय स्तर पर रैखिक एम्बेडिंग, लैपलियन ईगेनमैप्स या टी-एसएनई की तरह अधिक सामान्य गैर रेखीय आयामी घटाव कई गुना सीखने की कोशिश कर सकते हैं ।
आपके डेटा में एक निम्न आयामी उप-स्थान (कई गुना) होना पूरी तरह से संभव है, जो एन-आधार आयामों के बीच 0 सहसंबंध को छोड़ देता है। उदाहरण के लिए मूल या तरंग रूप के बारे में बिंदुओं का एक चक्र जैसा कि यहां देखा गया है । पीसीए इसे नहीं उठाएगी, लेकिन अन्य तरीके अपनाएंगे।
विज़ुअलाइज़ेशन और एक्सप्लोसिव डेटा विश्लेषण के लिए ऐसे तरीकों को देखना विशेष रूप से दिलचस्प और सामान्य है। एक क्लासिफायरियर या अन्य मॉडल के भीतर उपयोग के लिए आपको अपने आप को उन तरीकों तक सीमित करना होगा जो प्रशिक्षण पर फिट हो सकते हैं और परीक्षण पर लागू होते हैं जो इनमें से बहुत सारे तरीकों को शामिल नहीं करता है। यदि यह आपकी मुख्य रूचि है, तो आपको अनुपचारित प्रीट्रेनिंग और (सुपरवाइज्ड) फीचर इंजीनियरिंग के तरीकों पर भी ध्यान देना चाहिए।
यदि सभी एन वैरिएबल मोटे तौर पर ऑर्थोगोनल हैं, तो आयाम में कमी अपेक्षाकृत कम कम करेगी। जैसे मेंR
set.seed(123)
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- rnorm(100)
x4 <- rnorm(100)
x5 <- rnorm(100)
x6 <- rnorm(100)
x7 <- rnorm(100)
x8 <- rnorm(100)
x9 <- rnorm(100)
x10 <- rnorm(100)
df1 <- cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)
pcsol <- princomp(df1)
loadings(pcsol)
संक्षेप में, "ऑर्थोगोनल" का अर्थ है "पहले से ही अपने सबसे छोटे आकार में"।
x1<-rnorm(100, sd=0.1)
और pcsol <- princomp(df1, cor=FALSE)
इसमें अंतर है, खासकर अगर हम देखें summary(pcsol)
। (मैं सुझाव नहीं दे रहा हूं कि कोव कोर की तुलना में एक बेहतर दृष्टिकोण है, बस यह संभव है।)