बड़े डेटासेट के लिए कुशल आयामी कमी


12

मेरे पास ~ 1M पंक्तियों और ~ 500K विरल विशेषताओं वाला एक डेटासेट है। मैं 1K-5K सघन सुविधाओं के क्रम में कहीं न कहीं आयामीता कम करना चाहता हूं।

sklearn.decomposition.PCAविरल डेटा पर काम नहीं करता है, और मैं का उपयोग करने की कोशिश की है, sklearn.decomposition.TruncatedSVDलेकिन बहुत जल्दी एक स्मृति त्रुटि मिलता है। इस पैमाने पर कुशल आयामी कमी के लिए मेरे विकल्प क्या हैं?

जवाबों:


12

क्या आपने यूनिफ़ॉर्म मैनिफोल्ड अप्रीमेंशन एंड प्रोजेक्शन (UMAP) के बारे में सुना है ?

UMAP (यूनिफ़ॉर्म मैनिफोल्ड अप्रीमेंशन एंड प्रोजेक्शन) नॉन-लीनियर डायमेंशन रिडक्शन के लिए एक नॉवेल कई गुना लर्निंग तकनीक है। UMAP का निर्माण रीमानियन ज्यामिति और बीजगणितीय टोपोलॉजी में स्थित एक सैद्धांतिक ढांचे से किया गया है। परिणाम एक व्यावहारिक मापनीय एल्गोरिथ्म है जो वास्तविक विश्व डेटा पर लागू होता है। UMAP एल्गोरिदम विज़ुअलाइज़ेशन गुणवत्ता के लिए टी-एसएनई के साथ प्रतिस्पर्धी है, और बेहतर रूप से बेहतर रन टाइम प्रदर्शन के साथ वैश्विक संरचना का अधिक संरक्षण करता है। इसके अलावा, UMAP के रूप में वर्णित आयाम पर कोई कम्प्यूटेशनल प्रतिबंध नहीं है, यह मशीन सीखने के लिए एक सामान्य उद्देश्य आयाम कमी तकनीक के रूप में व्यवहार्य है।

पेशेवरों और विपक्षों की सूची के लिए उनके कोड और मूल पेपर की जांच करें , यह उपयोग करना आसान है।

त्वरित तथ्य: यूएमएपी बड़े डेटासेट को संभाल सकता है और टी-एसएनई की तुलना में तेज़ है और विरल मैट्रिक्स डेटा के लिए फिटिंग का भी समर्थन करता है, और टी-एसएनई के विपरीत, एक सामान्य उद्देश्य आयाम कमी तकनीक है, जिसका अर्थ है कि न केवल इसका उपयोग विज़ुअलाइज़ेशन के लिए भी किया जा सकता है। अन्य मशीन लर्निंग मॉडल में खिलाने के लिए सुविधा स्थान को कम करने के लिए।

ठोस उदाहरण: मैंने विधि को बेंचमार्क किया है और इसकी तुलना कुछ अन्य आयामी कमी तकनीकों बेंचमार्क नोटबुक के खिलाफ की है , अगर दिलचस्पी एक त्वरित नज़र और एक छलांग शुरू करने के लिए है।


2
(+1) - यूएमएपी वास्तव में बहुत अच्छा है! आप थोड़ा सुधार करने पर विचार कर सकते हैं: मध्य में आपका पैराग्राफ और फॉलिंग बुलेट-पॉइंट्स एक ही जानकारी को दोहराते हैं। इसके अलावा, आप इसे एक उद्धरण बना सकते हैं, क्योंकि यह (अधिक या कम) उनकी वेबसाइट से कॉपी-पेस्ट किया गया है।
n1k31t4

2
निश्चित रूप से, मैं निश्चित रूप से इसे कम कर सकता हूं, मैं बस उन्हें यहां इंगित करना चाहता था और कुछ बिंदुओं को थोड़ा सा हटा दिया गया है। धन्यवाद। किसी भी तरह मुझे UMAP पसंद है।
ट्विनपेंग्जिन

1
सिफारिश के लिए धन्यवाद! मैं इसे विज़ुअलाइज़ेशन के लिए t-SNE के विकल्प के रूप में जानता था, लेकिन यह महसूस नहीं किया कि यह सामान्य आयामीता में कमी के लिए भी अच्छा था।
टाइमलीटहार्ट

1

बस इस स्थिति में आने वाले लोग UMAP को पर्याप्त रूप से कुशल नहीं पाते हैं, यहाँ कुछ अन्य तकनीकें हैं जो मुझे आईं जो और भी अधिक कुशल हैं (लेकिन उच्च गुणवत्ता के रूप में नहीं):

  • यादृच्छिक प्रोजेक्शन: अनिवार्य रूप से आकार का एक यादृच्छिक मैट्रिक्स बनाते हैंd × m कहाँ पे d मूल आयाम है और mवांछित गतिशीलता है, और कम किए गए डेटासेट का उत्पादन करने के लिए प्रक्षेपण मैट्रिक्स के साथ डेटा मैट्रिक्स को गुणा करें। sklearn.random_projectionइसके कुछ कार्यान्वयन हैं। यदि प्रक्षेपण मैट्रिक्स का आकार और वितरण उपयुक्त है, तो अनुमानित स्थान में बिंदुओं के बीच जोड़ीदार दूरी लगभग संरक्षित है।

  • फ़ीचर हैशिंग: फ़ीचर मान का हैश लें, मापांक लेंm कहाँ पे mवांछित गतिशीलता है। टकराव के मूल्यों का योग लेकर हैश टकराव से निपटा जाता है। आप इसे सुविधाओं के क्रम में फेरबदल के रूप में सोच सकते हैं, डेटा मैट्रिक्स को ऊर्ध्वाधर स्लाइस की एक श्रृंखला में विभाजित कर सकते हैं, और उन सभी को एक साथ तत्व रूप से जोड़ सकते हैं। विरल डेटा के लिए, टकराव बहुत दुर्लभ हैं। sklearn.feature_extraction.FeatureHasherएक कार्यान्वयन है जो (मेरा मानना ​​है) केवल स्ट्रिंग इनपुट पर काम करता है; मुझे लगता है कि यह आमतौर पर बैग-ऑफ-वर्ड्स टेक्स्ट स्टाइल डेटा के लिए उपयोग किया जाता है।

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