সরাসরি প্রধান সামগ্রীতে চলে যান

আনসুপারভাইজড লার্নিং: K-Means এবং PCA এর সহজ বাস্তবায়ন

Introduction

এই ভিডিওটিতে মূলত মেশিন লার্নিংয়ের একটি গুরুত্বপূর্ণ শাখা 'আনসুপারভাইজড লার্নিং' (Unsupervised Learning) নিয়ে আলোচনা করা হয়েছে। এখানে দেখানো হয়েছে কীভাবে অনেকগুলো বৈশিষ্ট্য বা ফিচার সমৃদ্ধ ডেটা থেকে প্রয়োজনীয় তথ্য বের করে আনা যায় এবং সেগুলোকে গ্রুপ বা ক্লাস্টারে ভাগ করা যায়। বিশেষ করে K-Means অ্যালগরিদম ব্যবহার করে ডেটা গ্রুপিং এবং PCA (Principal Component Analysis) ব্যবহার করে জটিল ডেটাকে সহজ বা কম ডাইমেনশনে নিয়ে আসার বাস্তব উদাহরণ কোডিংয়ের মাধ্যমে বোঝানো হয়েছে।


১. PCA এর মাধ্যমে ডেটার ডাইমেনশন কমানো

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

ভিডিও রেফারেন্স: [03:48:44]

বিস্তারিত: সাধারণত আমাদের ডেটাসেটে অনেকগুলো বৈশিষ্ট্য থাকে (যেমন: দৈর্ঘ্য, প্রস্থ, ক্ষেত্রফল ইত্যাদি)। আমাদের উদাহরণে ৭টি আলাদা ফিচার ছিল। এতগুলো ফিচার একসাথে গ্রাফে প্লট করা বা বোঝা মানুষের জন্য কঠিন। PCA (Principal Component Analysis) হলো এমন একটি টেকনিক যা এই ৭টি ফিচারের সারসংক্ষেপ তৈরি করে মাত্র ২টিতে নামিয়ে আনে। এতে ডেটার মূল বৈশিষ্ট্যগুলো বজায় থাকে কিন্তু তা দেখতে বা বিশ্লেষণ করতে অনেক সহজ হয়। ভিডিওতে দেখা যায়, ২১০টি স্যাম্পলের ৭টি ফিচারকে PCA ব্যবহার করে ২ ডাইমেনশনে রূপান্তর করা হয়েছে।

কোড স্নাইপেট:

Python

# PCA ইমপ্লিমেন্টেশন এবং শেপ চেক করা
print("Original shape:", x.shape) 
# আউটপুট দেখাবে (210, 7) - অর্থাৎ ২১০টি সারি এবং ৭টি কলাম

# PCA ট্রান্সফর্মেশনের পর
print("Transformed shape:", transformed_x.shape)
# আউটপুট দেখাবে (210, 2) - কলাম ৭টি থেকে কমে ২টিতে চলে এসেছে 

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


২. K-Means এবং PCA এর সমন্বয়

PCA করার পর সেই সহজ করা ডেটার ওপর কীভাবে K-Means ক্লাস্টারিং প্রয়োগ করতে হয়, তা এখানে দেখানো হয়েছে।

ভিডিও রেফারেন্স: [03:50:17]

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

কোড স্নাইপেট:

Python

# PCA রেজাল্ট এবং ক্লাস্টার লেবেল দিয়ে নতুন ডেটাফ্রেম তৈরি
import pandas as pd
import numpy as np

# PCA এর ২টা ডাইমেনশন এবং K-Means এর লেবেল একসাথে করা
pca_df = pd.DataFrame(np.hstack([transformed_x, k_means.labels_.reshape(-1, 1)]),
                      columns=['pca1', 'pca2', 'class']) 

ব্যাখ্যা: এখানে hstack ব্যবহার করে আমাদের নতুন ২টা ডাইমেনশন এবং কম্পিউটারের তৈরি করা 'class' বা গ্রুপগুলোকে এক করা হয়েছে।


৩. ফলাফলের তুলনা এবং বিশ্লেষণ

সবশেষে কম্পিউটার যা শিখল তার সাথে আসল বা সত্য (Truth) ডেটার তুলনা করা হয়েছে।

ভিডিও রেফারেন্স: [03:51:28]

বিস্তারিত: আমরা যখন আসল ডেটা এবং আমাদের অ্যালগরিদমের তৈরি করা ডেটাকে গ্রাফে পাশাপাশি রাখি, তখন দেখা যায় যে আনসুপারভাইজড লার্নিং বেশ ভালো কাজ করেছে। যদিও কিছু জায়গায় ডেটা ওভারল্যাপ (একটার ওপর আরেকটা উঠে যাওয়া) করেছে, তবুও অ্যালগরিদমটি কোনো লেবেল বা উত্তর জানা ছাড়াই তিনটি আলাদা ক্যাটাগরি সুন্দরভাবে শনাক্ত করতে পেরেছে। এটিই হলো আনসুপারভাইজড লার্নিংয়ের ম্যাজিক।


আমার বিশ্লেষণ ও চিন্তাভাবনা (Analysis & Perception)

অ্যালগরিদমটি কী অর্জন করতে চেয়েছে? কন্টেন্ট ক্রিয়েটর এখানে দেখাতে চেয়েছেন যে, যদি আমাদের কাছে এমন ডেটা থাকে যার কোনো 'লেবেল' বা 'উত্তর' আমাদের জানা নেই, তবুও মেশিন লার্নিং ব্যবহার করে আমরা সেই ডেটার ভেতরকার প্যাটার্ন খুঁজে বের করতে পারি। PCA এর মাধ্যমে জটিলতাকে কমানো এবং K-Means এর মাধ্যমে গ্রুপিং করা—এই দুইয়ের সমন্বয় ডেটা সায়েন্সে অত্যন্ত কার্যকর।

বাস্তব প্রেক্ষাপট: বাস্তব জীবনে যেমন ই-কমার্স সাইটগুলো তাদের কাস্টমারদের বিভিন্ন গ্রুপে ভাগ করে (কারা বেশি কেনাকাটা করে, কারা ডিসকাউন্ট খোঁজে), সেখানে এই পদ্ধতি দারুণ কাজ করে।

পরামর্শ ও বিকল্প: ১. সহজ ব্যাখ্যা: যদি 'PCA' বুঝতে কঠিন লাগে, তবে ভাবুন এটি একটি বড় গল্পকে ছোট করে সারসংক্ষেপ করার মতো, যেখানে গল্পের মূল ভাব পরিবর্তন হয় না। ২. বিকল্প পদ্ধতি: ডাইমেনশন কমানোর জন্য PCA এর বদলে অনেক সময় t-SNE বা UMAP ব্যবহার করা হয় যা আরও নিখুঁত হতে পারে। ৩. সতর্কতা: K-Means ব্যবহারের সময় 'K' এর মান (কয়টি গ্রুপ হবে) আগে থেকে ঠিক করাটা চ্যালেঞ্জিং হতে পারে। এর জন্য 'Elbow Method' ব্যবহার করা ভালো।

সামগ্রিকভাবে, ভিডিওটি বিগিনারদের জন্য আনসুপারভাইজড লার্নিংয়ের একটি চমৎকার হ্যান্ডস-অন গাইড।

[

Machine Learning for Everybody – Full Course

freeCodeCamp.org · 9.4M views

](http://www.youtube.com/watch?v=i_LwzRVP7bg)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

জাভা ফিডব্যাক এবং স্ট্রাকচার্ড কনকারেন্সি: বিবর্তনের গল্প

Introduction এই ভিডিওর নির্দিষ্ট অংশে জাভা ল্যাঙ্গুয়েজ আর্কিটেক্ট ব্রায়ান গোয়েটজ (Brian Goetz) আলোচনা করেছেন কীভাবে জাভার নতুন ফিচারগুলো তৈরি হয় এবং এতে সাধারণ ডেভেলপারদের মতামতের গুরুত্ব কতটুকু। বিশেষ করে Structured Concurrency -এর মতো জটিল ফিচারগুলো কেন বারবার 'Preview' অবস্থায় থাকে এবং কীভাবে কমিউনিটির ফিডব্যাক সেই ফিচারগুলোকে আরও নিখুঁত করতে সাহায্য করে, তা এখানে সহজভাবে বোঝানো হয়েছে। ১. ভালো ফিডব্যাক আসলে কী? ভিডিও রেফারেন্স: [ 34:53 ] ব্রায়ান গোয়েটজ বলছেন যে, জাভা টিম যখন কোনো নতুন ফিচারের খসড়া (Draft) বা প্রস্তাব (JEP) প্রকাশ করে, তখন তারা এমন কিছু জানতে চায় যা তারা নিজেরা আগে ভাবেনি। বিস্তারিত: একজন ডেভেলপার হিসেবে আমরা যখন কোনো নতুন ফিচার দেখি, আমাদের প্রথম প্রতিক্রিয়া হয় সেটার Syntax বা লেখার ধরন নিয়ে। কিন্তু ব্রায়ানের মতে, "এই লেখাটা কেন এমন হলো?" বা "এটা কোটলিন বা স্কালা-র মতো কেন নয়?"—এই ধরনের ফিডব্যাক খুব একটা কাজে আসে না। আসল দামী ফিডব্যাক হলো সেইটা, যা নতুন কোনো বাস্তব সমস্যা (Edge Case) তুলে ধরে। আমার চিন্তা: আপনি যদি কেবল দ...

[Master Post] Machine Learning for Everybody – Full Course

URL: https://youtu.be/i_LwzRVP7bg?t=0 Title: Machine Learning for Everybody – Full Course Topics:- মেশিন লার্নিংয়ের হাতেখড়ি এবং গুগল কোল্যাব সেটআপ মেশিন লার্নিংয়ের খুঁটিনাটি ও ফিচারের সহজ পাঠ Classification বনাম Regression এবং মডেল ট্রেনিংয়ের সহজ পাঠ মেশিন লার্নিংয়ের জন্য ডেটা তৈরি এবং প্রসেসিং করার সহজ গাইড K-Nearest Neighbors (KNN) থিওরির সহজ পাঠ কে-নিয়ারেস্ট নেইবারস (KNN) ইমপ্লিমেন্টেশন সহজ বাংলায় নেইভ বেইজ থিওরি এবং এর প্রয়োগ: সহজ পাঠ লজিস্টিক রিগ্রেশন: থিওরি ও ইমপ্লিমেন্টেশন SVM থিওরি এবং ইমপ্লিমেন্টেশন সহজ পাঠ নিউরাল নেটওয়ার্ক এবং টেনসরফ্লোর সহজ পাঠ টেনসরফ্লো দিয়ে নিউরাল নেটওয়ার্ক ক্লাসিফিকেশন শেখার সহজ গাইড লিনিয়ার রিগ্রেশন: সহজ কথায় মূল ধারণা ও গণিত লিনিয়ার রিগ্রেশন: সহজ ভাষায় খুঁটিনাটি ও হাতে-কলমে শেখা লিনিয়ার রিগ্রেশন এবং নিউরন মডেলের সহজ পাঠ TensorFlow দিয়ে রিগ্রেশন নিউরাল নেটওয়ার্ক তৈরি - পার্ট ১ টেনসরফ্লো দিয়ে রিগ্রেশন নিউরাল নেটওয়ার্ক তৈরি - পার্ট ২ আনসুপারভাইজড লার্নিং: কে-মিনস ক্লাস্টারিংয়ের সহজ পাঠ Principal C...