क्लोजर बनाम आर: डेटा विश्लेषण के लिए फायदे और नुकसान


39

निकट भविष्य में आर सीखने की मेरी योजना थी। एक और सवाल पढ़ते हुए मुझे क्लूजुर के बारे में पता चला। अब मुझे नहीं पता कि क्या करना है।

मुझे लगता है कि मेरे लिए R का एक बड़ा फायदा यह है कि इकोनॉमिक्स में कुछ लोग इसका उपयोग करते हैं, जिसमें मेरा एक सुपरवाइजर भी शामिल है (हालाँकि दूसरे ने कहा: R से दूर रहो!)। क्लजुरे का एक फायदा यह है कि यह लिस्प-आधारित है, और जैसा कि मैंने Emacs सीखना शुरू कर दिया है और मैं अपने स्वयं के अनुकूलन लिखने के लिए उत्सुक हूं, यह उपयोगी होगा (हाँ, मुझे पता है कि क्लीजुर और एलीस्प लिस्प की अलग-अलग बोलियाँ हैं, लेकिन वे हैं दोनों लिस्प और इस तरह से मैं कल्पना करता हूं)।

मैं यह नहीं पूछ सकता कि कौन सा बेहतर है, क्योंकि मुझे पता है कि यह बहुत व्यक्तिगत है, लेकिन क्या कोई मुझे क्लोजर एक्स आर के फायदे (या फायदे) दे सकता है, खासकर व्यावहारिक रूप से? उदाहरण के लिए, कौन सा सीखना आसान होना चाहिए, कौन सा अधिक लचीला या अधिक शक्तिशाली है, जिसके पास अधिक पुस्तकालय, अधिक समर्थन, अधिक उपयोगकर्ता, आदि हैं?

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


10
यदि आप आर का स्वाद लेते हैं, तो यह अत्यधिक संभावना है कि आप MATLAB (मेरे मामले में) से इस्तीफा दे देंगे।

IMO, यह सामुदायिक विकी होना चाहिए (भाषा "बनाम" प्रकार प्रश्न बहुत व्यक्तिपरक हैं)।
शेन

यह निश्चित रूप से प्रोग्रामिंग भाषाओं से संबंधित प्रश्न है और इसे स्टैक ओवरफ्लो पर पूछा जाना चाहिए।
शार्प

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

5
@ शेर्पी, @ शेन आइएमओ इस हद तक यह उपकरण के बारे में एक प्रश्न है, इसलिए यह स्वीकार्य है।

जवाबों:


27

मुझे यह कहने से शुरू करें कि मैं दोनों भाषाओं से प्यार करता हूं: आप या तो गलत नहीं हो सकते हैं, और वे निश्चित रूप से डेटा विश्लेषण करने के लिए सी ++ या जावा जैसी चीज से बेहतर हैं।

बुनियादी डेटा विश्लेषण के लिए मैं आर (विशेष रूप से प्लाई के साथ) का सुझाव दूंगा। IMO, R, Clojure की तुलना में सीखना थोड़ा आसान है, हालाँकि यह पूरी तरह से स्पष्ट नहीं है क्योंकि Clojure लिस्प पर आधारित है और इसमें कई शानदार लिस्प संसाधन उपलब्ध हैं (जैसे SICP )। क्लॉज्योर में कम कीवर्ड हैं, लेकिन पुस्तकालयों को स्थापित करने और उनके साथ काम करने में बहुत मुश्किल है। इसके अलावा, ध्यान रखें कि R (या S) काफी हद तक स्कीम से निकला है, इसलिए इसका उपयोग करते समय आपको लिस्प ज्ञान से लाभ होगा।

सामान्य रूप में:

R का मुख्य लाभ CRAN (2461 से अधिक पैकेज और गिनती) पर समुदाय है। निकट भविष्य में कुछ भी इसकी तुलना नहीं करेगा, यहां तक ​​कि मैटलैब जैसे व्यावसायिक अनुप्रयोग भी नहीं।

क्लोजर का जेवीएम पर चलने का बड़ा फायदा है जिसका अर्थ है कि यह किसी भी जावा आधारित लाइब्रेरी का तुरंत उपयोग कर सकता है।

मैं जोड़ूंगा कि मैंने कुछ समय पहले आर / क्लोजर / इंकेटर से संबंधित एक बात आर को दी थी, इसलिए आप इसे ब्याज के रूप में पा सकते हैं। इसे बनाने के आसपास मेरे अनुभव में, क्लोजर साधारण ऑपरेशन के लिए आमतौर पर आर की तुलना में धीमा था।


11

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

मैंने केवल क्लजुरे की भाषा चश्मा पढ़ा है, और यह सुंदर और साफ है। यह एक प्राकृतिक तरीके से समानांतरकरण और पैमाने के मुद्दों को संबोधित करता है। और अगर आपके पास कुछ बुनियादी जावा या ओओपी ज्ञान है, तो आप बड़ी संख्या में उच्च-गुणवत्ता वाले जावा पुस्तकालयों से लाभ उठा सकते हैं।

क्लोजर के साथ मेरा जो मुद्दा है, वह हालिया वन-मैन (R.Hickey) ऑपरेशन है, इसलिए 1) बहुत जोखिम भरा 2) बहुत अपरिपक्व 3) आला गोद लेने के साथ। उत्साही, जल्दी गोद लेने वाले, सीएस / एमएल के लोग जो नई चीजों को आजमाना चाहते हैं। एक उपयोगकर्ता के लिए जो एक भाषा को अंत के साधन के रूप में देखता है और जिसे बहुत मजबूत कोड की आवश्यकता होती है जिसे दूसरों के साथ साझा किया जा सकता है, स्थापित भाषाएं एक सुरक्षित विकल्प लगती हैं। बस पता है कि तुम कौन हो


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

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

जब मैंने पहली बार सुना, तो मुझे 2011 में क्लोजर के बारे में ऐसी ही चिंता थी। मैं अब नहीं हूं, 2014 में। क्लजुरे और इसका समुदाय काफी परिपक्व है, और यह आश्चर्यजनक रूप से लोकप्रिय है (आखिरकार, यह एक गैर-ऊ, कार्यात्मक, लिस्प) है। हालांकि, मुझे नहीं लगता कि इंकान्टर कभी भी आर की संख्या पैकेज में पकड़ लेगा (आमतौर पर, यदि आप इसके बारे में सोच सकते हैं, तो यह पहले से ही हो चुका है)। JRI Java-R इंटरफ़ेस पर आधारित एक Clojure पुस्तकालय Rincanter है, लेकिन मुझे यकीन नहीं है कि यह उपयोग करना कितना आसान है।
मंगल

5

अद्यतन (अगस्त 2014): नीचे दिए गए R संस्करण 3.0.0 के रूप में @gappy टिप्पणियों के रूप में सीमा अधिक है और इसका मतलब है कि आर बड़े डेटासेट को संभालने में सक्षम है।

यहां एक डेटा बिंदु है: आर में "बड़ा डेटा सीलिंग" है , यह जानने के लिए उपयोगी है कि क्या आप विशाल डेटा सेट के साथ काम करने की योजना बनाते हैं।

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


1
आर भी आलसी मूल्यांकन किया है।

3
@mbq: आपकी टिप्पणी गलत है। आलसी एक फ़ंक्शन परिभाषा में चर का मूल्यांकन करता है लेकिन "आलस्य" सामान्य व्यवहार नहीं है। फ़ंक्शन में देरी हो गई है। () दुभाषिया को चर के असाइनमेंट के साथ आलसी होने के लिए बताने के लिए मौजूद है, लेकिन दुभाषिया मूल्यांकन करने के बाद किसी भी डेटा संरचना को उस चर के लिए इंगित करता है, चाहे उसे मूल्यांकन करने की आवश्यकता है या नहीं। इसके अलावा, वाणिज्यिक आर कंपनी रेवोल्यूशन एनालिटिक्स को "बड़े डेटा" विश्लेषण में आर का उपयोग करने के लिए अपने विपणन का समर्थन करने के लिए एक इटेरेटर ऑब्जेक्ट बनाना था।
जोश हेमन

मुझे लगता है कि इस उत्तर को अद्यतन किया जाना चाहिए। आर 3.0.0 के बाद से, आर करता नहीं 2 ^ 31-1 तत्व की एक सीमा अब और नहीं है। किसी सरणी के प्रत्येक आयाम पर सीमा 2 ^ 63-1 (मेरा मानना ​​है) और 2 ^ 31-1 नहीं है । यह स्मृति में बड़ी वस्तुओं के लिए अनुकूल बनाता है।
gappy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.