बिग डेटा पर लॉजिस्टिक रिग्रेशन


9

मेरे पास लगभग 5000 सुविधाओं का डेटा सेट है। उस डेटा के लिए मैंने पहली बार फ़ीचर चयन के लिए ची स्क्वायर टेस्ट का इस्तेमाल किया; उसके बाद, मुझे लगभग १५०० चर मिले जो प्रतिक्रिया चर के साथ महत्व संबंध दर्शाते हैं।

अब मुझे उस पर लॉजिस्टिक रिग्रेशन फिट करने की जरूरत है। मैं R के लिए glmulti पैकेज का उपयोग कर रहा हूं (glmulti package vlm के लिए कुशल सबसेट चयन प्रदान करता है) लेकिन यह एक समय में केवल 30 सुविधाओं का उपयोग कर सकता है, अन्यथा इसका प्रदर्शन नीचे चला जाता है क्योंकि मेरे डेटासेट में पंक्तियों की संख्या लगभग 20000 है।

क्या उपरोक्त समस्याओं को हल करने के लिए कोई अन्य दृष्टिकोण या तकनीक है? यदि मैं उपरोक्त विधि से जाता हूं तो मॉडल को फिट करने में बहुत अधिक समय लगेगा।


8
यदि आप किसी एकल मशीन की स्मृति में अपने डेटासेट को फिट कर सकते हैं, तो मैं इसे "बिग डेटा" समस्या नहीं कहूंगा, विशेष रूप से यदि आप अपने प्रश्न के शीर्षक में ऐसा करते हैं
लॉग ऑन

मैं उपयोग कर रहा हूँ sklearn's LogisticRegressionऔर यह मेरे लैपटॉप पर एक मिनट के बारे में में एक 4000 सुविधाओं, 20,000 पंक्तियों समस्या का हल।
थॉमस अहले

जवाबों:


13

फीचर स्क्रीनिंग करना और फिर जीवित सुविधाओं को एक ऐसी विधि में फीड करना उचित नहीं है, जो यह नहीं समझती है कि पहले कितना डेटा टॉर्चर किया गया था। ऐसी विधि का उपयोग करना बेहतर है जो सभी संभावित विशेषताओं (जैसे, लोचदार नेट) को संभाल सकती है। डेटा कमी का उपयोग करने के बारे में दूसरों के सुझाव भी उत्कृष्ट विचार हैं।


क्या इसका कोई सबूत है? O / w यह फीचर स्क्रीनिंग के रूप में सिर्फ एक अनुमान के रूप में ज्यादा लगता है।
जुबिन

2
दंडित अधिकतम संभावना अनुमान खाते में संदर्भ लेता है, उदाहरण के लिए, लसो में एक चर का प्रतिगमन गुणांक अनुमान छोटा होगा यदि आपने 1000 गैर-चयनित चर को माना जाता है यदि आप 100 गैर-चयनित चर मानते हैं। अन्यथा, चर को एक पक्षपाती तरीके से चुना जाता है और दूसरे चरण में चर को परिष्कृत करके संदर्भ खो देता है।
फ्रैंक हरेल

क्या आप यहाँ पक्षपाती होने के मतलब के बारे में विस्तार से बता सकते हैं? मुझे आश्चर्य हो रहा है, क्योंकि एक तुच्छ अर्थ में लैस्सो हमेशा पक्षपाती होता है, इसलिए आपको एक अतिरिक्त पूर्वाग्रह का उल्लेख करना होगा। इसके अलावा, कुछ उचित गुणों के साथ दो-चरण दृष्टिकोण हैं, जैसे कि pdfs.semanticscholar.org/d90a/…
jmb

2
लैसो शून्य की ओर जानबूझकर पूर्वाग्रहों गुणांक overfitting को रोकने के लिए। अनपेक्षित पैरामीटर अनुमानित मूल्यों को जन्म देते हैं जो बहुत चरम हैं। एक unpenalized मॉडल में फिटिंग "चयनित" चर जरूरत पूर्ववत होगा लैसो पूर्वाग्रह, भविष्यवाणी मूल्यों का बहुत overfitting बनाने।
फ्रैंक हेरेल

10

डेटासेट की गतिशीलता को कम करने के लिए पीसीए का उपयोग करने के लिए एक पहला तरीका है। कुल विचरण के ~ 97% को बनाए रखने की कोशिश करें, इससे काफी मदद मिल सकती है।

एक अन्य विकल्प स्टोचैस्टिक ग्रेडिएंट डिसेंट की तरह कुछ का उपयोग करना है, यह बहुत तेज एल्गोरिथ्म हो सकता है और आर की मेमोरी में फिट होने में सक्षम है।

EDIT: R के साथ एक समस्या यह है कि आप केवल अपनी रैम का उपयोग कर सकते हैं, यदि आपके पास केवल 8 जीबी मेमोरी है तो वह वही है जो आप तक सीमित है। मैं इस के साथ कई समस्याओं में चला गया है और तब से अजगर के scikit- सीखने का उपयोग करने के लिए आगे बढ़ गया है जो बड़े डेटासेट को बेहतर तरीके से संभालता है।

एक बहुत अच्छा चार्ट, जो आपके डेटासेट आकार के आधार पर शुरू करने के लिए स्थानों का कुछ विचार देता है, यहां पाया जा सकता है: http://3.bp.blogspot.com/-dofu6J0sZ8o/UrctKb69QdI/AAAAAAAADfg/79ewPecn5XU/s1600/scikit-learn-flow -chart.jpg

यहाँ छवि विवरण दर्ज करें


8
इस तरह से पीसीए का उपयोग करने के साथ एक बड़ी चिंता यह है कि प्रतिक्रिया चर और स्वतंत्र चर के बीच के सभी संबंध कुल विचरण के 3% में रह सकते हैं जो आप उपेक्षा करते हैं। यह निर्धारित करने के लिए कोई सामान्य तरीका प्रतीत नहीं होता है कि कितने प्रमुख घटकों का उपयोग करना है, या तो, क्योंकि बहुत छोटा घटक स्वयं प्रतिक्रिया के लिए आनुपातिक हो सकता है और इसमें शामिल करने के लिए चर का इष्टतम विकल्प होगा।
whuber

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

मुझे लगता है कि यह एक उपयोगी उत्तर है, लेकिन मुझे लगता है कि ओपी लॉजिस्टिक रिग्रेशन के बारे में पूछ रहा है, न कि फीचर में कमी के बारे में। हो सकता है कि आप प्रश्न के उस भाग को एक संस्करण में संबोधित कर सकें?
लॉग

मुझे यकीन नहीं है कि प्रतिगमन समस्याओं के लिए पीसीए कितना उपयोगी है। मुद्दा यह है: पीसीए इनपुट मैट्रिक्स का सबसे बड़ा एकवचन मान रखता है, लेकिन मैट्रिक्स का छद्म व्युत्क्रम एकवचन मूल्यों को प्रभावित करता है, इसलिए आप वास्तव में मूल मूल्यों में से सबसे छोटा रखना चाहते हैं। डेटा स्केच करना बेहतर हो सकता है: arxiv.org/abs/1411.4357
थॉमस अहले

4

जैसा कि @ फ्रेंक हैरेल ने पहले ही उल्लेख किया है, सभी नेट सुविधाओं ( पी ) के साथ दंडित प्रतिगमन करने के लिए लोचदार नेट या LASSO का उपयोग करते हुए सुविधा चयन के लिए एक अच्छी शुरुआत होगी (एक बस 3500 चर नहीं निकाल सकते क्योंकि वे "सांख्यिकीय महत्वपूर्ण" नहीं हैं) ब्याज के आश्रित चर)। या तो इन तरीकों में से, आर पैकेज का उपयोग किया जा सकता है glmnet

ब्याज के संभावित भविष्यवक्ता चर ( p = 5000) के बीच साझा किए गए रिश्तों को ध्यान में रखने के लिए , मैं पैकेज का उपयोग कर एक यादृच्छिक जंगल चलाने की सलाह randomForestदूंगा और / या संभावित भविष्यवक्ता चर के सापेक्ष महत्व का आकलन करने के लिए पैकेज का उपयोग करते हुए ढाल बढ़ाता हूं। gbmद्विआधारी परिणाम के संबंध में। इस जानकारी के साथ, आप एक और अधिक पारिश्रमिक लॉजिस्टिक प्रतिगमन मॉडल बनाने के लिए बहुत अधिक तैयार होंगे।


3
नहीं, यह तय करने के लिए डेटा ड्रेजिंग करना सही नहीं है कि मॉडल से किस पैरामीटर को हटाया जाए। लोचदार जाल की तरह यादृच्छिक जंगलों का मूल्य है, यह सही मात्रा में संकोचन को शामिल करता है। इस तरह से पाए जाने वाले चरों के एक सबसेट के साथ शुरुआत करना, जो नकाबपोश नहीं थाYपूर्वाग्रह पैदा करेगा।
फ्रैंक हरेल

1

मुझे लगता है कि आप आर तक सीमित नहीं हैं, क्योंकि यह एक बड़ी डेटा समस्या है जो आपको शायद नहीं होनी चाहिए। आप एमएललिब की कोशिश कर सकते हैं , जो अपाचे स्पार्क की स्केलेबल मशीन लर्निंग लाइब्रेरी है।

अमरीका की एक मूल जनजाति Spark , बदले में, इन-मेमोरी लार्ज-स्केल डेटा प्रोसेसिंग के लिए एक तेज़ और सामान्य इंजन है। ये एक Hadoop ढांचे पर काम करते हैं जो सरल प्रोग्रामिंग मॉडल का उपयोग करके कंप्यूटर के समूहों में बड़े डेटा सेटों के वितरित प्रसंस्करण के लिए अनुमति देता है। इसे एकल सर्वरों से लेकर हजारों मशीनों तक, प्रत्येक स्थानीय गणना और भंडारण की पेशकश करने के लिए डिज़ाइन किया गया है।

ध्यान दें कि 'हजारों मशीनें' वैकल्पिक (!) है, आप इसे अपने स्थानीय कार्य / होम डेस्कटॉप पर भी सेट कर सकते हैं।

एमएललिब पर वापस जा रहे हैं, यह बॉक्स के नीचे एल्गोरिदम के साथ आता है:

  • K- साधन क्लस्टरिंग K- साधनों के साथ || प्रारंभ।
  • L1- और L2- नियमित रैखिक प्रतिगमन।
  • L1- और L2- नियमित रूप से लॉजिस्टिक प्रतिगमन।
  • वैकल्पिक रेटिंग्स कम से कम सहयोगी फ़िल्टरिंग, स्पष्ट रेटिंग या अंतर्निहित प्रतिक्रिया के साथ।
  • Naive Bayes बहुराष्ट्रीय वर्गीकरण।
  • स्टोचैस्टिक ग्रेडिएंट डिसेंट।

यदि आप नियमित रूप से बड़े डेटा के साथ काम कर रहे हैं, तो आपको एक Hadoop समाधान अपनाने की आवश्यकता हो सकती है।


0

आप Vowpal Wabbit: Vowpal Wabbit आज़मा सकते हैं । यह बहुत बड़े डेटासेट और बहुत बड़ी संख्या में सुविधाओं के साथ अच्छी तरह से काम करता है।

वेबसाइट के अनुसार:

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

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