आउट-ऑफ-कोर डेटा विश्लेषण विकल्प


18

मैं अब 5 साल के लिए एसएएस पेशेवर का उपयोग कर रहा हूं। मैंने इसे अपने लैपटॉप पर स्थापित किया है और अक्सर 1,000-2,000 चर और सैकड़ों हजारों टिप्पणियों के साथ डेटासेट का विश्लेषण करना पड़ता है।

मैं एसएएस के विकल्पों की तलाश में हूं जो मुझे समान आकार के डेटा सेट पर विश्लेषण करने की अनुमति देता है। मैं उत्सुक हूं कि अन्य लोग इस तरह की स्थितियों के लिए क्या उपयोग करते हैं। यह निश्चित रूप से "बिग डेटा" नहीं है जिस तरह से आज उपयोग किया जाता है। न ही मेरे डेटासेट मेमोरी में रखने के लिए पर्याप्त हैं। मुझे एक समाधान की आवश्यकता है जो हार्ड ड्राइव पर संग्रहीत डेटा पर एल्गोरिदम लागू कर सकता है। ये वो चीजें हैं जिनकी मैंने जांच की है कोई फायदा नहीं हुआ:

  1. आर - बिगमेरी मेमोरी से संग्रहित मैट्रिसेस बना सकते हैं, लेकिन तत्वों को एक ही मोड में होना चाहिए। मैं ऐसे डेटा के साथ काम करता हूं जो चरित्र और संख्यात्मक के बीच लगभग 50/50 का विभाजन है। एफएफ पैकेज मुझे जो चाहिए, उसके करीब हो जाता है, लेकिन मुझे यह समझ में नहीं आता कि कौन सी प्रक्रियाएं इसके अनुकूल हैं। मुझे लगता है कि समर्थन कुछ सीमित है।
  2. पंडों - मैं आर के लिए एक पायथनिक विकल्प के बारे में बहुत उत्साहित था। हालांकि, यह भी स्मृति में डेटा के सभी पकड़ है।
  3. रेवोल्यूशन आर - यह एक बहुत वादा दिखाता है। मेरे पास मेरे होम कंप्यूटर पर एक कॉपी है (यदि आप केगल के लिए साइन अप करते हैं तो मुफ्त) और अभी तक इसे एसएएस के लिए व्यवहार्य विकल्प के रूप में परीक्षण करना है। एसएएस विकल्प के रूप में क्रांति आर पर टिप्पणियाँ बहुत सराहना की जाती हैं।

धन्यवाद

अद्यतन १

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

निकटतम चीजें जो मैं भर में आया हूं, आर के एफएफ पैकेज और पायथन के लिए क्षितिज पर कुछ है जिसे ब्लेज़ कहा जाता है । और फिर भी, ये समस्याएं कई वर्षों से मौजूद हैं, इसलिए विश्लेषकों ने इस समय क्या किया है? वे मेमोरी लिमिट के साथ इन समान मुद्दों को कैसे संभाल रहे हैं? प्रस्ताव पर समाधान के बहुमत लगता है:

  • अधिक RAM प्राप्त करें - यह एक अच्छा समाधान नहीं है, imo। यह एक डेटासेट खोजना आसान है जो रैम को पार कर सकता है फिर भी हार्ड-ड्राइव पर फिट हो सकता है। इसके अलावा, कार्य प्रवाह को उन सभी संरचनाओं को समायोजित करना है जो खोजपूर्ण डेटा विश्लेषण के दौरान बनाई गई हैं।
  • डेटा को सबसेट करें - यह अन्वेषण के लिए ठीक है लेकिन परिणाम और रिपोर्टिंग को अंतिम रूप देने के लिए नहीं। आखिरकार, जो भी प्रक्रियाएँ एक सबसेट पर विकसित की जाती हैं, उन्हें संपूर्ण डेटासेट में (मेरे मामले में, वैसे भी) लागू करना होगा।
  • डेटा के माध्यम से हिस्सा - यह वही है जो मैं उन लोगों से अधिक जानना चाहूंगा जो वास्तव में इस कार्य-प्रवाह को लागू करते हैं। यह कैसे किया जाता है? किस उपकरण के साथ? क्या यह उस तरीके से किया जा सकता है जो उपयोगकर्ता के लिए पारदर्शी हो? (यानी, कुछ ऑन-डिस्क डेटा संरचना बनाएं और फ़्रेम-वर्क हुड के नीचे चैंकिंग का ख्याल रखता है)।

1
64 बिट मशीनों पर स्टाटा के नए संस्करणों को इस आकार के डेटासेट के साथ कोई समस्या नहीं है (क्योंकि इन दिनों 5 जीबी रैम में आसानी से फिट हो जाता है) लेकिन क्या एसएएस के लिए वाणिज्यिक विकल्पों में आपकी कोई दिलचस्पी है या आप केवल एफओएसएस देख रहे हैं?
whuber

1
हां, FOSS समाधान वही हैं जो मैं खोज रहा हूं। मैं इस बात से सहमत हूं कि एक डेटासेट 5 गीगा RAM में फिट हो सकता है, लेकिन इसके लिए खोज डेटा विश्लेषण के दौरान बनाए जाने वाले संचालन और अतिरिक्त डेटा संरचनाओं को भी संभालना होगा। इसे कमर्शियल लैपटॉप के साथ जोड़े जिसमें 4GB की रैम और OS और मेमोरी एरर्स द्वारा खपत की गई ओवरहेड बहुत जल्दी दिखाई दें।
ज़ेलज़नी 7

2
@ ज़ेलज़नी 7: लैपटॉप में एक और 4 जीआईजी जोड़ना इन दिनों बहुत सस्ता होना चाहिए। :)
जिज्ञासु_काट

3
एक अन्य विकल्प डेटा को डेटाबेस (SQL या अन्यथा) में संग्रहीत करना है। अक्सर, एक विश्लेषण के लिए केवल डेटा के सबसेट की आवश्यकता होगी (चर 1:10, लेकिन 1: 1000 नहीं) जो स्मृति में फिट होगा। यदि सबसेट अभी भी मेमोरी से बड़ा है, तो विश्लेषण चंक्स में किया जा सकता है (एक समय में डेटाबेस से डेटा 1000 टिप्पणियों में लोड, उचित रूप से अंत में परिणामों को एक साथ मिलाएं)।
jthetzel

1
यदि आप पहले से ही नहीं हैं, तो एसओ पर बड़े डेटा प्रश्नों, साथ ही सीआरएएन पर उच्च-प्रदर्शन कंप्यूटिंग कार्य दृश्य की समीक्षा करना सुनिश्चित करें ।
jthetzel

जवाबों:


3

यदि आप 500,000 रिकॉर्ड x 2,000 चर पर अधिकतम कर रहे हैं, तो मैं आपके लैपटॉप के लिए RAM पर थोड़ा और पैसा खर्च करूंगा और इसके साथ किया जाऊंगा। यदि आपके पास 16GB है, तो आप संभवतः आर में सीधे बताए गए डेटा सेट को पढ़ सकते हैं। और उस बिंदु पर, आप और अधिक करने में सक्षम होंगे - और बहुत जल्दी .. लेकिन आप कहते हैं कि यह एक विकल्प नहीं है, इसलिए:

R के लिए SQL- आधारित पैकेज देखें। ये आपको बाहरी डेटाबेस से कनेक्ट करने और SQL के माध्यम से उन तालिकाओं को एक्सेस करने की अनुमति देते हैं। चूँकि SQL बहुत सार्वभौमिक है (और R चूंकि ओपन-सोर्स है), यदि आप जॉब बदलते हैं या एसएएस तक पहुंच खो देते हैं, तो आपका कोड खो नहीं जाएगा। स्थापित करने के लिए सबसे आसान बाहरी डेटाबेस है, RSQLiteलेकिन अब तक सबसे तेज़ है MonetDB.R( गति परीक्षण )

आपकी बताई गई समस्या के कुछ अच्छे समाधान हैं, मेरा अनुमान है कि इन सभी में आर शामिल है;)


2

हो सकता है कि यह उन अनुप्रयोगों / समस्याओं के बारे में बहुत अधिक नहीं है जिनके लिए आप लक्ष्य कर रहे हैं, और इसकी विशेषताओं, लेकिन उन एल्गोरिदम और भिन्नताओं के बारे में जो आप उपयोग कर रहे हैं। अधिक संक्षेप में, बड़े डेटा को संभालने के लिए, एसवीएम जैसे लोकप्रिय एल्गोरिदम के स्टोचस्टिक ढाल वंश पर आधारित कई वेरिएंट दिखाई दिए हैं, जो इसे संभालने में सक्षम हैं।

Scikit इस एल्गोरिदम (SVM, kNN, kmeans, ...) में से कुछ के लिए समर्थन प्रदान करता है। मुझे लगता है कि यह अच्छा ग्राफ आपको जल्दी से पता लगाने में मदद कर सकता है, अगर scikit आपको बिल्कुल समझ में आता है।

उम्मीद है की वो मदद करदे

नोट: क्या zelazny7 द्वारा टिप्पणी पर एक उत्तर है

अब मैं तुम्हें समझ गया। तुम जो खोज रहे हो वह पंडों का है । वार्ता अनुभाग देखें। पांडा की वर्कफ़्लो और पांडा की संक्षेप में तुलना करने वाली एक प्रस्तुति है। पांडा आप के माध्यम से विभिन्न स्वरूपों और संभाल BGU फ़ाइलों में डेटा आयात करने देता है HDF5 टेबल एकीकरण। इसके अलावा, आप Scikit इंटरफ़ेस कर सकते हैं।


धन्यवाद! एल्गोरिदम को निश्चित रूप से काम करना होगा on-lineया डेटा को मेमोरी में पढ़ा जाएगा और डिस्क पर वापस लिखा जाएगा। Scikit बहुत अच्छा है और वास्तव में वह है जिसे मैं उपयोग करने के लिए प्यार करता हूं, लेकिन इन एलगोस को लागू करने से पहले अन्वेषण, मुंगिंग और डेटा प्रस्तुत करने के बहुत आवश्यक चरणों के लिए कौन से उपकरण / कार्य-प्रवाह / दृष्टिकोण मौजूद हैं? ये भाषाएं इन चरणों को संभाल सकती हैं, लेकिन मैं वास्तव में किसी ऐसे व्यक्ति से एक वास्तविक उदाहरण की तलाश कर रहा हूं जिसे इन मुद्दों से स्मृति से बाहर निपटना है।
ज़ेलज़नी 7

मैंने अपना उत्तर उस चीज़ के साथ संपादित किया जिसे आप ढूंढ रहे हैं (या इसलिए मेरा मानना ​​है!)
jpmuc

2

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

पंडों या आर का उपयोग करने के अन्य महान कारण हैं, लेकिन मुझे नहीं लगता कि आपको स्मृति सीमाओं के बारे में चिंता करने की आवश्यकता है। यदि आप अपने लैपटॉप पर पर्याप्त मेमोरी फिट नहीं कर सकते हैं, तो पायथन या आर उदाहरण को कहीं और चलाएं और SSH, iPython नोटबुक या RStudio से कनेक्ट करें।


1

ग्राफी उत्कृष्ट है, और विशाल डेटासेट को संभाल सकता है। इसके साथ काम करने में थोड़ा दर्द होता है, लेकिन यह ग्राफिकल और गैर-ग्राफिकल डेटा को संभाल सकता है।


1

मैं हाल ही में SFrames और GraphLab Create में आया था। ये पाइथन के लिए लाइब्रेरी हैं जो उस तरह की कार्यक्षमता प्रदान करते हैं जो आप पीपीआई साइट से खोज रहे हैं: "SFrame एक स्केलेबल, आउट-ऑफ-कोर डेटाफ्रेम है, जो आपको उन डेटासेट के साथ काम करने की अनुमति देता है जो रैम की मात्रा से बड़े हैं। आपके सिस्टम पर। " तो इसे पंडों में डेटा हेरफेर की कार्यक्षमता और एपीआई के रूप में सोचें, लेकिन पुटीन के बिना सभी डेटा पहले मेमोरी में। जहाँ तक मुझे पता है SFrame स्वतंत्र और खुला स्रोत है। दूसरी ओर ग्राफलैब SFrame कार्यक्षमता पर बनाता है जो वर्णनात्मक और भविष्य कहनेवाला (मशीन लर्निंग) एनालिटिक्स को SFrames में संग्रहीत डेटा पर करने के लिए एल्गोरिदम प्रदान करता है। ग्राफलैब क्रिएट क्रिएट फ्री / ओपन सोर्स नहीं है, लेकिन इसका फ्री डेमो लाइसेंस है। किसी भी मामले में, आपके एल्गोरिदम को कितना परिष्कृत होना चाहिए, इस पर निर्भर करते हुए, SFrame आपके लिए पर्याप्त हो सकता है।


-1

क्या आपने "रियल", फोरट्रान जैसी गैर-व्याख्या की गई भाषा पर विचार किया है?

ऐसा लगता है कि अब तक के सुझाव या तो बहुत विक्रेता पर निर्भर हैं या उनकी व्याख्या की गई है। स्मृति गहन अनुप्रयोगों में व्याख्या किए गए तरीके कुख्यात हैं। MatLab "C" की तुलना में किसी भाषा का उच्च स्तर हो सकता है, लेकिन C में मेमोरी हैंडलिंग ऑप्टिमाइज़ेशन से यह 100 गुना तेजी से डेटा सेट को संभाल सकता है जो लाखों गुना बड़ा है।

दोनों "आर" और "पायथन" अद्भुत, उच्च-स्तरीय, तकनीकी रूप से समृद्ध और उच्च उपयोग की जाने वाली भाषाएं हैं। उनकी व्याख्या भी की जाती है।

आप R-on-Hadoop उदाहरणों में से एक पर विचार कर सकते हैं। (Rhipe, अन्य) इसका लाभ यह है कि R (उच्च स्तर, प्रोग्राम में आसान) का अनुवाद MapReduce / Hadoop निर्देशों में करने में सक्षम है। Hadoop एक दिलचस्प गरीब-आदमी को मल्टीप्रोसेसिंग क्लस्टर बना सकता है।

http://www.datadr.org/ <- (Rhipe लिंक)

फोरट्रान को दशकों से विकसित किया जा रहा है। इसमें बहुत कुशल मेमोरी हैंडलिंग, और संकलन है। इसमें कुछ उच्च स्तर के पुस्तकालय भी हैं, इसलिए यह बहुत ही तकनीकी रूप से परिष्कृत संचालन कर सकता है। मैं MatLab में एक खिलौना CFD कर सकता हूं, लेकिन कुछ यथार्थवादी और स्व-कोडित के लिए, मैं "बिग-आयरन" प्रसंस्करण के लिए फोरट्रान का उपयोग करूंगा और डेटा प्रस्तुत / सारांश के लिए MatLab या R जैसी कुछ। कोई भी व्यावसायिक सीएफडी सॉफ्टवेयर नहीं बनाता है जिसका "इंजन" संकलित होने के बजाय व्याख्या की जाती है। कई विक्रेताओं के पास अपने मनीमेकर सीएफडी को सी या फोरट्रान में कोडित किया गया है। एसएएस मूल रूप से सी ( लिंक ) में लिखा गया था ।

फोरट्रान और रिपे सुलभ हैं। मतलूब के पैसे खर्च होते हैं और अगर मेरा काम इसके लिए भुगतान नहीं करता है तो मैं अभी आर या पायथन का उपयोग करूंगा।

अद्यतन:
मेरा बिंदु "संकलित" था। पायथन में साइथन है जो सचमुच (मौलिक) कोड ~ 1000x तेज चला सकता है। इसका मतलब है कि आपके पास ऐसा डेटा हो सकता है जो ~ 1000x बड़ा हो और इसे लगभग एक ही समय में संसाधित करें। साफ काम करने के लिए साइथन को प्राप्त करना एक चुनौती हो सकती है, लेकिन " सेज " जैसे उपकरण इसे अच्छी तरह से लपेटते हैं। Rcpp कथित तौर पर समान है, लेकिन मैं व्यक्तिगत रूप से नहीं जानता कि यह उतना ही विकसित है।

यदि आप इसके बारे में सोचते हैं, तो लगभग सभी चीजों की बुनियादी बातें जो आप वैज्ञानिक कंप्यूटिंग में चलाते हैं, यहां तक ​​कि व्याख्या की गई भाषाओं में भी फोर्ट्रान या संकलित सी। बीएलएएस बीएलएएस है; हर बार जब आप EDA करते हैं तो आप कोड का पुन: आविष्कार नहीं करते हैं । आपकी व्याख्या की गई भाषा उन पुस्तकालयों को बुला रही है, भले ही यह अक्षम रूप से चलता हो।

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


2
आप फोरट्रान जैसी संकलित भाषा के साथ डेटा का अन्वेषण कैसे करते हैं? मेरे लिए व्याख्या की गई भाषाओं की अपील, आरईपीएल है जो समृद्ध आत्मनिरीक्षण प्रदान करती है और मुझे जल्दी से यह जानने की अनुमति देती है कि मैं क्या व्यवहार कर रहा हूं और साथ ही नए पुस्तकालय कार्यों के साथ खेलता हूं जिनसे मैं परिचित नहीं हो सकता।
ज़ेलज़नी 7

1
Rcpp बहुत अच्छी तरह से विकसित है (सिर्फ CRAN पर रिवर्स उपयोग की जाँच करें), लेकिन वास्तव में साइथन के साथ तुलनीय नहीं है। यदि आपके पास कुछ परिभाषित फ़ंक्शन है, तो हाँ आप आर इनपुट ले सकते हैं, इसे Cpp में प्रोसेस कर सकते हैं और डेटा को R में वापस कर सकते हैं। लेकिन आप कभी भी C में पूरी R स्क्रिप्ट को संकलन नहीं करेंगे।
रुसैलपिएरेस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.