হায়ারার্কিক্যাল ক্লাস্টারিং অ্যালগরিদম পাইথন!

উত্স নোড: 1055669

এই নিবন্ধটি একটি অংশ হিসাবে প্রকাশিত হয়েছিল ডেটা সায়েন্স ব্লগাথন

ভূমিকা

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

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

কিন্তু প্রথমে, আমরা শ্রেণিবদ্ধ ক্লাস্টারিংয়ের কিছু গুরুত্বপূর্ণ পদের দিকে নজর দিই।

হায়ারার্কিক্যাল ক্লাস্টারিংয়ের গুরুত্বপূর্ণ শর্তাবলী

সংযোগ পদ্ধতি

যদি ক্লাস্টারে (a) মূল পর্যবেক্ষণ a[0],…,a[|a|1] থাকে এবং (b) মূল বস্তু b[0],…,b[|b|1] ক্লাস্টারে থাকে ( b), তারপরে আমাদের অবশ্যই দুটি ক্লাস্টার (a) এবং (b) এর মধ্যে দূরত্ব গণনা করতে হবে যাতে তাদের (b) একত্রিত করা যায়। ধরা যাক এমন একটি বিন্দু (d) আছে যা কোনো ক্লাস্টারে বরাদ্দ করা হয়নি। ক্লাস্টার (d) থেকে ক্লাস্টার (a) কত দূরে এবং ক্লাস্টার (b) ক্লাস্টার (d) থেকে কত দূরে তা আমাদের বের করতে হবে।

ক্লাস্টারগুলিতে এখন সাধারণত একাধিক পয়েন্ট থাকে, দূরত্ব ম্যাট্রিক্স গণনার জন্য একটি ভিন্ন পদ্ধতির প্রয়োজন হয়। যে পদ্ধতির মাধ্যমে ক্লাস্টারের মধ্যে দূরত্ব, বা পয়েন্ট টু ক্লাস্টার দূরত্ব গণনা করা হয় তা লিঙ্কেজ দ্বারা নির্ধারিত হয়। নিম্নলিখিত কয়েকটি সর্বাধিক ব্যবহৃত লিঙ্কেজ প্রক্রিয়া রয়েছে:

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

গড় সংযোগ — একটি ক্লাস্টারের সমস্ত সদস্য এবং অন্য ক্লাস্টারের সমস্ত সদস্যের মধ্যে দূরত্ব গণনা করা হয়। এর পরে, কোন ক্লাস্টারগুলি একত্রিত হবে তা নির্ধারণ করতে এই দূরত্বগুলির গড় ব্যবহার করা হয়।

সম্পূর্ণ লিঙ্কেজ — ক্লাস্টারগুলির প্রতিটি জোড়ার জন্য, সবচেয়ে ভিন্ন সদস্যদের মধ্যে দূরত্ব গণনা করা হয়, এবং ক্লাস্টারগুলিকে সংক্ষিপ্ততম দূরত্বের উপর ভিত্তি করে একত্রিত করা হয়।

মিডিয়ান লিঙ্কেজ — আমরা গড় সংযোগের অনুরূপভাবে গড় দূরত্বের পরিবর্তে মধ্যম দূরত্ব ব্যবহার করি।

ওয়ার্ড সংযোগ — ভ্যারিয়েন্স পদ্ধতির বিশ্লেষণ ব্যবহার করে ক্লাস্টারগুলির মধ্যে দূরত্ব নির্ধারণ করে।

সেন্ট্রোয়েড লিঙ্কেজ — প্রতিটি ক্লাস্টারের সেন্ট্রোয়েড ক্লাস্টারে নির্ধারিত সমস্ত পয়েন্টের গড় করে গণনা করা হয় এবং ক্লাস্টারের মধ্যে দূরত্ব তারপর এই সেন্ট্রোয়েড ব্যবহার করে গণনা করা হয়।

দূরত্ব গণনা

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

দূরত্ব গণনা

ডেনড্রোগ্রাম

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

উদাহরণ

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

#1 লাইব্রেরি আমদানি করা
np হিসাবে numpy আমদানি করুন matplotlib.pyplot plt হিসাবে pd হিসাবে পান্ডা আমদানি করুন
#2 পান্ডাদের দ্বারা মল_কাস্টমার ডেটাসেট আমদানি করা
dataset = pd.read_csv('Mall_Customers.csv') X = dataset.iloc[:, [3,4]].values

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

#3 ক্লাস্টারের সর্বোত্তম সংখ্যা খুঁজে পেতে ডেনড্রোগ্রাম ব্যবহার করে। # প্রথমে আমরা যা করতে যাচ্ছি তা হ'ল স্কিপি লাইব্রেরি আমদানি করা। scipy হল একটি ওপেন সোর্স # Python লাইব্রেরি যাতে হায়ারার্কিক্যাল ক্লাস্টারিং এবং ডেনড্রোগ্রাম তৈরি করার জন্য টুল রয়েছে। # শুধুমাত্র প্রয়োজনীয় টুল আমদানি করুন। sch হিসাবে scipy.cluster.hierarchy আমদানি করুন 
#আসুন একটি ডেনড্রোগ্রাম ভেরিয়েবল তৈরি করি # লিঙ্কেজ আসলে হায়ারার্কিক্যাল ক্লাস্টারিংয়ের অ্যালগরিদম এবং তারপর #লিংকজে আমাদের নির্দিষ্ট করতে হবে কোন ডেটাতে আমরা প্রয়োগ করব এবং নিযুক্ত করব। এটি হল X ডেটাসেট ডেনড্রোগ্রাম = sch.dendrogram(sch.linkage(X, method = "ward")) plt.title('Dendrogram') plt.xlabel('গ্রাহক') plt.ylabel('ইউক্লিডীয় দূরত্ব') plt। দেখান()

ওয়ার্ড পদ্ধতি হল এমন একটি পদ্ধতি যা প্রতিটি ক্লাস্টারের মধ্যে পার্থক্য কমানোর চেষ্টা করে। এটি প্রায় একই রকম যখন আমরা আমাদের কনুই পদ্ধতির চার্ট প্লট করার জন্য wcss মিনিমাইজ করার জন্য K-মান ব্যবহার করি; একমাত্র পার্থক্য হল wcss-এর পরিবর্তে, আমরা ক্লাস্টারের মধ্যে ভেরিয়েন্টগুলিকে মিনিমাইজ করছি। প্রতিটি ক্লাস্টারের মধ্যে, এটি বৈচিত্র্য। ডেনড্রোগ্রামটি নীচে দেখানো হয়েছে।

ডেন্ডোগ্রাম

গ্রাহকদের x-অক্ষে উপস্থাপিত করা হয়, এবং ক্লাস্টারগুলির মধ্যে ইউক্লিডীয় দূরত্ব y-অক্ষে উপস্থাপন করা হয়। কিভাবে আমরা এই চিত্রের উপর ভিত্তি করে ক্লাস্টারের সেরা সংখ্যা বের করতে পারি? আমরা কোনো অনুভূমিক রেখা অতিক্রম না করেই সবচেয়ে দীর্ঘতম উল্লম্ব দূরত্ব খুঁজে পেতে চাই, যা উপরের চিত্রে লাল ফ্রেমযুক্ত রেখা। চলুন ডায়াগ্রামে লাইনগুলি গণনা করি এবং কতগুলি ক্লাস্টার সেরা তা বের করি। এই ডেটাসেটের জন্য, ক্লাস্টার নম্বর হবে 5।

#4 Mall_Customes ডেটাসেটে অনুক্রমিক ক্লাস্টারিং মানানসই # হায়ারার্কিক্যাল ক্লাস্টারিংয়ের জন্য দুটি অ্যালগরিদম আছে: অ্যাগ্লোমেরেটিভ হায়ারার্কিকাল ক্লাস্টারিং এবং # ডিভিসিভ হায়ারার্কিক্যাল ক্লাস্টারিং। আমরা sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, affinity = 'euclidean', linkage ='ward') থেকে আমাদের # অ্যালগরিদম ক্লাসের জন্য ইউক্লিডীয় দূরত্ব এবং ওয়ার্ড পদ্ধতি বেছে নিই # ক্লাস্টার ভেক্টর তৈরি করার সময় যা প্রতিটি গ্রাহককে জানায় যে গ্রাহক কোন ক্লাস্টারের অন্তর্গত। y_hc=hc.fit_predict(X)
#5 ক্লাস্টারগুলি ভিজ্যুয়ালাইজ করা। এই কোডটি k- মানে ভিজ্যুয়ালাইজেশন কোডের অনুরূপ। #আমরা শুধুমাত্র y_kmeans ভেক্টরের নামকে y_hc তে প্রতিস্থাপন করি শ্রেণীবদ্ধ ক্লাস্টারিং plt.scatter(X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = 'ক্লাস্টার 1') plt.scatter(X[y_hc==1, 0], X[y_hc==1, 1], s=100, c='blue', লেবেল ='Cluster 2') plt.scatter( X[y_hc==2, 0], X[y_hc==2, 1], s=100, c='সবুজ', লেবেল ='ক্লাস্টার 3') plt.scatter(X[y_hc==3, 0] , X[y_hc==3, 1], s=100, c='সায়ান', লেবেল ='ক্লাস্টার 4') plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1 ], s=100, c='magenta', লেবেল ='Cluster 5') plt.title('ক্লাস্টার অফ কাস্টমার (হায়ারার্কিক্যাল ক্লাস্টারিং মডেল)') plt.xlabel('বার্ষিক আয়(k$)') plt.ylabel ('ব্যয় স্কোর(1-100') plt.show()
ক্লাস্টার | হায়ারার্কিক্যাল ক্লাস্টারিং
ক্লাস্টার1(লাল), ক্লাস্টার2 (নীল), ক্লাস্টার3(সবুজ), ক্লাস্টার4(সায়ান), ক্লাস্টার5 (ম্যাজেন্টা)

এই ক্লাস্টারগুলিকে মলের গ্রাহক বিভাগ হিসাবে ভাবা যেতে পারে।

একটি স্ট্যান্ডার্ড হায়ারার্কিক্যাল ক্লাস্টারিং মডেলের জন্য এটিই রয়েছে। ডেটাসেটের পাশাপাশি সমস্ত কোড Github বিভাগে উপলব্ধ।

উপসংহার

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

এন্ডনোট

পড়ার জন্য আপনাকে ধন্যবাদ!
আমি আশা করি আপনি নিবন্ধটি উপভোগ করেছেন এবং আপনার জ্ঞান বৃদ্ধি করেছেন।
আমার সাথে যোগাযোগ বিনা দ্বিধায় দয়া করে on ই-মেইল
কিছু উল্লেখ বা আপনার চিন্তা শেয়ার করতে চান না? নির্দ্বিধায় নীচে মন্তব্য করুন এবং আমি আপনার কাছে ফিরে যাব।

লেখক সম্পর্কে

হার্দিককুমার এম ধদুক
ডেটা বিশ্লেষক | ডিজিটাল ডেটা বিশ্লেষণ বিশেষজ্ঞ | ডেটা সায়েন্স লার্নার
আমার সাথে যোগাযোগ করুন লিঙ্কডইন
আমার সাথে যোগাযোগ করুন গিটহাব

এই নিবন্ধে প্রদর্শিত মিডিয়াগুলি অ্যানালিটিক্স বিদ্যা মালিকানাধীন নয় এবং এটি লেখকের বিবেচনার ভিত্তিতে ব্যবহৃত হয়।

সূত্র: https://www.analyticsvidhya.com/blog/2021/08/hierarchical-clustering-algorithm-python/

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

থেকে আরো বিশ্লেষণ বিদ্যা