यह एक बग नहीं है।
जैसा कि हमने टिप्पणियों में (बड़े पैमाने पर) पता लगाया है, दो चीजें हो रही हैं। पहला यह है कि के कॉलम एसवीडी आवश्यकताओं को पूरा करने के लिए विवश हैं: प्रत्येक के पास इकाई की लंबाई होनी चाहिए और अन्य सभी के लिए ऑर्थोगोनल होना चाहिए। को एक विशेष मैट्रिक्स SVD एल्गोरिथ्म के माध्यम से एक यादृच्छिक मैट्रिक्स से बनाया गया एक रैंडम वैरिएबल के रूप में देखना , हम इस बात पर ध्यान देते हैं कि ये कार्यात्मक रूप से स्वतंत्र बाधाएं के स्तंभों के बीच सांख्यिकीय निर्भरता पैदा करती हैं ।यूयूएक्सk ( k + 1 ) / 2यू
के घटकों के बीच सहसंबंधों का अध्ययन करके इन निर्भरताओं को अधिक या कम हद तक प्रकट किया जा सकता है , लेकिन एक दूसरी घटना उभरती है : एसवीडी समाधान अद्वितीय नहीं है। कम से कम, प्रत्येक स्तंभ को स्वतंत्र रूप से उपेक्षित किया जा सकता है, जिससे कम से कम कॉलम के साथ अलग-अलग समाधान मिलेंगे। मजबूत सहसंबंध ( से अधिक ) स्तंभों के संकेतों को उचित रूप से बदलकर प्रेरित किया जा सकता है। (ऐसा करने का एक तरीका इस सूत्र में अमीबा के जवाब के लिए मेरी पहली टिप्पणी में दिया गया है : मैं सभी u i i , i = 1 , … , k को बाध्य करता हूंयूयू 2 कश्मीर कश्मीर 1 / 2यू2कक1 / 2यूमैं i, मैं = 1 , … , केएक ही संकेत है, उन्हें सभी नकारात्मक या समान संभावना वाले सभी सकारात्मक बनाते हैं।) दूसरी ओर, सभी सहसंबंधों को समान संभावनाओं के साथ, स्वतंत्र रूप से, स्वतंत्र रूप से संकेतों को चुनकर गायब करने के लिए बनाया जा सकता है। (मैं "संपादित करें" अनुभाग में नीचे एक उदाहरण देता हूं।)
देखभाल के साथ, हम इन दोनों घटनाओं को आंशिक रूप से विचार कर सकते हैं जब यू के घटकों के स्कैटरप्लॉट मैट्रिस पढ़ते हैं । कुछ विशेषताएं - जैसे कि अच्छी तरह से परिभाषित परिपत्र क्षेत्रों के भीतर समान रूप से वितरित अंकों की उपस्थिति - स्वतंत्रता की कमी। अन्य, जैसे कि बिखरे हुए बिंदु स्पष्ट नॉनजेरो सहसंबंध दिखाते हैं, जाहिर है कि एल्गोरिथ्म में किए गए विकल्पों पर निर्भर करते हैं - लेकिन ऐसे विकल्प केवल पहले स्थान पर स्वतंत्रता की कमी के कारण संभव हैं।
एसवीडी (या चोल्स्की, एलआर, एलयू, आदि) जैसे एक अपघटन एल्गोरिथ्म का अंतिम परीक्षण यह है कि क्या यह दावा करता है। इस परिस्थिति में यह जब SVD मैट्रिक्स की तिहरी देता है कि जाँच करने के लिए पर्याप्त होता है ( यू, डी , वी) , कि एक्स वसूल किया जाता है, ऊपर प्रत्याशित चल बिन्दु त्रुटि के, उत्पाद द्वारा यूडी वी' ; यू और वी के स्तंभ ओर्थोनॉमिक हैं; और वह डी विकर्ण है, इसके विकर्ण तत्व गैर-नकारात्मक हैं, और अवरोही क्रम में व्यवस्थित हैं। मैंने svd
एल्गोरिथ्म में ऐसे परीक्षण लागू किए हैंR
और यह कभी नहीं पाया कि यह त्रुटि है। यद्यपि यह कोई आश्वासन नहीं है कि यह पूरी तरह से सही है, ऐसा अनुभव - जो मेरा मानना है कि एक महान कई लोगों द्वारा साझा किया गया है - यह बताता है कि किसी भी बग को प्रकट होने के लिए कुछ असाधारण प्रकार के इनपुट की आवश्यकता होगी।
निम्नलिखित प्रश्न में उठाए गए विशिष्ट बिंदुओं का अधिक विस्तृत विश्लेषण है।
का उपयोग करते हुए R
की svd
, प्रक्रिया पहले आप देख सकते हैं कि के रूप में क बढ़ जाती है, के गुणांकों के बीच सह-संबंध यू कमजोर हो जाना, लेकिन वे अभी भी अशून्य हैं। यदि आप बस एक बड़ा सिमुलेशन प्रदर्शन करने के लिए थे, तो आप पाएंगे कि वे महत्वपूर्ण हैं। (जब के = ३ , 50000 पुनरावृत्तियों को पर्याप्त होना चाहिए।) प्रश्न में मुखरता के विपरीत, सहसंबंध "पूरी तरह से गायब नहीं होते हैं।"
दूसरा, इस घटना का अध्ययन करने का एक बेहतर तरीका यह है कि गुणांक की स्वतंत्रता के मूल प्रश्न पर वापस जाएं । यद्यपि अधिकांश मामलों में सह-संबंध शून्य के करीब होते हैं, लेकिन स्वतंत्रता की कमी स्पष्ट रूप से स्पष्ट है। यू के गुणांकों के पूर्ण बहुभिन्नरूपी वितरण का अध्ययन करके इसे सबसे स्पष्ट बनाया गया है । वितरण की प्रकृति छोटे सिमुलेशन में भी उभरती है जिसमें गैर-अक्षीय सहसंबंध नहीं पाया जा सकता (अभी तक)। उदाहरण के लिए, गुणांकों के स्कैप्लेटोट मैट्रिक्स की जांच करें। इसे व्यावहारिक बनाने के लिए, मैंने प्रत्येक सिम्युलेटेड डेटासेट का आकार 4 सेट किया और के = २ रखा , जिससे 1000 आरेखण किए गए10004 × 2 मैट्रिक्स यू अहसास , 1000 × 8 मैट्रिक्स बना रहे हैं। यहां इसका पूर्ण स्कैल्पलॉट मैट्रिक्स है, जिसमें यू भीतर उनके पदों द्वारा सूचीबद्ध चर हैं :
पहले कॉलम नीचे स्कैनिंग के बीच स्वतंत्रता का एक दिलचस्प कमी का पता चलता है यू1 1 और अन्य यूमैं जे : कैसे साथ scatterplot के ऊपरी वृत्त का चतुर्थ भाग पर नज़र यू21 लगभग खाली है, उदाहरण के लिए, ( यू1 1, आप22) संबंध और ( यू21, आप12) जोड़ी के लिए नीचे की ओर ढलान वाले बादल का वर्णन करने वाले अण्डाकार ऊपर की ओर ढलान वाले बादल की जांच करें । करीब से देखने पर इन सभी गुणांकों में स्वतंत्रता की स्पष्ट कमी का पता चलता है: उनमें से बहुत कम दूर से स्वतंत्र दिखते हैं, भले ही उनमें से अधिकांश निकट-शून्य सहसंबंध का प्रदर्शन करते हैं।
(एनबी: अधिकांश गोलाकार बादल सामान्यीकरण स्थिति द्वारा बनाए गए हाइपरस्फेयर से प्रत्येक स्तंभ के सभी घटकों के वर्गों के योग को मजबूर करने वाले अनुमानों से होते हैं।)
के = ३ और के = ४ साथ स्कैटरप्लॉट मैट्रिसेस समान प्रतिरूप प्रदर्शित करते हैं: ये घटनाएँ के = २ तक ही सीमित नहीं हैं , और न ही वे प्रत्येक सिम्युलेटेड डेटासेट के आकार पर निर्भर हैं: उन्हें उत्पन्न करना और जांचना अधिक कठिन है।
इन पैटर्नों के स्पष्टीकरण एकवचन मान अपघटन में यू को प्राप्त करने के लिए उपयोग किए जाने वाले एल्गोरिदम पर जाते हैं , लेकिन हम जानते हैं कि गैर-स्वतंत्रता के ऐसे पैटर्न यू के बहुत ही परिभाषित गुणों द्वारा मौजूद होना चाहिए : चूंकि प्रत्येक क्रमिक स्तंभ (ज्यामितीय रूप से) पूर्ववर्ती के लिए ऑर्गोगोनल है ये, ये ऑर्थोगोनलिटी की स्थिति गुणांक के बीच कार्यात्मक निर्भरता को लागू करते हैं, जिससे संबंधित यादृच्छिक चर के बीच सांख्यिकीय निर्भरता का अनुवाद होता है।यू
संपादित करें
टिप्पणियों के जवाब में, यह इस बात पर टिप्पणी करने के लायक हो सकता है कि ये निर्भरता घटना किस हद तक अंतर्निहित एल्गोरिथम (एसवीडी की गणना करने के लिए) को दर्शाती है और प्रक्रिया की प्रकृति में वे कितनी अंतर्निहित हैं।
विशिष्ट गुणांक के बीच सह-संबंध के पैटर्न SVD एल्गोरिथ्म द्वारा किए गए मनमाने ढंग से विकल्पों पर एक महान सौदा निर्भर करती है, क्योंकि समाधान अद्वितीय नहीं है: के स्तंभों यू हमेशा स्वतंत्र रूप से गुणा किया जा सकता है - 1 या 1 । संकेत चुनने का कोई आंतरिक तरीका नहीं है। इस प्रकार, जब दो एसवीडी एल्गोरिदम साइन के अलग (मनमाने या शायद यादृच्छिक) विकल्प बनाते हैं, तो वे ( यूमैं जे, आपमैं'जे') मानों के बिखराव के विभिन्न पैटर्न में परिणाम कर सकते हैं। यदि आप इसे देखना चाहते हैं, तो stat
नीचे दिए गए कोड में फ़ंक्शन को बदलें
stat <- function(x) {
i <- sample.int(dim(x)[1]) # Make a random permutation of the rows of x
u <- svd(x[i, ])$u # Perform SVD
as.vector(u[order(i), ]) # Unpermute the rows of u
}
यह पहले बेतरतीब ढंग से टिप्पणियों को फिर से आदेश देता है x
, एसवीडी करता है, फिर u
मूल अवलोकन अनुक्रम से मेल खाने के लिए उलटा क्रम लागू करता है । क्योंकि प्रभाव मूल स्कैप्लेट्स के परावर्तित और घुमाए गए संस्करणों के मिश्रण बनाने के लिए है, इसलिए मैट्रिक्स में स्कैप्लेट्स अधिक समान दिखेंगे। सभी नमूना सहसंबंध शून्य के करीब होंगे (निर्माण द्वारा: अंतर्निहित सहसंबंध बिल्कुल शून्य हैं)। फिर भी, स्वतंत्रता की कमी अभी भी स्पष्ट हो जाएगा (, कि दिखाई समान वृत्ताकार आकार में विशेष रूप से के बीच यूमैं , जे और यूमैं , जे')।
R
एसवीडी एल्गोरिथ्म कॉलम के लिए संकेतों का चयन कैसे करता है, इसके बारे में कुछ मूल स्कैप्लेट्स (ऊपर चित्र में दिखाया गया है) के कुछ क्वैडेंट्स में डेटा की कमी उत्पन्न होती है ।
निष्कर्ष के बारे में कुछ भी नहीं बदलता है। चूँकि यू का दूसरा स्तंभ पहले के लिए ऑर्थोगोनल है, इसलिए इसे (बहुभिन्नरूपी रैंडम वैरिएबल के रूप में माना जाता है) फ़र्स्ट (इसे मल्टीवेरिएट रैंडम वैरिएबल भी माना जाता है) पर निर्भर है । आपके पास एक कॉलम के सभी घटक दूसरे के सभी घटकों से स्वतंत्र नहीं हो सकते हैं; आप केवल इतना कर सकते हैं कि डेटा को उन तरीकों से देखें जो निर्भरता को अस्पष्ट करते हैं - लेकिन निर्भरता बनी रहेगी।
यहां R
मामलों को k > 2 को संभालने और स्कैल्पलॉट मैट्रिक्स के एक हिस्से को खींचने के लिए अपडेटेड कोड दिया गया है ।
k <- 2 # Number of variables
p <- 4 # Number of observations
n <- 1e3 # Number of iterations
stat <- function(x) as.vector(svd(x)$u)
Sigma <- diag(1, k, k); Mu <- rep(0, k)
set.seed(17)
sim <- t(replicate(n, stat(MASS::mvrnorm(p, Mu, Sigma))))
colnames(sim) <- as.vector(outer(1:p, 1:k, function(i,j) paste0(i,",",j)))
pairs(sim[, 1:min(11, p*k)], pch=".")