মূল content-এ যাও

Mathematics for AI/Vectors/Lesson 05

Vector কী?

Vector হলো সংখ্যার একটা ক্রমবদ্ধ তালিকা, আবার একই সাথে একটা দিক আর দৈর্ঘ্যওয়ালা তীর। একজন ছাত্র, একটা ছবি বা একটা শব্দ, ML-এ সবকিছুই vector। আর category-কে vector বানানোর কৌশল: one-hot encoding।

সময়
20 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

Vector হলো সংখ্যার একটা ক্রমবদ্ধ তালিকা:

v=[3,4]\mathbf{v} = [3, 4]

একে দুইভাবে দেখা যায়, আর দুটো দৃষ্টিভঙ্গিই কাজের:

  1. তালিকা হিসেবে: একটা ছাত্রের [study_hours, attendance] = [12.5, 88]। প্রতিটা অবস্থানের একটা অর্থ আছে।
  2. তীর হিসেবে: মূলবিন্দু (0, 0) থেকে ডানে 3 আর উপরে 4 গেলে যে বিন্দু, সেখানে একটা তীর। এর একটা দিক আর একটা দৈর্ঘ্য আছে।
main.py

সংখ্যার সংখ্যাকে বলে dimension। [3,4][3, 4] হলো 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

main.py

একটা dataset আসলে vector-এর একটা স্তূপ, প্রতি row-এ একটা করে। এই স্তূপকে বলে matrix (Module 3)।

Notation

বই আর paper-এ vector সাধারণত মোটা অক্ষরে (x\mathbf{x}) বা উপরে তীর দিয়ে (x⃗\vec{x}) লেখা হয়। তার ii-তম component হলো xix_i:

x=[x1,x2,…,xn]∈Rn\mathbf{x} = [x_1, x_2, \dots, x_n] \in \mathbb{R}^n

Rn\mathbb{R}^n মানে "nnটা বাস্তব সংখ্যার সব সম্ভাব্য vector"। Math-এ index সাধারণত 1 থেকে শুরু হয়, কিন্তু Python-এ 0 থেকে, তাই x1x_1 হলো 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

+20 XP

students_clean.csv-এর প্রথম ছাত্রের তিনটা নম্বর (math, science, english) দিয়ে একটা NumPy vector v বানাও, ঠিক এই ক্রমে।

তারপর: - dim — vector-টার dimension (কয়টা সংখ্যা), int - science — vector থেকে index দিয়ে বের করা science-এর নম্বর

solution.py

Quiz

  1. Q1Vector [3, 4]-এর dimension কত?
  2. Q2[math, science, english] = [80, 70, 90] আর [70, 80, 90] কি একই vector?
  3. Q3District-কে Dhaka = 1, Sylhet = 2, Chattogram = 3 সংখ্যা দিলে কী সমস্যা?
0/3 answered

Challenge

Challenge

Category থেকে vector — one-hot encoding

+50 XP

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 বানাও।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

pandas আর scikit-learn-এ one-hot encoding এক লাইনের কাজ:

main.py

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।