यादृच्छिक डेटा के एसवीडी परिणामों में अजीब सहसंबंध; क्या उनके पास गणितीय स्पष्टीकरण है या यह एक लैप बग है?


21

मैं यादृच्छिक डेटा के SVD परिणाम में एक बहुत ही अजीब व्यवहार का निरीक्षण करता हूं, जिसे मैं Matlab और R दोनों में पुन: उत्पन्न कर सकता हूं। यह LAPACK लाइब्रेरी में कुछ संख्यात्मक मुद्दे जैसा दिखता है; क्या यह?

मैं शून्य माध्य और पहचान सहसंयोजक के साथ आयामी गाऊसी से नमूने आकर्षित करता हूं : । मैं उन्हें डेटा मैट्रिक्स में इकट्ठा करता हूं । (मैं वैकल्पिक रूप से केंद्र में रख सकता हूं या नहीं, यह निम्नलिखित को प्रभावित नहीं करता है।) फिर मैं प्राप्त करने के लिए एकवचन मान अपघटन (SVD) करता हूं । आइए हम कुछ दो विशेष तत्वों को लेते हैं , जैसे और , और पूछते हैं कि विभिन्न ड्रा में उनके बीच क्या संबंध है । मुझे उम्मीद है कि अगर संख्याn=1000एक्स ~ एन ( 0 , मैं ) 1000 × 2 एक्स एक्स एक्स = यू एस वीयू यू 11 यू 22 एक्स एन आर पीk=2XN(0,I)1000×2XXX=USVUU11U22XNrep यथोचित रूप से बड़ा है, तो ऐसे सभी सहसंबंध शून्य के आसपास होने चाहिए (यानी जनसंख्या सहसंबंध शून्य होना चाहिए, और नमूना संबंध छोटे होंगे)।

हालांकि, मैं कुछ अजीब तरह से मजबूत सहसंबंध (करीब निरीक्षण के बीच) , , , और , और केवल इन तत्वों के बीच। अन्य सभी युग्म तत्वों में अपेक्षा के अनुसार शून्य के आसपास सहसंबंध होते हैं। यहाँ है कैसे के लिए सहसंबंध मैट्रिक्स के "ऊपरी" तत्वों (पहले की तरह दिखता है प्रथम स्तंभ के तत्वों, तो पहले दूसरे स्तंभ के तत्वों):यू 11 यू 12±0.2U11U12 यू 22 20 यू 10 10U21U2220U1010

एसवीडी अजीब सहसंबंध

प्रत्येक चतुर्थांश के ऊपरी-बाएँ कोनों में अजीब तरह से उच्च मूल्यों को नोटिस करें।

यह @ व्हिबर की टिप्पणी थी जिसने इस प्रभाव को मेरे ध्यान में लाया। @whuber ने तर्क दिया कि PC1 और PC2 स्वतंत्र नहीं हैं और इस मजबूत सहसंबंध को उसके लिए एक सबूत के रूप में प्रस्तुत किया है। हालांकि, मेरी धारणा यह है कि उन्होंने गलती से LAPACK लाइब्रेरी में एक संख्यात्मक बग की खोज की थी। यहाँ क्या हो रहा है?

यहाँ @ व्हिबर का R कोड है:

stat <- function(x) {u <- svd(x)$u; c(u[1,1], u[2, 2])};
Sigma <- matrix(c(1,0,0,1), 2);
sim <- t(replicate(1e3, stat(MASS::mvrnorm(10, c(0,0), Sigma))));
cor.test(sim[,1], sim[,2]);

यहाँ मेरा माटलब कोड है:

clear all
rng(7)

n = 1000;     %// Number of variables
k = 2;        %// Number of observations
Nrep = 1000;  %// Number of iterations (draws)

for rep = 1:Nrep
    X = randn(n,k);
    %// X = bsxfun(@minus, X, mean(X));
    [U,S,V] = svd(X,0);

    t(rep,:) = [U(1:10,1)' U(1:10,2)'];
end

figure
imagesc(corr(t), [-.5 .5])
axis square
hold on
plot(xlim, [10.5 10.5], 'k')
plot([10.5 10.5], ylim, 'k')

यदि आप n = 4 और k = 3 का उपयोग करते हैं, तो आप सहसंबंध भी देखेंगे।
अक्कल

@ अक्षल: हाँ, वास्तव में, धन्यवाद। मैंने k = 2 और k = 3 के बीच के अंतर को दूर करने के लिए संपादन किया।
अमीबा का कहना है कि

जवाबों:


23

यह एक बग नहीं है।

जैसा कि हमने टिप्पणियों में (बड़े पैमाने पर) पता लगाया है, दो चीजें हो रही हैं। पहला यह है कि के कॉलम एसवीडी आवश्यकताओं को पूरा करने के लिए विवश हैं: प्रत्येक के पास इकाई की लंबाई होनी चाहिए और अन्य सभी के लिए ऑर्थोगोनल होना चाहिए। को एक विशेष मैट्रिक्स SVD एल्गोरिथ्म के माध्यम से एक यादृच्छिक मैट्रिक्स से बनाया गया एक रैंडम वैरिएबल के रूप में देखना , हम इस बात पर ध्यान देते हैं कि ये कार्यात्मक रूप से स्वतंत्र बाधाएं के स्तंभों के बीच सांख्यिकीय निर्भरता पैदा करती हैं ।UUXk(k+1)/2U

के घटकों के बीच सहसंबंधों का अध्ययन करके इन निर्भरताओं को अधिक या कम हद तक प्रकट किया जा सकता है , लेकिन एक दूसरी घटना उभरती है : एसवीडी समाधान अद्वितीय नहीं है। कम से कम, प्रत्येक स्तंभ को स्वतंत्र रूप से उपेक्षित किया जा सकता है, जिससे कम से कम कॉलम के साथ अलग-अलग समाधान मिलेंगे। मजबूत सहसंबंध ( से अधिक ) स्तंभों के संकेतों को उचित रूप से बदलकर प्रेरित किया जा सकता है। (ऐसा करने का एक तरीका इस सूत्र में अमीबा के जवाब के लिए मेरी पहली टिप्पणी में दिया गया है : मैं सभी u i i , i = 1 , , k को बाध्य करता हूंUयू 2 कश्मीर कश्मीर 1 / 2U2kk1/2uii,i=1,,kएक ही संकेत है, उन्हें सभी नकारात्मक या समान संभावना वाले सभी सकारात्मक बनाते हैं।) दूसरी ओर, सभी सहसंबंधों को समान संभावनाओं के साथ, स्वतंत्र रूप से, स्वतंत्र रूप से संकेतों को चुनकर गायब करने के लिए बनाया जा सकता है। (मैं "संपादित करें" अनुभाग में नीचे एक उदाहरण देता हूं।)

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

एसवीडी (या चोल्स्की, एलआर, एलयू, आदि) जैसे एक अपघटन एल्गोरिथ्म का अंतिम परीक्षण यह है कि क्या यह दावा करता है। इस परिस्थिति में यह जब SVD मैट्रिक्स की तिहरी देता है कि जाँच करने के लिए पर्याप्त होता है (U,D,V) , कि X वसूल किया जाता है, ऊपर प्रत्याशित चल बिन्दु त्रुटि के, उत्पाद द्वारा UDV ; U और V के स्तंभ ओर्थोनॉमिक हैं; और वह D विकर्ण है, इसके विकर्ण तत्व गैर-नकारात्मक हैं, और अवरोही क्रम में व्यवस्थित हैं। मैंने svdएल्गोरिथ्म में ऐसे परीक्षण लागू किए हैंRऔर यह कभी नहीं पाया कि यह त्रुटि है। यद्यपि यह कोई आश्वासन नहीं है कि यह पूरी तरह से सही है, ऐसा अनुभव - जो मेरा मानना ​​है कि एक महान कई लोगों द्वारा साझा किया गया है - यह बताता है कि किसी भी बग को प्रकट होने के लिए कुछ असाधारण प्रकार के इनपुट की आवश्यकता होगी।

निम्नलिखित प्रश्न में उठाए गए विशिष्ट बिंदुओं का अधिक विस्तृत विश्लेषण है।


का उपयोग करते हुए Rकी svd, प्रक्रिया पहले आप देख सकते हैं कि के रूप में k बढ़ जाती है, के गुणांकों के बीच सह-संबंध U कमजोर हो जाना, लेकिन वे अभी भी अशून्य हैं। यदि आप बस एक बड़ा सिमुलेशन प्रदर्शन करने के लिए थे, तो आप पाएंगे कि वे महत्वपूर्ण हैं। (जब k=3 , 50000 पुनरावृत्तियों को पर्याप्त होना चाहिए।) प्रश्न में मुखरता के विपरीत, सहसंबंध "पूरी तरह से गायब नहीं होते हैं।"

दूसरा, इस घटना का अध्ययन करने का एक बेहतर तरीका यह है कि गुणांक की स्वतंत्रता के मूल प्रश्न पर वापस जाएं । यद्यपि अधिकांश मामलों में सह-संबंध शून्य के करीब होते हैं, लेकिन स्वतंत्रता की कमी स्पष्ट रूप से स्पष्ट है। U के गुणांकों के पूर्ण बहुभिन्नरूपी वितरण का अध्ययन करके इसे सबसे स्पष्ट बनाया गया है । वितरण की प्रकृति छोटे सिमुलेशन में भी उभरती है जिसमें गैर-अक्षीय सहसंबंध नहीं पाया जा सकता (अभी तक)। उदाहरण के लिए, गुणांकों के स्कैप्लेटोट मैट्रिक्स की जांच करें। इसे व्यावहारिक बनाने के लिए, मैंने प्रत्येक सिम्युलेटेड डेटासेट का आकार 4 सेट किया और k=2 रखा , जिससे 1000 आरेखण किए गए10004×2 मैट्रिक्स U अहसास , 1000×8 मैट्रिक्स बना रहे हैं। यहां इसका पूर्ण स्कैल्पलॉट मैट्रिक्स है, जिसमें U भीतर उनके पदों द्वारा सूचीबद्ध चर हैं :

आकृति

पहले कॉलम नीचे स्कैनिंग के बीच स्वतंत्रता का एक दिलचस्प कमी का पता चलता है u11 और अन्य uij : कैसे साथ scatterplot के ऊपरी वृत्त का चतुर्थ भाग पर नज़र u21 लगभग खाली है, उदाहरण के लिए, (u11,u22) संबंध और (u21,u12) जोड़ी के लिए नीचे की ओर ढलान वाले बादल का वर्णन करने वाले अण्डाकार ऊपर की ओर ढलान वाले बादल की जांच करें । करीब से देखने पर इन सभी गुणांकों में स्वतंत्रता की स्पष्ट कमी का पता चलता है: उनमें से बहुत कम दूर से स्वतंत्र दिखते हैं, भले ही उनमें से अधिकांश निकट-शून्य सहसंबंध का प्रदर्शन करते हैं।

(एनबी: अधिकांश गोलाकार बादल सामान्यीकरण स्थिति द्वारा बनाए गए हाइपरस्फेयर से प्रत्येक स्तंभ के सभी घटकों के वर्गों के योग को मजबूर करने वाले अनुमानों से होते हैं।)

k=3 और k=4 साथ स्कैटरप्लॉट मैट्रिसेस समान प्रतिरूप प्रदर्शित करते हैं: ये घटनाएँ k=2 तक ही सीमित नहीं हैं , और न ही वे प्रत्येक सिम्युलेटेड डेटासेट के आकार पर निर्भर हैं: उन्हें उत्पन्न करना और जांचना अधिक कठिन है।

इन पैटर्नों के स्पष्टीकरण एकवचन मान अपघटन में U को प्राप्त करने के लिए उपयोग किए जाने वाले एल्गोरिदम पर जाते हैं , लेकिन हम जानते हैं कि गैर-स्वतंत्रता के ऐसे पैटर्न यू के बहुत ही परिभाषित गुणों द्वारा मौजूद होना चाहिए : चूंकि प्रत्येक क्रमिक स्तंभ (ज्यामितीय रूप से) पूर्ववर्ती के लिए ऑर्गोगोनल है ये, ये ऑर्थोगोनलिटी की स्थिति गुणांक के बीच कार्यात्मक निर्भरता को लागू करते हैं, जिससे संबंधित यादृच्छिक चर के बीच सांख्यिकीय निर्भरता का अनुवाद होता है।U


संपादित करें

टिप्पणियों के जवाब में, यह इस बात पर टिप्पणी करने के लायक हो सकता है कि ये निर्भरता घटना किस हद तक अंतर्निहित एल्गोरिथम (एसवीडी की गणना करने के लिए) को दर्शाती है और प्रक्रिया की प्रकृति में वे कितनी अंतर्निहित हैं।

विशिष्ट गुणांक के बीच सह-संबंध के पैटर्न SVD एल्गोरिथ्म द्वारा किए गए मनमाने ढंग से विकल्पों पर एक महान सौदा निर्भर करती है, क्योंकि समाधान अद्वितीय नहीं है: के स्तंभों U हमेशा स्वतंत्र रूप से गुणा किया जा सकता है 1 या 1 । संकेत चुनने का कोई आंतरिक तरीका नहीं है। इस प्रकार, जब दो एसवीडी एल्गोरिदम साइन के अलग (मनमाने या शायद यादृच्छिक) विकल्प बनाते हैं, तो वे (uij,uij) मानों के बिखराव के विभिन्न पैटर्न में परिणाम कर सकते हैं। यदि आप इसे देखना चाहते हैं, तो 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मूल अवलोकन अनुक्रम से मेल खाने के लिए उलटा क्रम लागू करता है । क्योंकि प्रभाव मूल स्कैप्लेट्स के परावर्तित और घुमाए गए संस्करणों के मिश्रण बनाने के लिए है, इसलिए मैट्रिक्स में स्कैप्लेट्स अधिक समान दिखेंगे। सभी नमूना सहसंबंध शून्य के करीब होंगे (निर्माण द्वारा: अंतर्निहित सहसंबंध बिल्कुल शून्य हैं)। फिर भी, स्वतंत्रता की कमी अभी भी स्पष्ट हो जाएगा (, कि दिखाई समान वृत्ताकार आकार में विशेष रूप से के बीच ui,j और ui,j)।

Rएसवीडी एल्गोरिथ्म कॉलम के लिए संकेतों का चयन कैसे करता है, इसके बारे में कुछ मूल स्कैप्लेट्स (ऊपर चित्र में दिखाया गया है) के कुछ क्वैडेंट्स में डेटा की कमी उत्पन्न होती है ।

निष्कर्ष के बारे में कुछ भी नहीं बदलता है। चूँकि U का दूसरा स्तंभ पहले के लिए ऑर्थोगोनल है, इसलिए इसे (बहुभिन्नरूपी रैंडम वैरिएबल के रूप में माना जाता है) फ़र्स्ट (इसे मल्टीवेरिएट रैंडम वैरिएबल भी माना जाता है) पर निर्भर है । आपके पास एक कॉलम के सभी घटक दूसरे के सभी घटकों से स्वतंत्र नहीं हो सकते हैं; आप केवल इतना कर सकते हैं कि डेटा को उन तरीकों से देखें जो निर्भरता को अस्पष्ट करते हैं - लेकिन निर्भरता बनी रहेगी।


यहां 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=".")

3
सहसंबंध के स्तंभों के पहले घटकों के बीच होता है क्योंकि एसवीडी एल्गोरिदम काम करता है। कि एक्स की पंक्तियाँ गॉसियन हैं, सारहीन है: मुझे यकीन है कि आपने देखा है कि यू के गुणांक गॉसियन नहीं हैं । UXU
whuber

2
वैसे, मैंने अभी-अभी पता लगाया है कि मेरे मैटलैब कोड में केवल जगह बदलने svd(X,0)से svds(X)प्रभाव गायब हो जाता है! जहाँ तक मुझे पता है, इन दोनों कार्यों में अलग-अलग एसवीडी एल्गोरिदम का उपयोग होता है (दोनों लैपैक रूटीन हैं, लेकिन जाहिरा तौर पर अलग-अलग हैं)। मुझे नहीं पता कि आर में मैटलैब के समान कोई फ़ंक्शन है svds, लेकिन मैं सोच रहा हूं कि क्या आप अभी भी बनाए रखने जा रहे हैं कि यह एक "वास्तविक" प्रभाव है और संख्यात्मक मुद्दा नहीं है।
अमीबा का कहना है कि मोनिका

4
सज्जनों, एक मिनट रुको। आप साइन की बात क्यों नहीं कर रहे हैं? एक आइजनवेक्टर का चिन्ह मूल रूप से मनमाना है। लेकिन svd का कार्यक्रम इसे बेतरतीब ढंग से निर्दिष्ट नहीं करता है, यह संकेत svd के कार्यान्वयन और डेटा पर निर्भर है। यदि, निकालने के बाद Uआप बेतरतीब ढंग से निर्णय लेते हैं कि क्या इसके प्रत्येक स्तंभ को बने रहना है या अपना चिन्ह बदलना है, तो क्या आप उन गायब होने के बारे में बात नहीं कर रहे हैं?
ttnphns

2
@ttnphns यह सही है, जैसा कि मेरे संपादन में समझाया गया है। यद्यपि यह सहसंबंध गायब हो जाता है, यू के स्तंभों के बीच निर्भरताएं दूर नहीं होती हैं। (का उन्नत संस्करण मैं आपूर्ति बराबर बेतरतीब ढंग से स्तंभों के संकेत को बदलने के लिए है।)Ustat
whuber

2
एक मामूली बिंदु (इस महान धागे के लिए!) एसवीडी को यह आवश्यक नहीं है कि विकर्ण में तत्व Sएक विशेष क्रम में हैं; यह सुविधा की बात है। अन्य दिनचर्या इसकी गारंटी देती है (जैसे। MATLAB की svds) लेकिन यह एक सामान्य आवश्यकता नहीं है। @amoeba: svds(जो इस समस्याग्रस्त व्यवहार से मुक्त लगता है) को देखते हुए गणना वास्तव में पहले आइगेनवेल्स की गणना पर आधारित है (इसलिए यह मानक dgesdd/ dgesvdLAPACK दिनचर्या का उपयोग नहीं करता है - मुझे इसका उपयोग dsyevr/ dsyevxपहले से बहुत संदेह है )।
us --r11852 का कहना है कि

11

यह उत्तर Matlab में @ व्हिबर के परिणामों की प्रतिकृति प्रस्तुत करता है, और यह भी एक प्रत्यक्ष प्रदर्शन है कि सहसंबंध एक "विरूपण साक्ष्य" है कि कैसे SVD कार्यान्वयन घटकों के लिए संकेत चुनता है।

संभावित रूप से भ्रमित करने वाली टिप्पणियों की लंबी श्रृंखला को देखते हुए, मैं भविष्य के पाठकों के लिए जोर देना चाहता हूं कि मैं निम्नलिखित से पूरी तरह सहमत हूं:

  1. इस चर्चा के संदर्भ में, निश्चित रूप से एक यादृच्छिक चर है।U
  2. U1Ui1Uj1ijNrep
  3. UUi1Uj2

0.2Nrep=1000

n=4k=2Nrep=1000

एस वी डी

बाईं ओर सहसंबंध मैट्रिक्स है, दाईं ओर - बिखरने वाले प्लॉट @ व्हिबर के समान हैं। हमारे सिमुलेशन के बीच समझौता सही लगता है।

U

[U,S,V] = svd(X,0);

मैं निम्नलिखित दो पंक्तियों को जोड़ता हूं:

U(:,1) = U(:,1) * sign(randn(1));
U(:,2) = U(:,2) * sign(randn(1));

यहाँ परिणाम है:

यादृच्छिक संकेतों के साथ एसवीडी

सभी सहसंबंध गायब हो गए, जैसा कि मैंने शुरुआत से ही उम्मीद की थी !

11

UU

पुनश्च। आज 100k प्रतिष्ठा पास करने के लिए @whuber को बधाई!


statstat <- function(x) { u <- svd(x)$u; as.vector(sign(runif(1) - 1/2)*u %*% diag(sign(diag(u)))) }U(u11,u22,,ukk)UU

svdssvdUU

R±2/30.2

1
U

1
सहज रूप से, यह उचित है। जैसे ही पहले प्रिंसिपल एक्सिस को स्पेस में रखा गया बाकी प्रो। कुल्हाड़ियों को कम स्वतंत्रता मिलती है। 2 डी डेटा के मामले में दूसरा (अंतिम) पीसी पूरी तरह से बंधा हुआ है, सिवाय संकेत के। बल्कि मैं इसे बाधा कहूंगा, सांख्यिकीय अर्थों में निर्भरता नहीं।
22

0

xy

x2+y2=1

Cov[x,y]=Var[xy]=E[x2y2]E[xy]2

xy


k(k+1)/2UUDUUDk(k1)/2

U1Unkn>kUnn=1000n=4x2+y2=1U

xUyx2+y2=1Cov(x,y)=0x=cos(θ)y=sin(θ)θ[0,2π)

UUij01/nnn1/n=1

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