सबसे पहले, आयामीता में कमी का उपयोग तब किया जाता है जब आपके पास कई प्रतिष्ठित आयाम होते हैं और नए ऑर्थोगोनल आधार में डेटा बिंदुओं को घुमाकर और केवल सबसे बड़े विचरण के साथ केवल अक्षों को ले कर समस्या का आकार कम करना चाहते हैं। 8 चर (कॉलम) के साथ आपका स्थान पहले से ही कम आयामी है, चर की संख्या को कम करने से मेमोरी के आकार के साथ तकनीकी समस्याओं को हल करने की संभावना नहीं है, लेकिन यह डेटासेट की गुणवत्ता को बहुत प्रभावित कर सकता है। आपके ठोस मामले में यह ऑनलाइन सीखने पर एक नज़र डालने के लिए अधिक आशाजनक हैतरीकों। मोटे तौर पर, पूरे डेटासेट के साथ काम करने के बजाय, ये विधियाँ एक समय में उनमें से एक छोटा सा हिस्सा (अक्सर "मिनी-बैच" के रूप में संदर्भित) लेती हैं और एक मॉडल का सृजन करती हैं। (मैं व्यक्तिगत रूप से "ऑनलाइन" शब्द की व्याख्या करना चाहता हूं, जो कि ट्विटर फीड जैसे इंटरनेट से डेटा के कुछ असीम लंबे स्रोत के संदर्भ में है, जहां आप पूरे डेटासेट को एक बार में लोड नहीं कर सकते हैं)।
लेकिन क्या होगा अगर आप वास्तव में पीसीए जैसी आयामी कमी तकनीक को एक डेटासेट में लागू करना चाहते हैं जो एक मेमोरी में फिट नहीं होता है? आम तौर पर एक डेटासेट X का आकार n x m के डेटासेट एक्स के रूप में दर्शाया जाता है , जहाँ n टिप्पणियों (पंक्तियों) की संख्या होती है और m कई चर (कॉलम) होते हैं। आमतौर पर मेमोरी के साथ समस्याएं इन दो संख्याओं में से केवल एक से आती हैं।
बहुत अधिक अवलोकन (n >> m)
जब आपके पास बहुत अधिक अवलोकन होते हैं , लेकिन चर की संख्या छोटे से मध्यम तक होती है, तो आप संवेदी मैट्रिक्स का निर्माण कर सकते हैं । वास्तव में, विशिष्ट PCA में आकार m x m के सहसंयोजक मैट्रिक्स का निर्माण और इसके लिए एकवचन मान अपघटन लागू होता है। प्रकार के फ्लोट64 के m = 1000 चर के साथ , एक सहसंयोजक मैट्रिक्स का आकार 1000 * 1000 * 8 ~ 8Mb है, जो आसानी से स्मृति में फिट बैठता है और इसका उपयोग SVD के साथ किया जा सकता है। तो आपको केवल पूरे डेटासेट को मेमोरी में लोड किए बिना कोविरेस मैट्रिक्स का निर्माण करने की आवश्यकता है - सुंदर ट्रैकेबल कार्य ।
वैकल्पिक रूप से, आप अपने डेटासेट से एक छोटा प्रतिनिधि नमूना चुन सकते हैं और सहसंयोजक मैट्रिक्स को अनुमानित कर सकते हैं । इस मैट्रिक्स में सामान्य रूप में सभी गुण समान होंगे, बस थोड़ा सा कम सटीक होगा।
बहुत सारे चर (n << m)
दूसरी ओर, कभी-कभी, जब आपके पास बहुत अधिक चर होते हैं , तो कोवरियन मैट्रिक्स स्वयं मेमोरी में फिट नहीं होगा। उदाहरण के लिए, यदि आप 640x480 छवियों के साथ काम करते हैं, तो हर अवलोकन में 640 * 480 = 307200 चर होते हैं, जिसके परिणामस्वरूप 703Gb सहसंयोजक मैट्रिक्स होता है! यह निश्चित रूप से नहीं है जो आप अपने कंप्यूटर की स्मृति में रखना चाहेंगे, या यहां तक कि अपने क्लस्टर की स्मृति में भी। तो हम सभी में एक covariance मैट्रिक्स का निर्माण किए बिना आयामों को कम करने की आवश्यकता है।
यह करने के लिए मेरी पसंदीदा विधि यादृच्छिक प्रोजेक्शन है । संक्षेप में, आप डाटासेट अगर एक्स आकार के एन एक्स मीटर , आप इसे कुछ विरल यादृच्छिक मैट्रिक्स से गुणा कर सकते हैं आर आकार के मीटर x कश्मीर (के साथ कश्मीर << मीटर और) प्राप्त नए मैट्रिक्स एक्स ' एक बहुत छोटे आकार के एन एक्स कश्मीर साथ लगभग एक ही गुण मूल एक के रूप में। यह काम क्यों करता है? ठीक है, आपको पता होना चाहिए (जो कि मुख्य घटक) ओर्थोगोनल कुल्हाड़ियों का सेट लगता है कि पीसीए लक्ष्य और पहले पर अपना डेटा परियोजना कश्मीरउनमें से। यह पता चला है कि विरल यादृच्छिक वैक्टर लगभग ऑर्थोगोनल हैं और इस प्रकार इसका उपयोग नए आधार के रूप में भी किया जा सकता है।
और, ज़ाहिर है, आपको पूरे डेटासेट एक्स को आर से गुणा करने की ज़रूरत नहीं है - आप हर अवलोकन एक्स को नए आधार पर अलग से या मिनी-बैच में अनुवाद कर सकते हैं ।
वहाँ भी कुछ इसी तरह के एल्गोरिथ्म रैंडम SVD कहा जाता है । मुझे इसके साथ कोई वास्तविक अनुभव नहीं है, लेकिन आप यहां स्पष्टीकरण के साथ उदाहरण कोड पा सकते हैं ।
नीचे की रेखा के रूप में, बड़े डेटासेट की आयामीता में कमी के लिए यहां एक छोटी जांच सूची है:
- यदि आपके पास कई आयाम (चर) नहीं हैं, तो बस ऑनलाइन लर्निंग एल्गोरिदम का उपयोग करें।
- यदि कई अवलोकन हैं, लेकिन एक मध्यम संख्या में चर (सहसंयोजक मैट्रिक्स स्मृति में फिट बैठता है), मैट्रिक्स को आकस्मिक रूप से निर्माण करते हैं और सामान्य एसवीडी का उपयोग करते हैं।
- यदि चर की संख्या बहुत अधिक है, तो वृद्धिशील एल्गोरिदम का उपयोग करें।