Singular Value Decomposition (SVD): What You Need to Know
Singular Value Decomposition (SVD) is a matrix factorization method that breaks any matrix into three simpler components, revealing its underlying structure.
क्या आपने कभी हज़ारों फीचर्स वाले डेटासेट से उपयोगी पैटर्न निकालने की कोशिश की है?
आप जानते हैं कि एक विशाल डेटासेट में कुछ उपयोगी संरचना छिपी अवश्य होगी। समस्या यह है कि कच्चे डेटासेट में बहुत शोर, पुनरावृत्ति, मिसिंग वैल्यूज़ और आपकी वास्तविक ज़रूरत से कहीं अधिक डायमेंशंस होते हैं। ज्यादातर मशीन लर्निंग एल्गोरिदम ऐसे डेटा को समझने में विफल हो जाएंगे, या बेहतर से बेहतर स्थिति में, प्रशिक्षण समय को धीमा कर देंगे।
सिंगुलर वैल्यू डीकम्पोज़िशन (SVD) किसी भी मैट्रिक्स (यहाँ डेटासेट) को तीन सरल मैट्रिक्स में विभाजित करता है जो उसकी मूल संरचना दिखाते हैं। यह रिकमेंडेशन सिस्टम, इमेज कम्प्रेशन और PCA जैसी डायमेंशनलिटी रिडक्शन तकनीकों के पीछे की गणित है — और एक बार जब आप इसे समझ लेते हैं, तो आप इसे अपनी रोज़मर्रा की नौकरी में हर जगह देखेंगे।
इस लेख में, मैं आपको बताऊंगा कि SVD क्या है, यह कैसे काम करता है, डेटा साइंस में कहाँ उपयोग होता है, और कब आपको इसके बजाय किसी वैकल्पिक तरीके को अपनाना चाहिए।
SVD एक विधि है जो किसी भी मैट्रिक्स को तीन सरल मैट्रिक्स में तोड़ती है।
इसे इस तरह समझें। आपके पास एक मैट्रिक्स A है — यह कोई डेटासेट या इमेज हो सकता है। SVD A को तीन हिस्सों में विभाजित कर देती है:
SVD सूत्र
U एक m x m ऑर्थोगोनल मैट्रिक्स है। इसके कॉलम्स को लेफ्ट सिंगुलर वेक्टर कहा जाता है, और ये A की पंक्तियों के बीच संबंधों का वर्णन करते हैं
\Sigma एक m x n डायगोनल मैट्रिक्स है। डायगोनल पर मौजूद मान सिंगुलर वैल्यूज़ होते हैं — ये हमेशा गैर-ऋणात्मक होते हैं और बड़े से छोटे क्रम में सॉर्ट किए जाते हैं
V* एक n x n ऑर्थोगोनल मैट्रिक्स का कंजुगेट ट्रांसपोज़ है। इसकी पंक्तियों को राइट सिंगुलर वेक्टर कहा जाता है, और ये A के कॉलम्स के बीच संबंधों का वर्णन करते हैं
प्रत्येक हिस्सा मूल डेटा के बारे में अलग जानकारी दिखाता है। U पंक्ति-स्तरीय पैटर्न रखता है (पंक्तियाँ एक-दूसरे से कैसे संबंधित हैं), \Sigma महत्व के वेट्स रखता है (प्रत्येक पैटर्न कितना मायने रखता है), और V* कॉलम-स्तरीय पैटर्न रखता है (कॉलम एक-दूसरे से कैसे संबंधित हैं)।
एक उपमा लें। मान लीजिए आप किसी को रेसिपी समझा रहे हैं। आप इसे तीन भागों में बाँट सकते हैं: सामग्री (क्या लगता है), अनुपात (कितनी मात्रा), और चरण (उन्हें कैसे मिलाया जाए)। इनमें से कोई भी हिस्सा अकेले व्यंजन नहीं बनाता, लेकिन साथ मिलकर आपको हर आवश्यक जानकारी दे देते हैं। SVD मैट्रिक्स के साथ यही करती है — यह "क्या", "कितना" और "कैसे" को अलग-अलग घटकों में विभाजित कर देती है, जिन पर आप स्वतंत्र रूप से काम कर सकते हैं।
लिनियर अल्जebra में SVD की खासियत यह है कि यह किसी भी मैट्रिक्स पर काम करती है। इसका स्क्वायर होना ज़रूरी नहीं, न ही इसे किसी विशेष गुण की आवश्यकता होती है। किसी भी m x n मैट्रिक्स को इस तरह डीकम्पोज़ किया जा सकता है, इसी कारण डेटा साइंस में यह हर जगह दिखती है।
व्यवहार में SVD कैसे काम करता है
चलिए शुरुआत से देखते हैं कि SVD कैसे काम करता है।
मैट्रिक्स डीकम्पोज़िशन समझना
मान लीजिए आपके पास 3×2 का मैट्रिक्स A है:
मैट्रिक्स डीकम्पोज़िशन
SVD इसे U (3×3), \Sigma (3×2), और V* (2×2) में डीकम्पोज़ करता है। U के कॉलम A x A^T के आईगेनवेक्टर से आते हैं, और V के कॉलम A^T x A के आईगेनवेक्टर से। \Sigma में सिंगुलर वैल्यूज़ दोनों उत्पादों के आईगेनवैल्यूज़ के वर्गमूल होते हैं।
अच्छी खबर यह है कि आपको इन्हें हाथ से निकालने की ज़रूरत नहीं। Python में, आपको सिर्फ एक लाइन चाहिए:
import numpy as np
A = np.array([[1,2],[3,4],[5,6]])
U, sigma, Vt = np.linalg.svd(A, full_matrices=True)संचालित द्वारा
Numpy आउटपुट
ये तीनों मैट्रिक्स गुणा के माध्यम से परस्पर क्रिया करते हैं। U पंक्ति-स्थान में डेटा को रोटेट करता है, \Sigma प्रत्येक अक्ष के साथ इसे स्केल करता है, और V* कॉलम-स्थान में रोटेट करता है। परिणाम मूल मैट्रिक्स A होता है।
सिंगुलर वैल्यूज़ की भूमिका
\Sigma की डायगोनल पर मौजूद मान बताते हैं कि कुल मैट्रिक्स में हर घटक का योगदान कितना है।
पहली सिंगुलर वैल्यू हमेशा सबसे बड़ी होती है — यह डेटा में सबसे प्रमुख पैटर्न को पकड़ती है। इसके बाद की प्रत्येक वैल्यू कम-कम योगदान पकड़ती है। यदि शुरुआती कुछ सिंगुलर वैल्यूज़ बड़ी हों और बाकी शून्य के क़रीब, तो इसका मतलब है कि मैट्रिक्स की अधिकांश जानकारी कुछ ही घटकों में सिमटी हुई है।
यही बात डेटा कम्प्रेशन को संभव बनाती है।
आप छोटी सिंगुलर वैल्यूज़ (और उनके अनुरूप U के कॉलम व V* की पंक्तियाँ) हटा सकते हैं, बिना ज़्यादा जानकारी खोए। परिणाम मूल मैट्रिक्स का एक लोअर-रैंक एप्रॉक्सिमेशन होता है जो छोटा और तेज़ी से उपयोग करने योग्य है।
गैर-शून्य सिंगुलर वैल्यूज़ की संख्या आपको मैट्रिक्स का रैंक भी बताती है — रैखिक रूप से स्वतंत्र पंक्तियों या कॉलम्स की संख्या। यदि 100×50 के मैट्रिक्स में केवल 10 गैर-शून्य सिंगुलर वैल्यूज़ हैं, तो इसका मतलब है कि डेटा में केवल 10 स्वतंत्र डायमेंशन हैं। बाकी 40 अनावश्यक हैं।
मैट्रिक्स का पुनर्निर्माण
आप तीनों घटकों को वापस गुणा करके मूल मैट्रिक्स बना सकते हैं:
मैट्रिक्स पुनर्निर्माण
लेकिन वास्तव में आपको आंशिक पुनर्निर्माण चाहिए। यानी सभी सिंगुलर वैल्यूज़ के बजाय, आप केवल शीर्ष k मान और उनके अनुरूप वेक्टर रखते हैं। इससे रैंक-k एप्रॉक्सिमेशन मिलता है A का:
रैंक-k मैट्रिक्स एप्रॉक्सिमेशन
Eckart-Young प्रमेय गारंटी देता है कि यह रैंक-k एप्रॉक्सिमेशन मूल A के सबसे नज़दीक संभव रैंक k का मैट्रिक्स है (Frobenius नॉर्म से मापा गया)। यानी, यदि आप किसी मैट्रिक्स को k डायमेंशंस तक कम्प्रेस करने जा रहे हैं, तो SVD आपको सर्वोत्तम संभव परिणाम देता है।
डेटा साइंस में SVD के उपयोग
एक बार जब आप ध्यान देना शुरू करते हैं, तो SVD आपकी अपेक्षा से अधिक जगहों पर दिखेगा।
विचार हमेशा बड़ा मैट्रिक्स लेना, ज़रूरी हिस्सों को रखना और बाकी को हटाना है। जो बदलता है, वह है कि समस्या के अनुसार "ज़रूरी" का मतलब क्या है।
डायमेंशनलिटी रिडक्शन
उच्च-आयामी डेटासेट्स के साथ काम करना और उनकी व्याख्या करना कठिन होता है। अधिक फीचर्स का अर्थ है लंबा प्रशिक्षण समय और ओवरफिटिंग का अधिक जोखिम। SVD डायमेंशंस की संख्या घटाकर इसे रोकता है।
सामान्य तौर पर ऐसा होता है: आप अपने डेटा मैट्रिक्स का डीकम्पोज़ करते हैं, सिंगुलर वैल्यूज़ देखते हैं, और केवल शीर्ष k घटक रखते हैं। छोटी सिंगुलर वैल्यूज़ शोर और मामूली भिन्नता दर्शाती हैं, इसलिए उन्हें हटाने से आपके डेटा की गुणवत्ता पर मुश्किल से असर पड़ता है। जो बचता है, वह एक कॉम्पैक्ट प्रतिनिधित्व है जिसमें मूल संरचना का अधिकांश हिस्सा बना रहता है।
यही ठीक-ठीक Principal Component Analysis (PCA) का तरीका है। PCA डेटा को सेंटर करता है और फिर उसके परिणाम पर SVD चलाता है। प्रिंसिपल कंपोनेंट्स राइट सिंगुलर वेक्टर होते हैं, और सिंगुलर वैल्यूज़ बताती हैं कि प्रत्येक कंपोनेंट कितनी वैरिएंस समझाता है।
रिकमेंडेशन सिस्टम
Netflix और Amazon जैसी कंपनियों के पास विशाल यूज़र-आइटम मैट्रिक्स होते हैं जिनमें अधिकांश एंट्रियाँ खाली होती हैं। एक यूज़र हज़ारों में से कुछ ही फिल्मों को रेट करता है, इसलिए मैट्रिक्स स्पार्स होता है। SVD यहाँ खाली जगह भरने में मदद करता है।
विचार यह है कि रेटिंग मैट्रिक्स को यूज़र की प्राथमिकताओं और आइटम की विशेषताओं में डीकम्पोज़ किया जाए। U मैट्रिक्स दर्शाता है कि प्रत्येक यूज़र किस बात की परवाह करता है (जैसे शैली, गति, टोन), और V* दर्शाता है कि प्रत्येक आइटम क्या प्रदान करता है। \Sigma में सिंगुलर वैल्यूज़ इन कारकों को उनके महत्व के अनुसार स्केल करती हैं। जब आप इन्हें वापस गुणा करते हैं, तो आपको उन फिल्मों के लिए अनुमानित रेटिंग मिलती है जिन्हें यूज़र ने अभी तक नहीं देखा है।
व्यवहार में, मानक SVD स्पार्स मैट्रिक्स पर सीधे काम नहीं करता क्योंकि यह मिसिंग वैल्यूज़ को शून्य मानता है। इसलिए सिस्टम्स ट्रंकेटेड SVD या मैट्रिक्स फैक्टराइज़ेशन जैसी विविधताएँ उपयोग करते हैं जो केवल अवलोकित एंट्रियों पर कार्य करती हैं।
इमेज कम्प्रेशन
ग्रेस्केल इमेज पिक्सेल मानों का मात्र एक मैट्रिक्स होता है। SVD सबसे महत्वपूर्ण सिंगुलर वैल्यूज़ रखकर इसे कम्प्रेस कर सकता है।
मान लीजिए आपके पास 1000×1000 की इमेज है। फुल SVD आपको 1000 सिंगुलर वैल्यूज़ देगा। लेकिन यदि आप केवल शीर्ष 50 रखते हैं, तो आप 1000 की जगह मात्र 50 कंपोनेंट्स से इमेज का पुनर्निर्माण करते हैं। इमेज थोड़ी धुंधली दिखेगी, पर पहचानने योग्य होगी — और स्टोरेज 1,000,000 मानों से घटकर लगभग 100,500 हो जाएगा (U के 50 कॉलम + 50 सिंगुलर वैल्यूज़ + V* की 50 पंक्तियाँ)।
अधिक सिंगुलर वैल्यूज़ का मतलब बेहतर इमेज क्वालिटी लेकिन कम कम्प्रेशन। कम वैल्यूज़ का मतलब छोटे फाइल, पर अधिक लॉस। उपयोग-केस के आधार पर यह संतुलन आप तय करते हैं।
परफॉर्मेंस संबंधी बातें और सीमाएँ
जितना बड़ा आपका मैट्रिक्स, उतनी अधिक कम्प्यूटेशनल लागत।
कम्प्यूटेशनल लागत
किसी m x n मैट्रिक्स पर फुल SVD का समय-जटिलता O(mn²) होती है (मानकर m >= n)। छोटे मैट्रिक्स के लिए यह ठीक है। लेकिन लाखों पंक्तियों और हज़ारों कॉलम वाले मैट्रिक्स पर यह महंगा है।
मेमोरी दूसरा अवरोध है। फुल SVD तीन डेंस मैट्रिक्स पैदा करता है, और तीनों को एक साथ स्टोर करना आपकी उपलब्ध RAM से आगे जा सकता है।
उपाय है कि जब ज़रूरत न हो तो फुल SVD की गणना से बचें। ट्रंकेटेड SVD केवल शीर्ष k सिंगुलर वैल्यूज़ और उनके वेक्टर निकालता है, जो काफी तेज़ है। Python में, scipy.sparse.linalg.svds और sklearn.decomposition.TruncatedSVD यह करते हैं। रैंडमाइज़्ड SVD इससे भी आगे जाकर रैंडम सैम्पलिंग से डीकम्पोज़िशन का एप्रॉक्सिमेशन करता है, और जब आपको केवल प्रमुख कंपोनेंट्स चाहिए होते हैं तब यह अच्छी तरह काम करता है।
स्थिरता और शुद्धता
अधिकांश मामलों में SVD संख्यात्मक रूप से स्थिर है, लेकिन कुछ डेटा पैटर्न पर इसे कठिनाई हो सकती है।
अत्यधिक शोरयुक्त डेटा एक उदाहरण है। यदि सिग्नल-टू-नॉइज़ अनुपात कम है, तो शीर्ष सिंगुलर वैल्यूज़ शोर से अलग नहीं होतीं। ट्रंकेट करते समय आप या तो शोर को बनाए रखेंगे या सिग्नल को घटा देंगे।
इल्ल-कंडीशन्ड मैट्रिक्स एक और समस्या हैं। जब सबसे बड़ी और सबसे छोटी सिंगुलर वैल्यू के बीच का अनुपात बहुत बड़ा हो (उच्च कंडीशन नंबर), तो गणना के दौरान छोटे-छोटे संख्यात्मक त्रुटियाँ बढ़ जाती हैं। इससे अविश्वसनीय परिणाम आ सकते हैं, खासकर फ्लोटिंग-पॉइंट परिशुद्धता की सीमाओं के कारण।
उपाय है कि ट्रंकेशन से पहले अपनी सिंगुलर वैल्यूज़ का निरीक्षण करें। उन्हें प्लॉट करें और सिग्नल और शोर के बीच स्पष्ट गिरावट देखें। यदि क्षय धीरे-धीरे हो और कोई स्पष्ट कोहनी न हो, तो उस डेटासेट के लिए SVD सर्वोत्तम उपकरण नहीं हो सकता।
SVD के विकल्प
SVD एकमात्र मैट्रिक्स डीकम्पोज़िशन नहीं है, और यह हर काम के लिए हमेशा सबसे अच्छा चुनाव भी नहीं है।
नीचे सूचीबद्ध प्रत्येक विकल्प एक विशिष्ट प्रकार की समस्या हल करता है। वे SVD के स्थानापन्न नहीं हैं क्योंकि वे अलग मान्यताओं और बाधाओं के तहत काम करते हैं। सही चुनाव हमेशा उस कार्य पर निर्भर करता है जिसे आप करने की कोशिश कर रहे हैं।
आईगेनडिकम्पोज़िशन
Eigendecomposition SVD से सबसे ज़्यादा संबंधित है। यह एक स्क्वायर मैट्रिक्स को आईगेनवैल्यूज़ और आईगेनवेक्टर में तोड़ता है:
आईगेनडिकम्पोज़िशन सूत्र
जहाँ Q में आईगेनवेक्टर होते हैं और \Lambda आईगेनवैल्यूज़ का डायगोनल मैट्रिक्स है।
पेंच यह है कि यह केवल स्क्वायर मैट्रिक्स पर काम करता है। यदि आपका डेटा मैट्रिक्स m x n है जहाँ m != n, तो आईगेनडिकम्पोज़िशन सीधे उस पर काम नहीं कर सकता। SVD किसी भी आकार के मैट्रिक्स पर काम करता है, इसलिए यह ज़्यादा सामान्य उपकरण है।
स्क्वायर, सममित मैट्रिक्स (जैसे कोवेरिएंस मैट्रिक्स) के लिए, आईगेनडिकम्पोज़िशन और SVD काफ़ी संबंधित परिणाम देते हैं। एक सममित पॉज़िटिव सेमी-डिफिनिट मैट्रिक्स की सिंगुलर वैल्यूज़ उसकी आईगेनवैल्यूज़ ही होती हैं। इसलिए यदि आप PCA में कोवेरिएंस मैट्रिक्स के साथ काम कर रहे हैं, तो दोनों तरीके आपको समान परिणाम देंगे। SVD बस वही संस्करण है जो नॉन-स्क्वायर मामलों में भी सामान्यीकृत होता है।
QR डीकम्पोज़िशन
QR डीकम्पोज़िशन किसी मैट्रिक्स को एक ऑर्थोगोनल मैट्रिक्स Q और एक अपर ट्रायएंगुलर मैट्रिक्स R में विभाजित करता है:
QR डीकम्पोज़िशन सूत्र
कुछ कार्यों के लिए यह SVD से तेज़ है, खासकर रैखिक समीकरण प्रणालियों और लीस्ट-स्क्वेयर्स समस्याओं को हल करने में।
समझौता जानकारी का है। QR आपको सिंगुलर वैल्यूज़ नहीं देता, इसलिए यह आपके मैट्रिक्स के रैंक या कौन से कंपोनेंट सबसे अधिक वज़न रखते हैं, इसके बारे में कुछ नहीं बता सकता। यदि आपको Ax = b हल करना है और अंतर्निहित संरचना की परवाह नहीं है, तो QR अच्छा विकल्प है। पर यदि आपको डेटा को समझना या कम्प्रेस करना है, तो SVD बेहतर चुनाव है।
नॉन-नेगेटिव मैट्रिक्स फैक्टराइज़ेशन (NMF)
NMF किसी मैट्रिक्स को दो ऐसे मैट्रिक्स में डीकम्पोज़ करता है जिनके सभी मान गैर-ऋणात्मक होते हैं:
NMF सूत्र
यह बाधा NMF को स्वभावतः गैर-ऋणात्मक डेटा (जैसे पिक्सेल तीव्रता या शब्द गणना) के लिए उपयुक्त बनाती है। दूसरी ओर, SVD यह बाधा नहीं लगाता। इसके डीकम्पोज़्ड मैट्रिक्स में नकारात्मक मान भी हो सकते हैं, जो कभी-कभी ऐसे कंपोनेंट पैदा करते हैं जिन्हें समझना कठिन होता है।
NMF खासकर टेक्स्ट माइनिंग और टॉपिक मॉडलिंग में लोकप्रिय है। W का प्रत्येक कॉलम एक टॉपिक निरूपित कर सकता है, और H की प्रत्येक पंक्ति दिखाती है कि प्रत्येक डॉक्यूमेंट में उस टॉपिक की मात्रा कितनी है। गैर-ऋणात्मक बाधा का अर्थ है कि टॉपिक शब्दों के एडिटिव संयोजन से बनते हैं, जो उन्हें SVD के मिश्रित-चिह्न कंपोनेंट्स की तुलना में पढ़ने में आसान बनाता है।
कमज़ोरी यह है कि NMF अद्वितीय समाधान की गारंटी नहीं देता, और इसके परिणाम इनिशियलाइज़ेशन पर निर्भर करते हैं। SVD समान इनपुट के लिए हमेशा समान आउटपुट देता है।
रैंडमाइज़्ड SVD
यदि आपका मैट्रिक्स फुल SVD के लिए बहुत बड़ा है लेकिन आपको फिर भी सिंगुलर वैल्यूज़ चाहिए, तो रैंडमाइज़्ड SVD पर ध्यान दें। यह रैंडम प्रोजेक्शंस का उपयोग करके शीर्ष k सिंगुलर वैल्यूज़ और वेक्टर का एप्रॉक्सिमेशन करता है, बिना पूरी डीकम्पोज़िशन निकाले। scikit-learn (TruncatedSVD) और Facebook का fbpca जैसी लाइब्रेरीज़ इस पद्धति को लागू करती हैं, और यह लाखों पंक्तियों वाले मैट्रिक्स तक अच्छे से स्केल करता है।
नीचे दी गई तालिका यह समेटती है कि किस विधि का चुनाव कब करें।
SVD के विकल्प
SVD से जुड़ी अन्य बातें
कुछ आम बातें नए डेटा वैज्ञानिकों को उलझाती हैं।
पहली है सिंगुलर वैल्यूज़ का गलत अर्थ निकालना। बड़ी सिंगुलर वैल्यू का मतलब है कि वह कंपोनेंट डेटा में बहुत वैरिएंस समझाता है — इसका यह मतलब नहीं कि वह कंपोनेंट डोमेन-विशिष्ट अर्थ में “महत्वपूर्ण” है। उदाहरण के लिए, यूज़र-रेटिंग मैट्रिक्स में प्रमुख सिंगुलर वैल्यू यह तथ्य पकड़ सकती है कि अधिकांश लोग लोकप्रिय फिल्मों को रेट करते हैं, न कि कोई अर्थपूर्ण पसंद का पैटर्न। हमेशा सिंगुलर वैल्यूज़ की व्याख्या उनके परिमाण के बजाय अपने डेटा के सन्दर्भ में करें।
दूसरी है बिना ज़रूरत SVD का सहारा लेना। छोटे डेटासेट्स (कुछ सौ पंक्तियाँ और कुछ कॉलम) पर SVD अनावश्यक जटिलता जोड़ता है। सहसंबंध विश्लेषण या बुनियादी फीचर चयन जैसी सरल विधियाँ अक्सर कम समय और कम कोड में काम कर जाती हैं। SVD तब शानदार है जब आपके पास उच्च-आयामी डेटा हो जिसमें अनावश्यक संरचना हो — यदि आपका डेटासेट इस परिभाषा में नहीं आता, तो सरल तरीकों का उपयोग करें।
निष्कर्ष
SVD किसी भी मैट्रिक्स को तीन घटकों में तोड़ देता है जो उसकी संरचना दिखाते हैं। सिंगुलर वैल्यूज़ बताती हैं कि डेटा के कौन से हिस्से सबसे अधिक मायने रखते हैं, और लेफ्ट व राइट सिंगुलर वेक्टर उनके पीछे के पंक्ति और कॉलम पैटर्न दिखाते हैं।
यह डीकम्पोज़िशन कई व्यावहारिक टूल्स के पीछे है जिनका आप रोज़ उपयोग करते हैं। रिकमेंडेशन सिस्टम मिसिंग रेटिंग का पूर्वानुमान लगाने के लिए इसका उपयोग करते हैं। इमेज कम्प्रेशन फाइल आकार घटाने के लिए, दृश्य गुणवत्ता बनाए रखते हुए, इसका उपयोग करता है। इनके पीछे की गणित लगभग समान है, भले ही डोमेन पूरी तरह अलग हों।
लेकिन SVD हमेशा सही उपकरण नहीं है। बड़े मैट्रिक्स पर यह महंगा है और जब सिंगुलर वैल्यूज़ स्पष्ट रूप से अलग नहीं होतीं तो सिग्नल और शोर मिल सकते हैं। साथ ही, छोटे डेटासेट्स के लिए यह ओवरकिल है। QR डीकम्पोज़िशन, आईगेनडिकम्पोज़िशन और NMF जैसे विकल्प विशिष्ट मामलों को बेहतर संभालते हैं।
कुंजी यह जानना है कि SVD कब उपयोग करना चाहिए और कब कोई सरल विधि बेहतर रहेगी। और यह ज्ञान पाने के लिए, हमारे Machine Learning Scientist in Python ट्रैक में नामांकन करें और 2026 में जॉब-रेडी बनें।
SVD FAQs
सिंगुलर वैल्यू डीकम्पोज़िशन (SVD) क्या है?⌄
SVD एक मैट्रिक्स डीकम्पोज़िशन विधि है जो किसी भी मैट्रिक्स को तीन घटकों में तोड़ती है: लेफ्ट सिंगुलर वेक्टर (U), सिंगुलर वैल्यूज़ (Σ) और राइट सिंगुलर वेक्टर (V*)। यह आकार या साइज़ की परवाह किए बिना किसी भी मैट्रिक्स पर काम करती है। SVD डेटा को पैटर्न और उनकी सापेक्ष महत्त्वता में विभाजित करके उसकी अंतर्निहित संरचना दिखाती है।
डेटा साइंस और मशीन लर्निंग में SVD का उपयोग क्यों किया जाता है?⌄
SVD उच्च-आयामी डेटासेट्स में डायमेंशंस की संख्या घटाने में मदद करता है, जबकि सबसे महत्वपूर्ण पैटर्न बनाए रखता है। यह PCA और रिकमेंडेशन सिस्टम के पीछे की गणित है। ये सभी अनुप्रयोग प्रमुख कंपोनेंट्स को रखने और बाकी को हटाने के एक ही विचार पर निर्भर करते हैं।
SVD और आईगेनडिकम्पोज़िशन में क्या अंतर है?⌄
आईगेनडिकम्पोज़िशन केवल स्क्वायर मैट्रिक्स पर काम करता है, जबकि SVD किसी भी आकार के मैट्रिक्स पर काम करता है। स्क्वायर, सममित मैट्रिक्स जैसे कोवेरिएंस मैट्रिक्स के लिए, दोनों तरीके काफ़ी संबंधित परिणाम देते हैं — एक पॉज़िटिव सेमी-डिफिनिट मैट्रिक्स की सिंगुलर वैल्यूज़ उसकी आईगेनवैल्यूज़ होती हैं। SVD अधिक सामान्य उपकरण है, इसलिए यह अधिकांश डेटा साइंस वर्कफ़्लोज़ में डिफ़ॉल्ट है।
सिंगुलर वैल्यूज़ का डेटा कम्प्रेशन से क्या संबंध है?⌄
सिंगुलर वैल्यूज़ बड़े से छोटे क्रम में सॉर्ट होती हैं, और प्रत्येक यह दर्शाती है कि कोई कंपोनेंट कितनी वैरिएंस समझाता है। छोटी सिंगुलर वैल्यूज़ (और उनके मिलते-जुलते वेक्टर) हटाने से छोटे-पैटर्न और शोर हटते हैं, जबकि प्रमुख संरचना बनी रहती है। आप आकार में बड़े कमी के बदले सटीकता में थोड़ा-सा नुकसान स्वीकारते हैं।
मुझे SVD का उपयोग कब नहीं करना चाहिए?⌄
बड़े मैट्रिक्स पर SVD महंगा होता है; फुल डीकम्पोज़िशन के लिए समय-जटिलता O(mn^2) होती है। कुछ ही फीचर्स वाले छोटे डेटासेट्स पर, सहसंबंध विश्लेषण या बेसिक फीचर चयन जैसी सरल विधियाँ काम को तेज़ी से कर देंगी। यदि आपका मैट्रिक्स बहुत बड़ा है और आपको केवल शीर्ष कंपोनेंट्स चाहिए, तो फुल SVD के बजाय ट्रंकेटेड या रैंडमाइज़्ड SVD बेहतर है।
क्या आपने कभी हज़ारों फीचर्स वाले डेटासेट से उपयोगी पैटर्न निकालने की कोशिश की है?
आप जानते हैं कि एक विशाल डेटासेट में कुछ उपयोगी संरचना छिपी अवश्य होगी। समस्या यह है कि कच्चे डेटासेट में बहुत शोर, पुनरावृत्ति, मिसिंग वैल्यूज़ और आपकी वास्तविक ज़रूरत से कहीं अधिक डायमेंशंस होते हैं। ज्यादातर मशीन लर्निंग एल्गोरिदम ऐसे डेटा को समझने में विफल हो जाएंगे, या बेहतर से बेहतर स्थिति में, प्रशिक्षण समय को धीमा कर देंगे।
सिंगुलर वैल्यू डीकम्पोज़िशन (SVD) किसी भी मैट्रिक्स (यहाँ डेटासेट) को तीन सरल मैट्रिक्स में विभाजित करता है जो उसकी मूल संरचना दिखाते हैं। यह रिकमेंडेशन सिस्टम, इमेज कम्प्रेशन और PCA जैसी डायमेंशनलिटी रिडक्शन तकनीकों के पीछे की गणित है — और एक बार जब आप इसे समझ लेते हैं, तो आप इसे अपनी रोज़मर्रा की नौकरी में हर जगह देखेंगे।
इस लेख में, मैं आपको बताऊंगा कि SVD क्या है, यह कैसे काम करता है, डेटा साइंस में कहाँ उपयोग होता है, और कब आपको इसके बजाय किसी वैकल्पिक तरीके को अपनाना चाहिए।
क्या आपको वेक्टर और डिटरमिनेंट जैसे कॉन्सेप्ट भ्रमित करते हैं? आगे बढ़ने से पहले हमारा डीप लर्निंग के लिए गणितीय अवधारणाओं की व्याख्या पोस्ट पढ़ें।
सिंगुलर वैल्यू डीकम्पोज़िशन (SVD) क्या है?
SVD एक विधि है जो किसी भी मैट्रिक्स को तीन सरल मैट्रिक्स में तोड़ती है।
इसे इस तरह समझें। आपके पास एक मैट्रिक्स
Aहै — यह कोई डेटासेट या इमेज हो सकता है। SVDAको तीन हिस्सों में विभाजित कर देती है:SVD सूत्र
Uएकm x mऑर्थोगोनल मैट्रिक्स है। इसके कॉलम्स को लेफ्ट सिंगुलर वेक्टर कहा जाता है, और येAकी पंक्तियों के बीच संबंधों का वर्णन करते हैं\Sigmaएकm x nडायगोनल मैट्रिक्स है। डायगोनल पर मौजूद मान सिंगुलर वैल्यूज़ होते हैं — ये हमेशा गैर-ऋणात्मक होते हैं और बड़े से छोटे क्रम में सॉर्ट किए जाते हैंV*एकn x nऑर्थोगोनल मैट्रिक्स का कंजुगेट ट्रांसपोज़ है। इसकी पंक्तियों को राइट सिंगुलर वेक्टर कहा जाता है, और ये A के कॉलम्स के बीच संबंधों का वर्णन करते हैंप्रत्येक हिस्सा मूल डेटा के बारे में अलग जानकारी दिखाता है।
Uपंक्ति-स्तरीय पैटर्न रखता है (पंक्तियाँ एक-दूसरे से कैसे संबंधित हैं),\Sigmaमहत्व के वेट्स रखता है (प्रत्येक पैटर्न कितना मायने रखता है), औरV*कॉलम-स्तरीय पैटर्न रखता है (कॉलम एक-दूसरे से कैसे संबंधित हैं)।एक उपमा लें। मान लीजिए आप किसी को रेसिपी समझा रहे हैं। आप इसे तीन भागों में बाँट सकते हैं: सामग्री (क्या लगता है), अनुपात (कितनी मात्रा), और चरण (उन्हें कैसे मिलाया जाए)। इनमें से कोई भी हिस्सा अकेले व्यंजन नहीं बनाता, लेकिन साथ मिलकर आपको हर आवश्यक जानकारी दे देते हैं। SVD मैट्रिक्स के साथ यही करती है — यह "क्या", "कितना" और "कैसे" को अलग-अलग घटकों में विभाजित कर देती है, जिन पर आप स्वतंत्र रूप से काम कर सकते हैं।
लिनियर अल्जebra में SVD की खासियत यह है कि यह किसी भी मैट्रिक्स पर काम करती है। इसका स्क्वायर होना ज़रूरी नहीं, न ही इसे किसी विशेष गुण की आवश्यकता होती है। किसी भी
m x nमैट्रिक्स को इस तरह डीकम्पोज़ किया जा सकता है, इसी कारण डेटा साइंस में यह हर जगह दिखती है।व्यवहार में SVD कैसे काम करता है
चलिए शुरुआत से देखते हैं कि SVD कैसे काम करता है।
मैट्रिक्स डीकम्पोज़िशन समझना
मान लीजिए आपके पास 3×2 का मैट्रिक्स A है:
मैट्रिक्स डीकम्पोज़िशन
SVD इसे
U(3×3),\Sigma(3×2), औरV*(2×2) में डीकम्पोज़ करता है।Uके कॉलमA x A^Tके आईगेनवेक्टर से आते हैं, और V के कॉलमA^T x Aके आईगेनवेक्टर से।\Sigmaमें सिंगुलर वैल्यूज़ दोनों उत्पादों के आईगेनवैल्यूज़ के वर्गमूल होते हैं।अच्छी खबर यह है कि आपको इन्हें हाथ से निकालने की ज़रूरत नहीं। Python में, आपको सिर्फ एक लाइन चाहिए:
Numpy आउटपुट
ये तीनों मैट्रिक्स गुणा के माध्यम से परस्पर क्रिया करते हैं।
Uपंक्ति-स्थान में डेटा को रोटेट करता है,\Sigmaप्रत्येक अक्ष के साथ इसे स्केल करता है, औरV*कॉलम-स्थान में रोटेट करता है। परिणाम मूल मैट्रिक्स A होता है।सिंगुलर वैल्यूज़ की भूमिका
\Sigmaकी डायगोनल पर मौजूद मान बताते हैं कि कुल मैट्रिक्स में हर घटक का योगदान कितना है।पहली सिंगुलर वैल्यू हमेशा सबसे बड़ी होती है — यह डेटा में सबसे प्रमुख पैटर्न को पकड़ती है। इसके बाद की प्रत्येक वैल्यू कम-कम योगदान पकड़ती है। यदि शुरुआती कुछ सिंगुलर वैल्यूज़ बड़ी हों और बाकी शून्य के क़रीब, तो इसका मतलब है कि मैट्रिक्स की अधिकांश जानकारी कुछ ही घटकों में सिमटी हुई है।
यही बात डेटा कम्प्रेशन को संभव बनाती है।
आप छोटी सिंगुलर वैल्यूज़ (और उनके अनुरूप
Uके कॉलम वV*की पंक्तियाँ) हटा सकते हैं, बिना ज़्यादा जानकारी खोए। परिणाम मूल मैट्रिक्स का एक लोअर-रैंक एप्रॉक्सिमेशन होता है जो छोटा और तेज़ी से उपयोग करने योग्य है।गैर-शून्य सिंगुलर वैल्यूज़ की संख्या आपको मैट्रिक्स का रैंक भी बताती है — रैखिक रूप से स्वतंत्र पंक्तियों या कॉलम्स की संख्या। यदि 100×50 के मैट्रिक्स में केवल 10 गैर-शून्य सिंगुलर वैल्यूज़ हैं, तो इसका मतलब है कि डेटा में केवल 10 स्वतंत्र डायमेंशन हैं। बाकी 40 अनावश्यक हैं।
मैट्रिक्स का पुनर्निर्माण
आप तीनों घटकों को वापस गुणा करके मूल मैट्रिक्स बना सकते हैं:
मैट्रिक्स पुनर्निर्माण
लेकिन वास्तव में आपको आंशिक पुनर्निर्माण चाहिए। यानी सभी सिंगुलर वैल्यूज़ के बजाय, आप केवल शीर्ष
kमान और उनके अनुरूप वेक्टर रखते हैं। इससे रैंक-k एप्रॉक्सिमेशन मिलता हैAका:रैंक-k मैट्रिक्स एप्रॉक्सिमेशन
Eckart-Young प्रमेय गारंटी देता है कि यह रैंक-k एप्रॉक्सिमेशन मूल
Aके सबसे नज़दीक संभव रैंकkका मैट्रिक्स है (Frobenius नॉर्म से मापा गया)। यानी, यदि आप किसी मैट्रिक्स को k डायमेंशंस तक कम्प्रेस करने जा रहे हैं, तो SVD आपको सर्वोत्तम संभव परिणाम देता है।डेटा साइंस में SVD के उपयोग
एक बार जब आप ध्यान देना शुरू करते हैं, तो SVD आपकी अपेक्षा से अधिक जगहों पर दिखेगा।
विचार हमेशा बड़ा मैट्रिक्स लेना, ज़रूरी हिस्सों को रखना और बाकी को हटाना है। जो बदलता है, वह है कि समस्या के अनुसार "ज़रूरी" का मतलब क्या है।
डायमेंशनलिटी रिडक्शन
उच्च-आयामी डेटासेट्स के साथ काम करना और उनकी व्याख्या करना कठिन होता है। अधिक फीचर्स का अर्थ है लंबा प्रशिक्षण समय और ओवरफिटिंग का अधिक जोखिम। SVD डायमेंशंस की संख्या घटाकर इसे रोकता है।
सामान्य तौर पर ऐसा होता है: आप अपने डेटा मैट्रिक्स का डीकम्पोज़ करते हैं, सिंगुलर वैल्यूज़ देखते हैं, और केवल शीर्ष
kघटक रखते हैं। छोटी सिंगुलर वैल्यूज़ शोर और मामूली भिन्नता दर्शाती हैं, इसलिए उन्हें हटाने से आपके डेटा की गुणवत्ता पर मुश्किल से असर पड़ता है। जो बचता है, वह एक कॉम्पैक्ट प्रतिनिधित्व है जिसमें मूल संरचना का अधिकांश हिस्सा बना रहता है।यही ठीक-ठीक Principal Component Analysis (PCA) का तरीका है। PCA डेटा को सेंटर करता है और फिर उसके परिणाम पर SVD चलाता है। प्रिंसिपल कंपोनेंट्स राइट सिंगुलर वेक्टर होते हैं, और सिंगुलर वैल्यूज़ बताती हैं कि प्रत्येक कंपोनेंट कितनी वैरिएंस समझाता है।
रिकमेंडेशन सिस्टम
Netflix और Amazon जैसी कंपनियों के पास विशाल यूज़र-आइटम मैट्रिक्स होते हैं जिनमें अधिकांश एंट्रियाँ खाली होती हैं। एक यूज़र हज़ारों में से कुछ ही फिल्मों को रेट करता है, इसलिए मैट्रिक्स स्पार्स होता है। SVD यहाँ खाली जगह भरने में मदद करता है।
विचार यह है कि रेटिंग मैट्रिक्स को यूज़र की प्राथमिकताओं और आइटम की विशेषताओं में डीकम्पोज़ किया जाए।
Uमैट्रिक्स दर्शाता है कि प्रत्येक यूज़र किस बात की परवाह करता है (जैसे शैली, गति, टोन), औरV*दर्शाता है कि प्रत्येक आइटम क्या प्रदान करता है।\Sigmaमें सिंगुलर वैल्यूज़ इन कारकों को उनके महत्व के अनुसार स्केल करती हैं। जब आप इन्हें वापस गुणा करते हैं, तो आपको उन फिल्मों के लिए अनुमानित रेटिंग मिलती है जिन्हें यूज़र ने अभी तक नहीं देखा है।व्यवहार में, मानक SVD स्पार्स मैट्रिक्स पर सीधे काम नहीं करता क्योंकि यह मिसिंग वैल्यूज़ को शून्य मानता है। इसलिए सिस्टम्स ट्रंकेटेड SVD या मैट्रिक्स फैक्टराइज़ेशन जैसी विविधताएँ उपयोग करते हैं जो केवल अवलोकित एंट्रियों पर कार्य करती हैं।
इमेज कम्प्रेशन
ग्रेस्केल इमेज पिक्सेल मानों का मात्र एक मैट्रिक्स होता है। SVD सबसे महत्वपूर्ण सिंगुलर वैल्यूज़ रखकर इसे कम्प्रेस कर सकता है।
मान लीजिए आपके पास 1000×1000 की इमेज है। फुल SVD आपको 1000 सिंगुलर वैल्यूज़ देगा। लेकिन यदि आप केवल शीर्ष 50 रखते हैं, तो आप 1000 की जगह मात्र 50 कंपोनेंट्स से इमेज का पुनर्निर्माण करते हैं। इमेज थोड़ी धुंधली दिखेगी, पर पहचानने योग्य होगी — और स्टोरेज 1,000,000 मानों से घटकर लगभग 100,500 हो जाएगा (
Uके 50 कॉलम + 50 सिंगुलर वैल्यूज़ +V*की 50 पंक्तियाँ)।अधिक सिंगुलर वैल्यूज़ का मतलब बेहतर इमेज क्वालिटी लेकिन कम कम्प्रेशन। कम वैल्यूज़ का मतलब छोटे फाइल, पर अधिक लॉस। उपयोग-केस के आधार पर यह संतुलन आप तय करते हैं।
परफॉर्मेंस संबंधी बातें और सीमाएँ
जितना बड़ा आपका मैट्रिक्स, उतनी अधिक कम्प्यूटेशनल लागत।
कम्प्यूटेशनल लागत
किसी
m x nमैट्रिक्स पर फुल SVD का समय-जटिलता O(mn²) होती है (मानकरm >= n)। छोटे मैट्रिक्स के लिए यह ठीक है। लेकिन लाखों पंक्तियों और हज़ारों कॉलम वाले मैट्रिक्स पर यह महंगा है।मेमोरी दूसरा अवरोध है। फुल SVD तीन डेंस मैट्रिक्स पैदा करता है, और तीनों को एक साथ स्टोर करना आपकी उपलब्ध RAM से आगे जा सकता है।
उपाय है कि जब ज़रूरत न हो तो फुल SVD की गणना से बचें। ट्रंकेटेड SVD केवल शीर्ष k सिंगुलर वैल्यूज़ और उनके वेक्टर निकालता है, जो काफी तेज़ है। Python में,
scipy.sparse.linalg.svdsऔरsklearn.decomposition.TruncatedSVDयह करते हैं। रैंडमाइज़्ड SVD इससे भी आगे जाकर रैंडम सैम्पलिंग से डीकम्पोज़िशन का एप्रॉक्सिमेशन करता है, और जब आपको केवल प्रमुख कंपोनेंट्स चाहिए होते हैं तब यह अच्छी तरह काम करता है।स्थिरता और शुद्धता
अधिकांश मामलों में SVD संख्यात्मक रूप से स्थिर है, लेकिन कुछ डेटा पैटर्न पर इसे कठिनाई हो सकती है।
अत्यधिक शोरयुक्त डेटा एक उदाहरण है। यदि सिग्नल-टू-नॉइज़ अनुपात कम है, तो शीर्ष सिंगुलर वैल्यूज़ शोर से अलग नहीं होतीं। ट्रंकेट करते समय आप या तो शोर को बनाए रखेंगे या सिग्नल को घटा देंगे।
इल्ल-कंडीशन्ड मैट्रिक्स एक और समस्या हैं। जब सबसे बड़ी और सबसे छोटी सिंगुलर वैल्यू के बीच का अनुपात बहुत बड़ा हो (उच्च कंडीशन नंबर), तो गणना के दौरान छोटे-छोटे संख्यात्मक त्रुटियाँ बढ़ जाती हैं। इससे अविश्वसनीय परिणाम आ सकते हैं, खासकर फ्लोटिंग-पॉइंट परिशुद्धता की सीमाओं के कारण।
उपाय है कि ट्रंकेशन से पहले अपनी सिंगुलर वैल्यूज़ का निरीक्षण करें। उन्हें प्लॉट करें और सिग्नल और शोर के बीच स्पष्ट गिरावट देखें। यदि क्षय धीरे-धीरे हो और कोई स्पष्ट कोहनी न हो, तो उस डेटासेट के लिए SVD सर्वोत्तम उपकरण नहीं हो सकता।
SVD के विकल्प
SVD एकमात्र मैट्रिक्स डीकम्पोज़िशन नहीं है, और यह हर काम के लिए हमेशा सबसे अच्छा चुनाव भी नहीं है।
नीचे सूचीबद्ध प्रत्येक विकल्प एक विशिष्ट प्रकार की समस्या हल करता है। वे SVD के स्थानापन्न नहीं हैं क्योंकि वे अलग मान्यताओं और बाधाओं के तहत काम करते हैं। सही चुनाव हमेशा उस कार्य पर निर्भर करता है जिसे आप करने की कोशिश कर रहे हैं।
आईगेनडिकम्पोज़िशन
Eigendecomposition SVD से सबसे ज़्यादा संबंधित है। यह एक स्क्वायर मैट्रिक्स को आईगेनवैल्यूज़ और आईगेनवेक्टर में तोड़ता है:
आईगेनडिकम्पोज़िशन सूत्र
जहाँ
Qमें आईगेनवेक्टर होते हैं और\Lambdaआईगेनवैल्यूज़ का डायगोनल मैट्रिक्स है।पेंच यह है कि यह केवल स्क्वायर मैट्रिक्स पर काम करता है। यदि आपका डेटा मैट्रिक्स
m x nहै जहाँm != n, तो आईगेनडिकम्पोज़िशन सीधे उस पर काम नहीं कर सकता। SVD किसी भी आकार के मैट्रिक्स पर काम करता है, इसलिए यह ज़्यादा सामान्य उपकरण है।स्क्वायर, सममित मैट्रिक्स (जैसे कोवेरिएंस मैट्रिक्स) के लिए, आईगेनडिकम्पोज़िशन और SVD काफ़ी संबंधित परिणाम देते हैं। एक सममित पॉज़िटिव सेमी-डिफिनिट मैट्रिक्स की सिंगुलर वैल्यूज़ उसकी आईगेनवैल्यूज़ ही होती हैं। इसलिए यदि आप PCA में कोवेरिएंस मैट्रिक्स के साथ काम कर रहे हैं, तो दोनों तरीके आपको समान परिणाम देंगे। SVD बस वही संस्करण है जो नॉन-स्क्वायर मामलों में भी सामान्यीकृत होता है।
QR डीकम्पोज़िशन
QR डीकम्पोज़िशन किसी मैट्रिक्स को एक ऑर्थोगोनल मैट्रिक्स
Qऔर एक अपर ट्रायएंगुलर मैट्रिक्सRमें विभाजित करता है:QR डीकम्पोज़िशन सूत्र
कुछ कार्यों के लिए यह SVD से तेज़ है, खासकर रैखिक समीकरण प्रणालियों और लीस्ट-स्क्वेयर्स समस्याओं को हल करने में।
समझौता जानकारी का है। QR आपको सिंगुलर वैल्यूज़ नहीं देता, इसलिए यह आपके मैट्रिक्स के रैंक या कौन से कंपोनेंट सबसे अधिक वज़न रखते हैं, इसके बारे में कुछ नहीं बता सकता। यदि आपको
Ax = bहल करना है और अंतर्निहित संरचना की परवाह नहीं है, तो QR अच्छा विकल्प है। पर यदि आपको डेटा को समझना या कम्प्रेस करना है, तो SVD बेहतर चुनाव है।नॉन-नेगेटिव मैट्रिक्स फैक्टराइज़ेशन (NMF)
NMF किसी मैट्रिक्स को दो ऐसे मैट्रिक्स में डीकम्पोज़ करता है जिनके सभी मान गैर-ऋणात्मक होते हैं:
NMF सूत्र
यह बाधा NMF को स्वभावतः गैर-ऋणात्मक डेटा (जैसे पिक्सेल तीव्रता या शब्द गणना) के लिए उपयुक्त बनाती है। दूसरी ओर, SVD यह बाधा नहीं लगाता। इसके डीकम्पोज़्ड मैट्रिक्स में नकारात्मक मान भी हो सकते हैं, जो कभी-कभी ऐसे कंपोनेंट पैदा करते हैं जिन्हें समझना कठिन होता है।
NMF खासकर टेक्स्ट माइनिंग और टॉपिक मॉडलिंग में लोकप्रिय है।
Wका प्रत्येक कॉलम एक टॉपिक निरूपित कर सकता है, औरHकी प्रत्येक पंक्ति दिखाती है कि प्रत्येक डॉक्यूमेंट में उस टॉपिक की मात्रा कितनी है। गैर-ऋणात्मक बाधा का अर्थ है कि टॉपिक शब्दों के एडिटिव संयोजन से बनते हैं, जो उन्हें SVD के मिश्रित-चिह्न कंपोनेंट्स की तुलना में पढ़ने में आसान बनाता है।कमज़ोरी यह है कि NMF अद्वितीय समाधान की गारंटी नहीं देता, और इसके परिणाम इनिशियलाइज़ेशन पर निर्भर करते हैं। SVD समान इनपुट के लिए हमेशा समान आउटपुट देता है।
रैंडमाइज़्ड SVD
यदि आपका मैट्रिक्स फुल SVD के लिए बहुत बड़ा है लेकिन आपको फिर भी सिंगुलर वैल्यूज़ चाहिए, तो रैंडमाइज़्ड SVD पर ध्यान दें। यह रैंडम प्रोजेक्शंस का उपयोग करके शीर्ष k सिंगुलर वैल्यूज़ और वेक्टर का एप्रॉक्सिमेशन करता है, बिना पूरी डीकम्पोज़िशन निकाले।
scikit-learn(TruncatedSVD) और Facebook काfbpcaजैसी लाइब्रेरीज़ इस पद्धति को लागू करती हैं, और यह लाखों पंक्तियों वाले मैट्रिक्स तक अच्छे से स्केल करता है।नीचे दी गई तालिका यह समेटती है कि किस विधि का चुनाव कब करें।
SVD के विकल्प
SVD से जुड़ी अन्य बातें
कुछ आम बातें नए डेटा वैज्ञानिकों को उलझाती हैं।
पहली है सिंगुलर वैल्यूज़ का गलत अर्थ निकालना। बड़ी सिंगुलर वैल्यू का मतलब है कि वह कंपोनेंट डेटा में बहुत वैरिएंस समझाता है — इसका यह मतलब नहीं कि वह कंपोनेंट डोमेन-विशिष्ट अर्थ में “महत्वपूर्ण” है। उदाहरण के लिए, यूज़र-रेटिंग मैट्रिक्स में प्रमुख सिंगुलर वैल्यू यह तथ्य पकड़ सकती है कि अधिकांश लोग लोकप्रिय फिल्मों को रेट करते हैं, न कि कोई अर्थपूर्ण पसंद का पैटर्न। हमेशा सिंगुलर वैल्यूज़ की व्याख्या उनके परिमाण के बजाय अपने डेटा के सन्दर्भ में करें।
दूसरी है बिना ज़रूरत SVD का सहारा लेना। छोटे डेटासेट्स (कुछ सौ पंक्तियाँ और कुछ कॉलम) पर SVD अनावश्यक जटिलता जोड़ता है। सहसंबंध विश्लेषण या बुनियादी फीचर चयन जैसी सरल विधियाँ अक्सर कम समय और कम कोड में काम कर जाती हैं। SVD तब शानदार है जब आपके पास उच्च-आयामी डेटा हो जिसमें अनावश्यक संरचना हो — यदि आपका डेटासेट इस परिभाषा में नहीं आता, तो सरल तरीकों का उपयोग करें।
निष्कर्ष
SVD किसी भी मैट्रिक्स को तीन घटकों में तोड़ देता है जो उसकी संरचना दिखाते हैं। सिंगुलर वैल्यूज़ बताती हैं कि डेटा के कौन से हिस्से सबसे अधिक मायने रखते हैं, और लेफ्ट व राइट सिंगुलर वेक्टर उनके पीछे के पंक्ति और कॉलम पैटर्न दिखाते हैं।
यह डीकम्पोज़िशन कई व्यावहारिक टूल्स के पीछे है जिनका आप रोज़ उपयोग करते हैं। रिकमेंडेशन सिस्टम मिसिंग रेटिंग का पूर्वानुमान लगाने के लिए इसका उपयोग करते हैं। इमेज कम्प्रेशन फाइल आकार घटाने के लिए, दृश्य गुणवत्ता बनाए रखते हुए, इसका उपयोग करता है। इनके पीछे की गणित लगभग समान है, भले ही डोमेन पूरी तरह अलग हों।
लेकिन SVD हमेशा सही उपकरण नहीं है। बड़े मैट्रिक्स पर यह महंगा है और जब सिंगुलर वैल्यूज़ स्पष्ट रूप से अलग नहीं होतीं तो सिग्नल और शोर मिल सकते हैं। साथ ही, छोटे डेटासेट्स के लिए यह ओवरकिल है। QR डीकम्पोज़िशन, आईगेनडिकम्पोज़िशन और NMF जैसे विकल्प विशिष्ट मामलों को बेहतर संभालते हैं।
कुंजी यह जानना है कि SVD कब उपयोग करना चाहिए और कब कोई सरल विधि बेहतर रहेगी। और यह ज्ञान पाने के लिए, हमारे Machine Learning Scientist in Python ट्रैक में नामांकन करें और 2026 में जॉब-रेडी बनें।