R-এ K-means Clustering এবং Hierarchical Clustering
Clustering একটি অপ্রত্যক্ষ (unsupervised) মেশিন লার্নিং টেকনিক, যেখানে ডেটাকে গ্রুপ বা ক্লাস্টারে ভাগ করা হয় এমনভাবে যে প্রতিটি গ্রুপের ভিতরে সদস্যরা আরও বেশি সাদৃশ্যপূর্ণ থাকে, এবং গ্রুপগুলির মধ্যে পার্থক্য অনেক বেশি হয়। দুটি জনপ্রিয় ক্লাস্টারিং টেকনিক হল K-means clustering এবং Hierarchical clustering। R-এ এই দুটি ক্লাস্টারিং পদ্ধতি ব্যবহার করে ডেটাকে ক্লাস্টারে ভাগ করা যায়।
১. K-means Clustering
K-means clustering হল একটি জনপ্রিয় ক্লাস্টারিং অ্যালগরিদম যা ডেটাকে K সংখ্যক ক্লাস্টারে ভাগ করে। এই পদ্ধতিতে আপনি আগে থেকেই ক্লাস্টারের সংখ্যা (K) নির্ধারণ করেন, এবং অ্যালগরিদমটি ক্লাস্টারের মধ্যে সাদৃশ্য অনুযায়ী ডেটা পয়েন্টগুলিকে ক্লাস্টারে ভাগ করে। এটি একটি partitioning-based ক্লাস্টারিং পদ্ধতি।
K-means Clustering এর পদ্ধতি:
- প্রথমে, আপনি ক্লাস্টারের সংখ্যা (K) নির্ধারণ করবেন।
- তারপর, এলোমেলোভাবে K সংখ্যক সেন্ট্রয়েড পয়েন্ট নির্বাচন করা হয়।
- প্রতিটি ডেটা পয়েন্টকে তার কাছের সেন্ট্রয়েডের সাথে অ্যাসাইন করা হয়।
- প্রতিটি ক্লাস্টারের জন্য সেন্ট্রয়েড আবার আপডেট করা হয় (ক্লাস্টারের গড় পয়েন্ট হিসেবে)।
- এই প্রক্রিয়া চলতে থাকে যতক্ষণ না সেন্ট্রয়েড আর পরিবর্তিত হয় না।
উদাহরণ: K-means Clustering
# ডেটা তৈরি
set.seed(123) # রেজাল্ট রিক্রিয়েট করার জন্য
data <- iris[, -5] # Iris ডেটাসেটের প্রথম ৪টি ভেরিয়েবল (যেহেতু 'Species' কলাম বাদ)
# K-means ক্লাস্টারিং প্রক্রিয়া (k = 3)
kmeans_result <- kmeans(data, centers = 3, nstart = 25)
# রেজাল্ট দেখানো
print(kmeans_result)
# ক্লাস্টারগুলি প্লট করা
library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = as.factor(kmeans_result$cluster))) +
geom_point() +
labs(title = "K-means Clustering", color = "Cluster")ব্যাখ্যা:
- এখানে, iris ডেটাসেটের প্রথম চারটি ভেরিয়েবল নিয়ে K-means clustering করা হয়েছে, এবং ক্লাস্টার সংখ্যা ৩ নির্ধারণ করা হয়েছে।
nstart = 25মানে অ্যালগরিদমটি ২৫ বার এলোমেলোভাবে শুরু করবে যাতে সর্বোত্তম ফলাফল পাওয়া যায়।- ক্লাস্টারের রেজাল্ট
kmeans_result$clusterদিয়ে বের করা হয়েছে এবংggplot2ব্যবহার করে ক্লাস্টারগুলিকে ভিজ্যুয়ালাইজ করা হয়েছে।
২. Hierarchical Clustering
Hierarchical clustering একটি ডেটা পয়েন্টের মধ্যে সম্পর্কের উপর ভিত্তি করে ডেটাকে একটি ডেনডোগ্রাম (dendrogram) এর মাধ্যমে হায়ারার্কিক্যাল স্ট্রাকচারে সাজায়। এটি দুই ধরনের হতে পারে:
- Agglomerative Hierarchical Clustering (Bottom-Up Approach): যেখানে শুরুতে প্রতিটি ডেটা পয়েন্ট একটি আলাদা ক্লাস্টার হিসেবে থাকে, এবং পরে ছোট ক্লাস্টারগুলোকে একত্রিত করা হয়।
- Divisive Hierarchical Clustering (Top-Down Approach): এখানে পুরো ডেটাসেট একক ক্লাস্টার হিসেবে শুরু হয় এবং তারপর সেটি ছোট ছোট ক্লাস্টারে ভাগ করা হয়।
Agglomerative Hierarchical Clustering:
এটি সবচেয়ে সাধারণ এবং ব্যবহৃত পদ্ধতি, যেখানে সবগুলো ডেটা পয়েন্ট প্রথমে আলাদা আলাদা ক্লাস্টারে থাকে এবং তারপর এদের মধ্যে সাদৃশ্যের ভিত্তিতে ছোট ক্লাস্টারগুলো একত্রিত করা হয়।
উদাহরণ: Hierarchical Clustering
# ডেটা তৈরি
set.seed(123)
data <- iris[, -5] # Iris ডেটাসেটের প্রথম ৪টি ভেরিয়েবল (Species বাদ)
# ডিস্টেন্স ম্যাট্রিক্স তৈরি
dist_matrix <- dist(data)
# Hierarchical Clustering প্রয়োগ
hclust_result <- hclust(dist_matrix)
# ডেনডোগ্রাম প্লট করা
plot(hclust_result, main = "Hierarchical Clustering Dendrogram")ব্যাখ্যা:
- প্রথমে,
dist()ফাংশন দিয়ে ডেটার মধ্যে Euclidean distance (অথবা অন্য কোনো ডিস্টেন্স মেট্রিক) বের করা হয়। hclust()ফাংশন ব্যবহার করে Agglomerative hierarchical clustering প্রক্রিয়া প্রয়োগ করা হয়।- শেষমেশ,
plot()ফাংশনের মাধ্যমে ডেনডোগ্রাম তৈরি করা হয়, যা ক্লাস্টারিংয়ের স্তরের মধ্যে সম্পর্ক প্রদর্শন করে।
ডেনডোগ্রাম:
ডেনডোগ্রামটি একটি গ্রাফিক্যাল উপস্থাপনা, যেখানে প্রতিটি ডেটা পয়েন্টের ক্লাস্টারিং সম্পর্ক প্রদর্শিত হয় এবং ডেটা পয়েন্টগুলির মধ্যে কিভাবে তারা একত্রিত হয়েছে তা দেখানো হয়। ডেনডোগ্রামের উপরের অংশে ছোট ক্লাস্টারগুলো একত্রিত হয়ে বড় ক্লাস্টারে পরিণত হয়।
K-means এবং Hierarchical Clustering-এর তুলনা
| বৈশিষ্ট্য | K-means Clustering | Hierarchical Clustering |
|---|---|---|
| প্রকৃতি | Partitional (ক্লাস্টারের সংখ্যা K নির্ধারণ) | Hierarchical (ক্লাস্টার গঠন একটি কাঠামোতে) |
| ক্লাস্টার সংখ্যা | পূর্ব নির্ধারিত (K) | ডেটার সংখ্যা অনুযায়ী নির্ধারিত |
| অ্যালগরিদম | K সংখ্যক ক্লাস্টার গঠন করা হয় | ছোট ক্লাস্টারগুলো একত্রিত করা হয় |
| পদ্ধতি | Bottom-Up Approach | Top-Down Approach |
| অপেক্ষার সময় | সাধারণত দ্রুত, কারণ কেবল একটি নির্দিষ্ট সংখ্যা K পরবর্তী ইটারেশন করা হয় | অপেক্ষার সময় বেশি, কারণ ডেনডোগ্রাম গঠন করতে হয় |
| পছন্দের ক্ষেত্র | যখন আপনি জানেন কতটি ক্লাস্টার প্রয়োজন | যখন ক্লাস্টারের সংখ্যা অজানা এবং কাঠামোর মধ্যে সম্পর্ক দেখতে চান |
সারসংক্ষেপ
- K-means clustering একটি দ্রুত এবং দক্ষ পদ্ধতি যা নির্দিষ্ট সংখ্যক ক্লাস্টারে ডেটা ভাগ করে।
- Hierarchical clustering একটি শক্তিশালী পদ্ধতি যা ডেটার সম্পর্কের ভিত্তিতে ডেনডোগ্রাম তৈরি করে এবং পরবর্তীতে ডেটাকে গ্রুপ করে। এটি অনেকটা পিরামিডাল স্ট্রাকচারের মতো কাজ করে।
উপরের পদ্ধতিগুলো ডেটা ক্লাস্টারিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ এবং নির্দিষ্ট পরিস্থিতিতে কার্যকরী হতে পারে।
Read more