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

জাভাতে ডিরিচলেট প্রক্রিয়া মিশ্রণ মডেল সহ ক্লাস্টারিং

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

আপডেট: Datumbox মেশিন লার্নিং ফ্রেমওয়ার্ক এখন ওপেন সোর্স এবং বিনামূল্যে ডাউনলোড. জাভাতে ডিরিচলেট প্রসেস মিক্সচার মডেলের বাস্তবায়ন দেখতে com.datumbox.framework.machinelearning.clustering প্যাকেজটি দেখুন।

জাভাতে ডিরিচলেট প্রক্রিয়া মিশ্রণ মডেল বাস্তবায়ন

কোডটি গিবস স্যাম্পলারের সাথে ডিরিচলেট প্রক্রিয়া মিশ্রণ মডেলটি প্রয়োগ করে এবং ম্যাট্রিক্স লাইব্রেরি হিসাবে অ্যাপাচি কমন্স ম্যাথ 3.3 ব্যবহার করে। এটি GPLv3 এর অধীনে লাইসেন্সপ্রাপ্ত তাই এটি ব্যবহার করতে, এটিকে সংশোধন করতে এবং এটিকে অবাধে পুনরায় বিতরণ করতে নির্দ্বিধায় এবং আপনি এখান থেকে জাভা বাস্তবায়ন ডাউনলোড করতে পারেন গিটহাব. উল্লেখ্য যে আপনি পূর্ববর্তী 5টি নিবন্ধে ক্লাস্টারিং পদ্ধতির সমস্ত তাত্ত্বিক অংশ এবং উত্স কোডে বাস্তবায়নের জন্য বিস্তারিত Javadoc মন্তব্যগুলি খুঁজে পেতে পারেন৷

নীচে আমরা কোডে একটি উচ্চ স্তরের বিবরণ তালিকাভুক্ত করি:

1. ডিপিএমএম ক্লাস

ডিপিএমএম একটি বিমূর্ত শ্রেণী এবং বিভিন্ন মডেলের জন্য একটি ভিত্তির মতো কাজ করে, প্রয়োগ করে চাইনিজ রেস্তোরাঁ প্রক্রিয়া এবং থাকে সংকুচিত গিবস স্যাম্পলার. এটিতে পাবলিক মেথড ক্লাস্টার() রয়েছে যা পয়েন্টের তালিকা হিসাবে ডেটাসেট গ্রহণ করে এবং ক্লাস্টার বিশ্লেষণ সম্পাদনের জন্য দায়ী। ক্লাসের অন্যান্য দরকারী পদ্ধতি হল getPointAssignments() যা ক্লাস্টারিং সম্পূর্ণ হওয়ার পরে ক্লাস্টার অ্যাসাইনমেন্টগুলি পুনরুদ্ধার করতে ব্যবহৃত হয় এবং getClusterList() যা চিহ্নিত ক্লাস্টারগুলির তালিকা পেতে ব্যবহৃত হয়। DPMM স্ট্যাটিক নেস্টেড অ্যাবস্ট্রাক্ট ক্লাস ক্লাস্টার ধারণ করে; এটিতে পয়েন্টগুলির পরিচালনা এবং পোস্টেরিয়র পিডিএফের অনুমান সম্পর্কিত বেশ কয়েকটি বিমূর্ত পদ্ধতি রয়েছে যা ক্লাস্টার অ্যাসাইনমেন্টের অনুমানের জন্য ব্যবহৃত হয়।

2. গাউসিয়ান ডিপিএমএম ক্লাস

গাউসিয়ানডিপিএমএম হল ডিরিচলেট মাল্টিভেরিয়েট নরমাল মিক্সচার মডেলের বাস্তবায়ন এবং ডিপিএমএম ক্লাস প্রসারিত করে। এটিতে গাউসিয়ান অনুমানের অধীনে সম্ভাব্যতা অনুমান করার জন্য প্রয়োজনীয় সমস্ত পদ্ধতি রয়েছে। তাছাড়া এতে স্ট্যাটিক নেস্টেড ক্লাস ক্লাস্টার রয়েছে যা DPMM.Cluster ক্লাসের সমস্ত বিমূর্ত পদ্ধতি প্রয়োগ করে।

3. মাল্টিনমিয়াল ডিপিএমএম ক্লাস

মাল্টিনমিয়াল ডিপিএমএম ডিরিচলেট-মাল্টিনমিয়াল মিক্সচার মডেল বাস্তবায়ন করে এবং ডিপিএমএম ক্লাস প্রসারিত করে। একইভাবে GaussianDPMM ক্লাসের মতো, এতে মাল্টিনমিয়াল-ডিরিচলেট অনুমানের অধীনে সম্ভাব্যতা অনুমান করার জন্য প্রয়োজনীয় সমস্ত পদ্ধতি রয়েছে এবং এতে স্ট্যাটিক নেস্টেড ক্লাস ক্লাস্টার রয়েছে যা DPMM.Cluster-এর বিমূর্ত পদ্ধতি প্রয়োগ করে।

4. SRS ক্লাস

SRS ক্লাস একটি ফ্রিকোয়েন্সি টেবিল থেকে সরল র্যান্ডম স্যাম্পলিং সঞ্চালনের জন্য ব্যবহৃত হয়। এটি পুনরাবৃত্ত প্রক্রিয়ার প্রতিটি ধাপে নতুন ক্লাস্টার অ্যাসাইনমেন্ট অনুমান করতে গিবস স্যাম্পলার দ্বারা ব্যবহৃত হয়।

5. পয়েন্ট ক্লাস

পয়েন্ট ক্লাস একটি টিপল হিসাবে কাজ করে যা তার আইডি সহ রেকর্ডের ডেটা সংরক্ষণ করে।

6. Apache Commons Math Lib

Apache Commons Math 3.3 lib ম্যাট্রিক্স গুণের জন্য ব্যবহৃত হয় এবং এটি আমাদের বাস্তবায়নের একমাত্র নির্ভরতা।

7. DPMME উদাহরণ ক্লাস

এই ক্লাসে জাভা ইমপ্লিমেন্টেশন ব্যবহার করার উদাহরণ রয়েছে।

জাভা বাস্তবায়ন ব্যবহার করে

কোডের ব্যবহারকারী মডেলের প্রকার এবং হাইপারপ্যারামিটার সহ মিশ্রণ মডেলের সমস্ত পরামিতি কনফিগার করতে সক্ষম। নিম্নলিখিত কোড স্নিপেটে আমরা দেখতে পারি যে কীভাবে অ্যালগরিদম শুরু এবং কার্যকর করা হয়:

List<Point> pointList = new ArrayList<>();
//add records in pointList

//Dirichlet Process parameter
Integer dimensionality = 2;
double alpha = 1.0;

//Hyper parameters of Base Function
int kappa0 = 0;
int nu0 = 1;
RealVector mu0 = new ArrayRealVector(new double[]{0.0, 0.0});
RealMatrix psi0 = new BlockRealMatrix(new double[][]{{1.0,0.0},{0.0,1.0}});

//Create a DPMM object
DPMM dpmm = new GaussianDPMM(dimensionality, alpha, kappa0, nu0, mu0, psi0);

int maxIterations = 100;
int performedIterations = dpmm.cluster(pointList, maxIterations);

//get a list with the point ids and their assignments
Map<Integer, Integer> zi = dpmm.getPointAssignments();

নীচে আমরা একটি সিন্থেটিক ডেটাসেটে অ্যালগরিদম চালানোর ফলাফল দেখতে পাচ্ছি যা 300 ডেটা পয়েন্ট নিয়ে গঠিত। পয়েন্টগুলি মূলত 3টি ভিন্ন ডিস্ট্রিবিউশন দ্বারা তৈরি করা হয়েছিল: N([10,50], I), N([50,10], I) এবং N([150,100], I)।

scatterplot1
চিত্র 1: ডেমো ডেটাসেটের স্ক্যাটার প্লট

10টি পুনরাবৃত্তির জন্য চলার পর অ্যালগরিদমটি নিম্নলিখিত 3টি ক্লাস্টার কেন্দ্র চিহ্নিত করেছে: [10.17, 50.11], [49.99, 10.13] এবং [149.97, 99.81]। অবশেষে যেহেতু আমরা সবকিছুকে বায়েসিয়ান পদ্ধতিতে বিবেচনা করি, তাই আমরা শুধুমাত্র ক্লাস্টার কেন্দ্রগুলির একক বিন্দু অনুমান প্রদান করতে সক্ষম নই বরং তাদের সম্ভাব্যতা বন্টনও ব্যবহার করে সূত্র সমীকরণ.

scatterplot2-হিটম্যাপ
চিত্র 2: ক্লাস্টার কেন্দ্রগুলির সম্ভাব্যতার স্ক্যাটার প্লট

উপরের চিত্রে আমরা সেই সম্ভাবনাগুলি প্লট করি; লাল অঞ্চলগুলি ক্লাস্টারের কেন্দ্র হওয়ার উচ্চ সম্ভাবনা নির্দেশ করে এবং কালো অঞ্চলগুলি কম সম্ভাবনা নির্দেশ করে।

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

আপনি যদি একটি আকর্ষণীয় প্রকল্পে বাস্তবায়ন ব্যবহার করেন তবে আমাদের একটি লাইন ড্রপ করুন এবং আমরা আমাদের ব্লগে আপনার প্রকল্পটি তুলে ধরব। এছাড়াও আপনি যদি নিবন্ধটি পছন্দ করেন, অনুগ্রহ করে একটু সময় নিন এবং টুইটার বা ফেসবুকে শেয়ার করুন।

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

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