নতুন ওপেন সোর্স মেশিন লার্নিং ফ্রেমওয়ার্ক জাভা প্ল্যাটোব্লকচেইন ডেটা ইন্টেলিজেন্সে লেখা। উল্লম্ব অনুসন্ধান. আ.

জাভাতে লেখা নতুন ওপেন সোর্স মেশিন লার্নিং ফ্রেমওয়ার্ক

আমি ঘোষণা করতে পেরে খুশি যে Datumbox মেশিন লার্নিং ফ্রেমওয়ার্ক এখন GPL 3.0 এর অধীনে ওপেন সোর্স করা হয়েছে এবং আপনি এর কোড ডাউনলোড করতে পারেন গিটহাব!

এই ফ্রেমওয়ার্ক কি?

সার্জারির Datumbox মেশিন লার্নিং ফ্রেমওয়ার্ক জাভাতে লেখা একটি ওপেন সোর্স ফ্রেমওয়ার্ক যা মেশিন লার্নিং মডেল এবং পরিসংখ্যানগত অ্যাপ্লিকেশনগুলির দ্রুত বিকাশকে সক্ষম করে। এটি সেই কোড যা বর্তমানে Datumbox API কে পাওয়ার আপ করে। ফ্রেমওয়ার্কের মূল ফোকাস হল প্রচুর সংখ্যক মেশিন লার্নিং অ্যালগরিদম এবং পরিসংখ্যান পদ্ধতি অন্তর্ভুক্ত করা এবং ছোট-মাঝারি আকারের ডেটাসেটগুলি পরিচালনা করতে সক্ষম হওয়া। যদিও কাঠামোটি বিভিন্ন ক্ষেত্র থেকে মডেলগুলির বিকাশে সহায়তা করার লক্ষ্য রাখে, এটি এমন সরঞ্জামও সরবরাহ করে যা প্রাকৃতিক ভাষা প্রক্রিয়াকরণ এবং পাঠ্য বিশ্লেষণ অ্যাপ্লিকেশনগুলিতে বিশেষভাবে কার্যকর।

কি ধরনের মডেল/অ্যালগরিদম সমর্থিত?

কাঠামোটি বিভিন্ন স্তরে বিভক্ত যেমন মেশিন লার্নিং, পরিসংখ্যান, গণিত, অ্যালগরিদম এবং ইউটিলিটি। তাদের প্রত্যেকটি ক্লাসের একটি সিরিজ প্রদান করে যা মেশিন লার্নিং মডেল প্রশিক্ষণের জন্য ব্যবহৃত হয়। দুটি সবচেয়ে গুরুত্বপূর্ণ স্তর হল পরিসংখ্যান এবং মেশিন লার্নিং স্তর।

পরিসংখ্যান স্তর বর্ণনামূলক পরিসংখ্যান গণনা করার জন্য ক্লাস প্রদান করে, বিভিন্ন ধরণের স্যাম্পলিং সম্পাদন করে, সাধারণত ব্যবহৃত সম্ভাব্যতা বন্টন থেকে CDF এবং PDF অনুমান করে এবং 35 টিরও বেশি প্যারামেট্রিক এবং নন-প্যারামেট্রিক পরীক্ষা সম্পাদন করে। ব্যাখ্যামূলক ডেটা বিশ্লেষণ, নমুনা এবং বৈশিষ্ট্য নির্বাচন করার সময় এই ধরনের ক্লাসগুলি সাধারণত প্রয়োজনীয়।

মেশিন লার্নিং লেয়ারটি ক্লাসিফিকেশন, রিগ্রেশন, ক্লাস্টার অ্যানালাইসিস, টপিক মডেলিং, ডাইমেনশনালিটি রিডাকশন, ফিচার সিলেকশন, এনসেম্বল লার্নিং এবং রেকমেন্ডার সিস্টেম সহ অনেক সমস্যায় ক্লাস ব্যবহার করা যায়। এখানে কিছু সমর্থিত অ্যালগরিদম রয়েছে: LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, Hierarchical Clustering, Dirichlet Process Mixture Models, Softmax Regression, Ordinal Regression, Linear Regression, stepwise regression এবং PCA.

Datumbox Framework VS Mahout VS Scikit-Learn

মাহুত এবং স্কিট-লার্ন উভয়ই দুর্দান্ত প্রকল্প এবং তাদের উভয়েরই সম্পূর্ণ আলাদা লক্ষ্য রয়েছে। Mahout শুধুমাত্র একটি খুব সীমিত সংখ্যক অ্যালগরিদম সমর্থন করে যা সমান্তরাল করা যেতে পারে এবং এইভাবে বিগ ডেটা পরিচালনা করতে Hadoop-এর ম্যাপ-রিডুস ফ্রেমওয়ার্ক ব্যবহার করে। অন্যদিকে Scikit-Learn অনেক সংখ্যক অ্যালগরিদম সমর্থন করে কিন্তু এটি বিপুল পরিমাণ ডেটা পরিচালনা করতে পারে না। তাছাড়া এটি পাইথনে তৈরি করা হয়েছে, যা প্রোটোটাইপিং এবং সায়েন্টিফিক কম্পিউটিং এর জন্য একটি দুর্দান্ত ভাষা কিন্তু সফটওয়্যার ডেভেলপমেন্টের জন্য আমার ব্যক্তিগত পছন্দের নয়।

Datumbox Framework দুটি সমাধানের মাঝখানে বসে। এটি প্রচুর পরিমাণে অ্যালগরিদম সমর্থন করার চেষ্টা করে এবং এটি জাভাতে লেখা হয়। এর মানে হল যে এটি প্রোডাকশন কোডে সহজে অন্তর্ভুক্ত করা যেতে পারে, মেমরি খরচ কমাতে এটি সহজে টুইক করা যেতে পারে এবং এটি রিয়েল টাইম সিস্টেমে ব্যবহার করা যেতে পারে। অবশেষে যদিও বর্তমানে Datumbox Framework মাঝারি আকারের ডেটাসেটগুলি পরিচালনা করতে সক্ষম, এটি বড় আকারের ডেটাসেটগুলি পরিচালনা করার জন্য এটিকে প্রসারিত করার পরিকল্পনার মধ্যে রয়েছে।

এটা কতটা স্থিতিশীল?

ফ্রেমওয়ার্কের প্রাথমিক সংস্করণ (0.3.x পর্যন্ত) 2013 সালের আগস্ট এবং সেপ্টেম্বরে তৈরি করা হয়েছিল এবং সেগুলি পিএইচপি (হ্যাঁ!) তে লেখা হয়েছিল। মে এবং জুন 2014 এর সময় (সংস্করণ 0.4.x), ফ্রেমওয়ার্কটি জাভাতে পুনর্লিখন করা হয়েছিল এবং অতিরিক্ত বৈশিষ্ট্যগুলির সাথে উন্নত করা হয়েছিল। উভয় শাখাই ডাটামবক্স API সহ বাণিজ্যিক অ্যাপ্লিকেশনগুলিতে ব্যাপকভাবে পরীক্ষা করা হয়েছিল। বর্তমান সংস্করণটি 0.5.0 এবং এটি ফ্রেমওয়ার্কের প্রথম সর্বজনীন আলফা সংস্করণ হিসাবে প্রকাশ করার জন্য যথেষ্ট পরিপক্ক বলে মনে হচ্ছে৷ এটি বলার পরে, এটা মনে রাখা গুরুত্বপূর্ণ যে ফ্রেমওয়ার্কের কিছু কার্যকারিতা অন্যদের তুলনায় আরও পুঙ্খানুপুঙ্খভাবে পরীক্ষা করা হয়। তাছাড়া যেহেতু এই সংস্করণটি আলফা, তাই আপনার ভবিষ্যতের রিলিজে ব্যাপক পরিবর্তন আশা করা উচিত।

কেন আমি এটা লিখেছি এবং কেন আমি এটা ওপেন সোর্স?

মেশিন লার্নিং এবং NLP-এর সাথে আমার সম্পৃক্ততা 2009 থেকে শুরু হয় যখন আমি WebSEOAnalytics.com-এর সহ-প্রতিষ্ঠা করি। তারপর থেকে আমি বিভিন্ন প্রকল্প এবং অ্যাপ্লিকেশনের জন্য বিভিন্ন মেশিন লার্নিং অ্যালগরিদমগুলির বাস্তবায়ন বিকাশ করছি। দুর্ভাগ্যবশত মূল বাস্তবায়নের বেশিরভাগই খুব সমস্যা-নির্দিষ্ট ছিল এবং সেগুলি খুব কমই অন্য কোনো সমস্যায় ব্যবহার করা যেতে পারে। আগস্ট 2013-এ আমি একটি ব্যক্তিগত প্রকল্প হিসাবে Datumbox শুরু করার এবং NLP এবং পাঠ্য শ্রেণিবিন্যাসের ক্ষেত্রে ফোকাস করে মেশিন লার্নিং মডেলগুলি বিকাশের জন্য সরঞ্জাম সরবরাহ করে এমন একটি কাঠামো তৈরি করার সিদ্ধান্ত নিয়েছি। আমার লক্ষ্য ছিল একটি ফ্রেমওয়ার্ক তৈরি করা যা ভবিষ্যতে দ্রুত মেশিন লার্নিং মডেল তৈরির জন্য পুনরায় ব্যবহার করা হবে, এটিকে এমন প্রকল্পগুলিতে অন্তর্ভুক্ত করা যা মেশিন লার্নিং উপাদানগুলির প্রয়োজন হয় বা এটি একটি পরিষেবা (মেশিন লার্নিং অ্যাজ এ সার্ভিস) হিসাবে অফার করে।

এবং এখানে আমি এখন, কোডের কয়েকটি লাইন পরে, প্রকল্পটি ওপেন সোর্সিং। কেন? সৎ উত্তর হল এই মুহুর্তে, "আসুন একটি নতুন স্টার্ট আপ" যাত্রার মধ্য দিয়ে যাওয়া আমার পরিকল্পনার মধ্যে নেই। একই সময়ে আমি অনুভব করেছি যে আমার হার্ড ডিস্কে কোডটি রাখা আমার ভবিষ্যতের প্রয়োজনে অর্থপূর্ণ নয়। তাই একমাত্র যৌক্তিক জিনিসটি ছিল ওপেন-সোর্স করা। 🙂

ডকুমেন্টেশন?

আপনি যদি পূর্ববর্তী দুটি অনুচ্ছেদ পড়ে থাকেন, তাহলে আপনি সম্ভবত এটি আসছে দেখতে পাবেন। যেহেতু ফ্রেমওয়ার্কটি অন্যদের সাথে ভাগ করে নেওয়ার কথা মাথায় রেখে তৈরি করা হয়নি, তাই ডকুমেন্টেশনটি দুর্বল/অবিস্তৃত। বেশিরভাগ ক্লাস এবং পাবলিক পদ্ধতি সঠিকভাবে মন্তব্য করা হয় না এবং কোডের আর্কিটেকচার বর্ণনা করে এমন কোন নথি নেই। সৌভাগ্যবশত সমস্ত শ্রেণীর নাম স্ব-ব্যাখ্যামূলক এবং ফ্রেমওয়ার্ক প্রতিটি পাবলিক পদ্ধতি এবং অ্যালগরিদমের জন্য JUnit পরীক্ষা প্রদান করে এবং এইগুলি কোডটি কীভাবে ব্যবহার করতে হয় তার উদাহরণ হিসাবে ব্যবহার করা যেতে পারে। আমি আশা করি যে সম্প্রদায়ের সাহায্যে আমরা একটি সঠিক ডকুমেন্টেশন তৈরি করব, তাই আমি আপনার উপর নির্ভর করছি!

বর্তমান সীমাবদ্ধতা এবং ভবিষ্যত উন্নয়ন

সফ্টওয়্যারের প্রতিটি অংশের মতো (এবং বিশেষ করে আলফা সংস্করণে ওপেন-সোর্স প্রকল্পগুলি), Datumbox Machine Learning Framework এর নিজস্ব অনন্য এবং আরাধ্য সীমাবদ্ধতা নিয়ে আসে। আসুন তাদের মধ্যে খনন করা যাক:

  1. ডকুমেন্টেশন: আগেই উল্লেখ করা হয়েছে, ডকুমেন্টেশন খারাপ।
  2. মাল্টিথ্রেডিং নেই: দুর্ভাগ্যবশত ফ্রেমওয়ার্ক বর্তমানে মাল্টিথ্রেডিং সমর্থন করে না। অবশ্যই আমাদের মনে রাখা উচিত যে সমস্ত মেশিন লার্নিং অ্যালগরিদম সমান্তরাল হতে পারে না।
  3. কোড উদাহরণ: যেহেতু ফ্রেমওয়ার্কটি সবেমাত্র প্রকাশিত হয়েছে, আপনি JUnit পরীক্ষার আকারে ফ্রেমওয়ার্ক দ্বারা প্রদত্ত কোড ব্যতীত ওয়েবে কোনো কোড উদাহরণ খুঁজে পাবেন না।
  4. কোড স্ট্রাকচার: যেকোন বড় প্রকল্পের জন্য একটি কঠিন আর্কিটেকচার তৈরি করা সবসময়ই চ্যালেঞ্জিং, যখন আপনাকে মেশিন লার্নিং অ্যালগরিদমগুলির সাথে মোকাবিলা করতে হবে যেগুলি উল্লেখযোগ্যভাবে আলাদা (তত্ত্বাবধানে শিক্ষা, অ-তত্ত্বাবধানহীন শিক্ষা, মাত্রা হ্রাস অ্যালগরিদম ইত্যাদি)।
  5. মডেল অধ্যবসায় এবং বড় ডেটা সংগ্রহ: বর্তমানে মডেলগুলিকে প্রশিক্ষিত করা যায় এবং হয় ডিস্কের ফাইলগুলিতে বা মঙ্গোডিবি ডাটাবেসে সংরক্ষণ করা যায়। প্রচুর পরিমাণে ডেটা পরিচালনা করতে সক্ষম হওয়ার জন্য, অন্যান্য সমাধানগুলি অবশ্যই তদন্ত করতে হবে। উদাহরণ স্বরূপ ম্যাপডিবি প্রশিক্ষণের সময় ডেটা এবং প্যারামিটার সংরক্ষণের জন্য একটি ভাল প্রার্থী বলে মনে হচ্ছে। তাছাড়া যেকোন ৩টি মুছে ফেলা জরুরীrd পার্টি লাইব্রেরি যা বর্তমানে মডেলগুলির অধ্যবসায় পরিচালনা করে এবং একটি ভাল শুষ্ক এবং মডুলার সমাধান বিকাশ করে।
  6. নতুন অ্যালগরিদম/পরীক্ষা/মডেল: এমন অনেক দুর্দান্ত কৌশল রয়েছে যা বর্তমানে সমর্থিত নয় (বিশেষত সময় সিরিজ বিশ্লেষণের জন্য)।

দুর্ভাগ্যবশত উপরের সবগুলোই অনেক বেশি কাজ এবং সময় খুব কম। সেজন্য আপনি যদি এই প্রকল্পে আগ্রহী হন, এগিয়ে যান এবং উপরের যেকোনো একটির সাথে আমাকে একটি হাত দিন৷ তাছাড়া আমি এমন লোকদের কাছ থেকে শুনতে চাই যাদের ওপেন-সোর্সিং মাঝারি-বড় প্রকল্পের অভিজ্ঞতা আছে এবং কীভাবে সেগুলি পরিচালনা করতে হয় সে সম্পর্কে কোনও টিপস দিতে পারে। উপরন্তু আমি যেকোন সাহসী আত্মার কাছে কৃতজ্ঞ থাকব যারা কোডটি দেখার সাহস করবে এবং কিছু ক্লাস বা পাবলিক পদ্ধতি নথিভুক্ত করবে। শেষ কিন্তু অন্তত নয় যদি আপনি আকর্ষণীয় কিছুর জন্য ফ্রেমওয়ার্ক ব্যবহার করেন, অনুগ্রহ করে আমাকে একটি লাইন ড্রপ করুন বা একটি ব্লগ পোস্টের সাথে শেয়ার করুন৷

অবশেষে আমি আমার বন্ধু এবং সুপার-নিনজা-জাভা-ডেভেলপার, এই প্রকল্পটি লেখার সময় আমাকে সহ্য করার জন্য আমার ভালবাসা কিরিয়াকিকে ধন্যবাদ জানাতে চাই এলিফথেরিওস বাম্পালেটাকিস গুরুত্বপূর্ণ জাভা সমস্যাগুলির সাথে সাহায্য করার জন্য এবং আপনি প্রকল্পে জড়িত হওয়ার জন্য। আমি আপনার মন্তব্যের জন্য উন্মুখ.

সময় স্ট্যাম্প:

থেকে আরো ডেটাবক্স