जावा प्लेटोब्लॉकचैन डेटा इंटेलिजेंस में लिखा गया नया ओपन-सोर्स मशीन लर्निंग फ्रेमवर्क। लंबवत खोज। ऐ.

जावा में लिखा गया नया ओपन-सोर्स मशीन लर्निंग फ्रेमवर्क

मुझे यह घोषणा करते हुए खुशी हो रही है कि Datumbox Machine Learning Framework अब GPL 3.0 के तहत खुला है और आप इसके कोड को डाउनलोड कर सकते हैं Github!

यह फ्रेमवर्क क्या है?

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

किस प्रकार के मॉडल / एल्गोरिदम का समर्थन किया जाता है?

मशीन लर्निंग, सांख्यिकी, गणित, एल्गोरिदम और यूटिलिटीज जैसे कई परतों में रूपरेखा को विभाजित किया गया है। उनमें से प्रत्येक एक श्रृंखला प्रदान करता है जो प्रशिक्षण मशीन सीखने के मॉडल के लिए उपयोग किया जाता है। दो सबसे महत्वपूर्ण परतें सांख्यिकी और मशीन लर्निंग परत हैं।

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

मशीन लर्निंग लेयर प्रदान करता है कि क्लासेस को क्लासिफिकेशन, रिग्रेशन, कलस्टर एनालिसिस, टॉपिक मॉडलिंग, डायमेंशनलिटी रिडक्शन, फ़ीचर सिलेक्शन, एन्सेम्बल लर्निंग और रिकमेन्डर सिस्टम सहित कई समस्याओं में इस्तेमाल किया जा सकता है। यहाँ समर्थित एल्गोरिदम में से कुछ हैं: LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, Hierarchical Clustering, Dirichlet Process Mixture मॉडल, Softaxax Regression, Ordinal Regression, Linear Regression, Stepwise Regression, PCA और बहुत कुछ।

डाटंबॉक्स फ्रेमवर्क वीएस महावत वीएस स्किटिट-लर्न

Mahout और Scikit-Learn दोनों ही महान परियोजनाएं हैं और दोनों के लक्ष्य बिल्कुल अलग हैं। महावत केवल बहुत सीमित संख्या में एल्गोरिदम का समर्थन करता है जिसे समानांतर किया जा सकता है और इस प्रकार बिग डेटा को संभालने के लिए हैडोप के मैप-रिड्यूस फ्रेमवर्क का उपयोग किया जाता है। दूसरी ओर स्किकिट-लर्न बड़ी संख्या में एल्गोरिदम का समर्थन करता है, लेकिन यह बड़ी मात्रा में डेटा को संभाल नहीं सकता है। इसके अलावा इसे पायथन में विकसित किया गया है, जो प्रोटोटाइपिंग और वैज्ञानिक कम्प्यूटिंग के लिए एक महान भाषा है, लेकिन सॉफ़्टवेयर विकास के लिए मेरा व्यक्तिगत पसंदीदा नहीं है।

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

कितना स्थिर है?

फ्रेमवर्क के शुरुआती संस्करण (0.3.x तक) 2013 के अगस्त और सितंबर में विकसित किए गए थे और उन्हें PHP (yeap।) में लिखा गया था। मई और जून 2014 (संस्करण 0.4.x) के दौरान, जावा में ढांचे को फिर से लिखा गया और अतिरिक्त सुविधाओं के साथ बढ़ाया गया। दोनों शाखाओं में डाटाम्बॉक्स एपीआई सहित वाणिज्यिक अनुप्रयोगों में भारी परीक्षण किया गया था। वर्तमान संस्करण 0.5.0 है और यह फ्रेमवर्क के पहले सार्वजनिक अल्फा संस्करण के रूप में रिलीज़ होने के लिए पर्याप्त परिपक्व है। यह कहने के बाद, यह ध्यान रखना महत्वपूर्ण है कि फ्रेमवर्क की कुछ कार्यात्मकता दूसरों की तुलना में अधिक अच्छी तरह से परीक्षण की जाती है। इसके अलावा जब से यह संस्करण अल्फ़ा है, आपको भविष्य के रिलीज़ पर भारी बदलाव की उम्मीद करनी चाहिए।

मैंने इसे क्यों लिखा और मैंने इसे क्यों खोला?

जब मैंने WebSEOAnalytics.com की सह-स्थापना की, मशीन लर्निंग और एनएलपी के साथ मेरी भागीदारी 2009 तक रही। तब से मैं विभिन्न परियोजनाओं और अनुप्रयोगों के लिए विभिन्न मशीन लर्निंग एल्गोरिदम के कार्यान्वयन को विकसित कर रहा हूं। दुर्भाग्य से अधिकांश मूल कार्यान्वयन बहुत समस्या-विशिष्ट थे और उनका उपयोग शायद ही किसी अन्य समस्या में किया जा सकता है। अगस्त 2013 में मैंने एक निजी परियोजना के रूप में डाटुम्बोक्स शुरू करने और एक ढांचा विकसित करने का फैसला किया जो एनएलपी और पाठ वर्गीकरण के क्षेत्र में ध्यान केंद्रित करने वाले मशीन लर्निंग मॉडल के लिए उपकरण प्रदान करता है। मेरा लक्ष्य एक ऐसी रूपरेखा का निर्माण करना था जो भविष्य में मशीन सीखने के मॉडल को विकसित करने के लिए भविष्य में पुन: उपयोग किया जाएगा, इसे उन परियोजनाओं में शामिल किया जाएगा जिन्हें मशीन सीखने के घटकों की आवश्यकता होती है या इसे सेवा के रूप में पेश किया जाता है (मशीन लर्निंग एक सेवा के रूप में)।

और अब मैं यहाँ हूँ, बाद में कोड की कई पंक्तियाँ, प्रोजेक्ट को ओपन-सोर्स करना। क्यों? ईमानदार जवाब यह है कि इस बिंदु पर, "चलो एक नई शुरुआत करें" यात्रा के माध्यम से जाने की मेरी योजना के भीतर नहीं है। उसी समय मैंने महसूस किया कि भविष्य में मुझे इसकी आवश्यकता होने पर कोड को मेरी हार्ड डिस्क पर रखने का कोई मतलब नहीं है। इसलिए केवल तार्किक बात यह थी कि इसे ओपन-सोर्स किया जाए। 🙂

प्रलेखन?

यदि आप पिछले दो पैराग्राफ पढ़ते हैं, तो आपको संभवतः इसे आते हुए देखना चाहिए। चूंकि फ्रेमवर्क को ध्यान में रखते हुए विकसित नहीं किया गया था कि मैं इसे दूसरों के साथ साझा करूंगा, प्रलेखन खराब / अस्तित्वहीन है। अधिकांश कक्षाओं और सार्वजनिक तरीकों पर ठीक से टिप्पणी नहीं की गई है और कोड की वास्तुकला का वर्णन करने वाला कोई दस्तावेज नहीं है। सौभाग्य से सभी वर्ग नाम स्व-व्याख्यात्मक हैं और रूपरेखा हर सार्वजनिक विधि और एल्गोरिथ्म के लिए JUnit परीक्षण प्रदान करती है और इनका उपयोग कोड के उपयोग के उदाहरण के रूप में किया जा सकता है। मुझे उम्मीद है कि समुदाय की मदद से हम एक उचित दस्तावेज बनाएंगे, इसलिए मैं आप पर भरोसा कर रहा हूं!

वर्तमान सीमाएँ और भविष्य का विकास

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

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

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

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

समय टिकट:

से अधिक दातुनॉक्स