Mathematics for AI/Vectors/Lesson 05
Vector কী?
Vector হলো সংখ্যার একটা ক্রমবদ্ধ তালিকা, আবার একই সাথে একটা দিক আর দৈর্ঘ্যওয়ালা তীর। একজন ছাত্র, একটা ছবি বা একটা শব্দ, ML-এ সবকিছুই vector। আর category-কে vector বানানোর কৌশল: one-hot encoding।
- সময়
- 20 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
Vector হলো সংখ্যার একটা ক্রমবদ্ধ তালিকা:
একে দুইভাবে দেখা যায়, আর দুটো দৃষ্টিভঙ্গিই কাজের:
- তালিকা হিসেবে: একটা ছাত্রের [study_hours, attendance] = [12.5, 88]। প্রতিটা অবস্থানের একটা অর্থ আছে।
- তীর হিসেবে: মূলবিন্দু (0, 0) থেকে ডানে 3 আর উপরে 4 গেলে যে বিন্দু, সেখানে একটা তীর। এর একটা দিক আর একটা দৈর্ঘ্য আছে।
সংখ্যার সংখ্যাকে বলে dimension। হলো 2-dimensional। দুই-তিন dimension আঁকা যায়, কিন্তু অঙ্ক ১০০০ dimension-এও ঠিক একইভাবে কাজ করে।
কেন দরকার?
ML-এ সবকিছুই vector:
| জিনিস | Vector হিসেবে | Dimension |
|---|---|---|
| একজন ছাত্র | [study_hours, attendance, math, ...] | feature-এর সংখ্যা |
| 28×28-এর একটা সাদাকালো ছবি | ৭৮৪টা pixel-এর উজ্জ্বলতা | 784 |
| একটা শব্দ (embedding) | অর্থ বহন করা সংখ্যা | শত থেকে হাজারের ঘরে |
| Model-এর weight | প্রতিটা feature-এর গুরুত্ব | feature-এর সংখ্যা |
একবার কোনো জিনিস vector হয়ে গেলে vector-এর সব অঙ্ক তার উপর প্রয়োগ করা যায়: যোগ, দূরত্ব, মিল। এই module-এর বাকি lesson-গুলো সেই অঙ্ক নিয়ে।
NumPy-তে vector
একটা dataset আসলে vector-এর একটা স্তূপ, প্রতি row-এ একটা করে। এই স্তূপকে বলে matrix (Module 3)।
Notation
বই আর paper-এ vector সাধারণত মোটা অক্ষরে () বা উপরে তীর দিয়ে () লেখা হয়। তার -তম component হলো :
মানে "টা বাস্তব সংখ্যার সব সম্ভাব্য vector"। Math-এ index সাধারণত 1 থেকে শুরু হয়, কিন্তু Python-এ 0 থেকে, তাই হলো x[0]।
Category-কে vector বানানো
district-এর মতো লেখাকে সংখ্যা বানানোর সহজ কিন্তু ভুল উপায় হলো Dhaka = 1, Sylhet = 2... এতে model ভাববে Sylhet হলো "দুই গুণ Dhaka"। সঠিক উপায় হলো one-hot encoding: প্রতিটা মানের জন্য একটা dimension।
Barishal Chattogram Dhaka Sylhet
"Dhaka" → [ 0, 0, 1, 0 ]
"Sylhet" → [ 0, 0, 0, 1 ]
Challenge-এ এটা নিজে বানাবে।
Exercise
Exercise
ছাত্র থেকে vector
students_clean.csv-এর প্রথম ছাত্রের তিনটা নম্বর (math, science, english) দিয়ে একটা NumPy vector v বানাও, ঠিক এই ক্রমে।
তারপর:
- dim — vector-টার dimension (কয়টা সংখ্যা), int
- science — vector থেকে index দিয়ে বের করা science-এর নম্বর
Quiz
Challenge
Challenge
Category থেকে vector — one-hot encoding
Model শুধু সংখ্যা বোঝে, কিন্তু district হলো লেখা ("Dhaka", "Sylhet", ...)। সমাধান one-hot encoding: প্রতিটা সম্ভাব্য মানের জন্য একটা dimension, আর যেটা সত্যি সেখানে 1, বাকি সব 0।
one_hot(values) লেখো:
- categories — সব আলাদা মান, বর্ণানুক্রমে sorted list
- matrix — NumPy array, shape (মানের সংখ্যা, category-র সংখ্যা), প্রতিটা row একটা one-hot vector (int)
- Return (categories, matrix)
উদাহরণ: ["b", "a", "b"] → ["a", "b"], [[0, 1], [1, 0], [0, 1]]
তারপর students_clean.csv-এর district column দিয়ে districts, D বানাও।
বাস্তবে কোথায় ব্যবহার হয়?
pandas আর scikit-learn-এ one-hot encoding এক লাইনের কাজ:
Production pipeline-এ সাধারণত scikit-learn-এর OneHotEncoder ব্যবহার করা হয়। এটা training-এর সময় category-গুলো মনে রাখে, তাই নতুন data-তেও ঠিক একই column তৈরি হয়। একটা category যদি অনেক বেশি মান নেয় (যেমন হাজার হাজার শব্দ), তখন one-hot খুব লম্বা আর বেশিরভাগই 0 হয়ে যায়। সেখানেই আসে embedding: ছোট, ঘন (dense) vector যেটা অর্থও বহন করে।
Interview প্রশ্ন
- Beginner: Vector কী? ML-এ একটা data point কীভাবে vector হয়?
- Intermediate: One-hot encoding কী? Label encoding (1, 2, 3)-এর সমস্যা কী?
- Advanced: উচ্চ-cardinality category (যেমন ১০,০০০ product ID) কীভাবে encode করবে? One-hot আর embedding-এর trade-off কী?
এরপর কী?
Vector হাতে আছে। এখন এদের নিয়ে অঙ্ক: যোগ, বিয়োগ, কোনো সংখ্যা দিয়ে গুণ। "গড় ছাত্র" কেমন, আর pass করা ছাত্র fail করা ছাত্র থেকে কোন দিকে আলাদা? পরের lesson: Vector যোগ ও scale।