📋 বিষয়সূচী (Table of Contents)

01

Classification সমস্যা পরিচিতি

⏱ ১০ মিনিট · Introduction

গল্প দিয়ে শুরু করি 🎭

ধরুন আপনি একজন ডাকঘরের কর্মচারী। রোজ হাজার হাজার চিঠি আসে। কিছু চিঠি জরুরি, কিছু অপ্রয়োজনীয় বিজ্ঞাপনের (Spam)। আপনি প্রতিটি চিঠি দেখে দুটো বাক্সে ভাগ করেন। এটাই Classification! মেশিন লার্নিং এই কাজটা কম্পিউটার দিয়ে অটোমেটিক করে।

🏷️ Classification কী?

Classification হলো ডেটাকে পূর্বনির্ধারিত শ্রেণীতে ভাগ করা। উত্তর সবসময় নির্দিষ্ট কয়েকটি শ্রেণীর একটি।

📊 Binary vs Multi-Class Classification

ধরনশ্রেণী সংখ্যাউদাহরণ
Binary Classification২টি মাত্রSpam/Not Spam, পাস/ফেল, সুস্থ/অসুস্থ
Multi-Class Classification৩টি বা বেশিA/B/C/D গ্রেড, ফুলের প্রজাতি, ভাষা সনাক্তকরণ

📊 বাস্তব জীবনের Classification উদাহরণ

পরিস্থিতিInputOutput (Class)
📧 ইমেইলশব্দ, প্রেরকSpam / Not Spam
🎓 ছাত্রপড়ার ঘণ্টা, উপস্থিতিপাস / ফেল
🏥 রোগীবয়স, রক্তচাপ, লক্ষণঅসুস্থ / সুস্থ
🏦 ঋণআয়, ক্রেডিট স্কোরঅনুমোদিত / প্রত্যাখ্যাত
📱 কাস্টমারব্যবহার, অভিযোগChurn / No Churn
02

কেন আরেকটি Algorithm দরকার?

⏱ ১০ মিনিট · SVM-এর প্রয়োজনীয়তা

সমস্যাটা কোথায়? 🤔

Logistic Regression, KNN, Decision Tree — এগুলো অনেক কাজে ভালো। কিন্তু কিছু পরিস্থিতিতে এগুলো সেরা Decision Boundary দিতে পারে না। বিশেষ করে যখন দুটো শ্রেণী একে অপরের খুব কাছাকাছি থাকে। SVM এই সমস্যার সমাধান করে!

⚠️ আগের Algorithm-এর সীমাবদ্ধতা

Algorithmসীমাবদ্ধতাকখন সমস্যা হয়?
Logistic Regressionশুধু Linear সীমানাডেটা বাঁকা প্যাটার্নে থাকলে
Decision TreeOverfitting সমস্যাডেটা কম হলে
KNNবড় Dataset-এ ধীরলক্ষ লক্ষ ডেটায়

কাছাকাছি শ্রেণী — কোথায় সীমানা টানব?

সমস্যা: শ্রেণী কাছাকাছি কোন সীমানাটা সঠিক? সমাধান: SVM সেরা সীমানা দেয়! সর্বোচ্চ Margin সহ সীমানা ✅
03

SVM কী? — মূল ধারণা

⏱ ১০ মিনিট · What is SVM?

গল্প: ক্লাসরুমের দড়ি 🪢

কল্পনা করুন, একটি ক্লাসরুমে দুটো দল দাঁড়িয়ে আছে — একটি দল বাঁ দিকে, আরেকটি দল ডান দিকে। আপনার কাজ হলো তাদের মাঝে একটি দড়ি টানানো — এমনভাবে যাতে দড়িটা দুই দল থেকে যত দূরে সম্ভব থাকে। এটাই SVM-এর মূল ধারণা! দড়ি হলো Decision Boundary, আর দড়ি থেকে সবচেয়ে কাছের দলের মানুষরা হলো Support Vectors

📖 SVM-এর সংজ্ঞা

Support Vector Machine (SVM) একটি Classification Algorithm যা দুটো শ্রেণীর মধ্যে সবচেয়ে বড় সম্ভাব্য "ফাঁকা জায়গা" (Margin) তৈরি করে একটি Decision Boundary আঁকে। এই Boundary দুই শ্রেণীকে সর্বোত্তমভাবে আলাদা করে।

🌉 তিনটি সহজ উপমা

উপমাদুই শ্রেণীDecision BoundaryMargin
🛣️ রাস্তার বিভাজকআসা ও যাওয়ার গাড়িমাঝের রেখারেখা থেকে গাড়ির দূরত্ব
⚽ ফুটবল মাঠদুই দলের খেলোয়াড়মাঝের রেখাদুই দলের মধ্যবর্তী অঞ্চল
🌾 খামারের বেড়াদুটো পাশের খামারবেড়াবেড়া থেকে ফসলের দূরত্ব

💡 "Support Vector Machine" নামটি কেন?

Support Vectors: দুই শ্রেণীর মধ্যে যে ডেটা পয়েন্টগুলো Decision Boundary-র সবচেয়ে কাছে থাকে — তারা Boundary-কে "Support" বা ধরে রাখে।

Machine: কম্পিউটার অ্যালগরিদম।

পুরো নাম মানে: "এমন একটি মেশিন যা Support Vector-গুলো ব্যবহার করে সিদ্ধান্ত নেয়।"

04

Decision Boundary বোঝা

⏱ ১০ মিনিট · ভালো vs খারাপ Boundary

📖 Decision Boundary কী?

Decision Boundary হলো সেই কাল্পনিক রেখা (বা সমতল) যা দুটো শ্রেণীকে আলাদা করে। এই রেখার এক পাশে পড়লে "পাস", আরেক পাশে পড়লে "ফেল"।

খারাপ, ভালো ও সেরা Decision Boundary

❌ খারাপ Boundary একদলের কাছেই! 🔶 মাঝারি Boundary মাঝামাঝি কিন্তু সেরা নয় ✅ SVM-এর সেরা Boundary সর্বোচ্চ Margin! ✅
05

Margin — সবচেয়ে গুরুত্বপূর্ণ ধারণা

⏱ ১৫ মিনিট · Maximum Margin

গল্প: নিরাপদ দূরত্ব 🛡️

ধরুন আপনি একটি সরু রাস্তায় হাঁটছেন। দুই পাশে কাদা। আপনি ঠিক মাঝ দিয়ে হাঁটবেন, যাতে কাদায় পড়ার ঝুঁকি সবচেয়ে কম থাকে। SVM একই কাজ করে — Decision Boundary-কে এমন জায়গায় রাখে যাতে উভয় শ্রেণী থেকে দূরত্ব সর্বোচ্চ হয়। এই দূরত্বটাই হলো Margin

📐 Margin কী?

Margin হলো Decision Boundary থেকে উভয় শ্রেণীর সবচেয়ে কাছের ডেটা পয়েন্টের দূরত্বের সমষ্টি। SVM সবসময় এই Margin সর্বোচ্চ করার চেষ্টা করে।

ছোট, মাঝারি ও সর্বোচ্চ Margin-এর তুলনা

❌ ছোট Margin Margin খুব কম নতুন ডেটায় ভুল হবে! 🔶 মাঝারি Margin মাঝামাঝি Margin ✅ সর্বোচ্চ Margin (SVM) ↔ Max Margin সর্বোচ্চ Margin → সেরা! ✅

🎯 কেন বড় Margin ভালো?

বড় Margin মানে সিদ্ধান্তের বেশি নিশ্চয়তা। নতুন ডেটা যদি সামান্য এদিক-ওদিক থাকে, তবুও সঠিক শ্রেণীতে পড়বে। ছোট Margin-এর সীমানা সামান্য পরিবর্তনেই ভুল করে।

06

Support Vectors কী?

⏱ ১৫ মিনিট · মূল ধারণা

গল্প: দেয়ালের ভিত্তিপ্রস্তর 🧱

একটি বড় দেয়াল দাঁড়িয়ে আছে। দেয়ালের নিচে অনেক ইট আছে, কিন্তু দেয়ালকে আসলে ধরে রাখে ভিত্তির মাত্র কিছু গুরুত্বপূর্ণ পাথর। বাকিগুলো সরিয়ে নিলেও দেয়াল পড়বে না। SVM-এও একইভাবে — হাজার ডেটা পয়েন্টের মধ্যে মাত্র কয়েকটি "Support Vector" আছে, যারা Decision Boundary ঠিক করে। বাকি ডেটা সরিয়ে দিলেও Boundary বদলাবে না!

📐 Support Vectors কী?

Support Vectors হলো প্রতিটি শ্রেণীর সেই ডেটা পয়েন্টগুলো যেগুলো Decision Boundary থেকে সবচেয়ে কাছে থাকে। এরাই Boundary-র অবস্থান নির্ধারণ করে।

Support Vectors চিহ্নিতকরণ

Decision Boundary শ্রেণী A (Purple ●) শ্রেণী B (Coral ■) = Support Vector (সীমানা নির্ধারণকারী) ← Margin →

🔑 মূল বিষয়

Support Vectors সরিয়ে নিলে Decision Boundary বদলে যায়। কিন্তু অন্য ডেটা পয়েন্ট সরিয়ে নিলেও Boundary একই থাকে। SVM তাই অনেক দক্ষ — শুধু কয়েকটি গুরুত্বপূর্ণ পয়েন্ট মনে রাখলেই চলে!

Data থেকে SVM Prediction — Step by Step

⏱ ~১৫ মিনিট · Interactive Pipeline Visual

এক লাইনে পুরো গল্প

Training data দাও → Hyperplane (w·x+b=0) → Margin linesSupport VectorsMax marginsign(w·x+b) → পাস/ফেল predict।

Part 17-এর ৮ ছাত্রের dataset — canvas + math panel-এ প্রতিটি ধাপ live দেখানো হয়।

SVM ML Pipeline — Step by Step
পরের ধাপ চাপুন — slider/drag দিয়ে query ও C live বদলান; math + canvas তাৎক্ষণিক update
Data8 points
Hyperplanew·x+b=0
Margin±1 lines
SVG★, H★
Max Margin2/‖w‖
Predictsign(score)
সব চিহ্ন এক নজরে (Math Dictionary)
চিহ্ননামকী করেউদাহরণ
x₁Study hoursFeature 1 — পড়ার ঘণ্টা5.2
x₂AttendanceFeature 2 — উপস্থিতি %75
w, bWeights, BiasHyperplane সংজ্ঞায়কw=[1,0], b=−5
scorew·x+bDecision function — 0 = boundary0.2
SVSupport VectorMargin-এ সবচেয়ে কাছের pointG★, H★
CSoft-marginবড় C = কম slack, সঙ্কুচিত band1.0
ŷPredicted Class+1 পাস, −1 ফেল+1
ধাপ ৬-এ canvas-এ click/drag করুন — score ও ŷ live update
ধাপ ১: Training Data ৮টি ছাত্র — বেগুনি = ফেল (−1), কোরাল = পাস (+1)
ধাপ1 / 6
Margin
Support Vectors
Prediction

💡 এক লাইনে মনে রাখো

Data → w·x+b=0 → margin ±1 → support vectors → max margin → sign(score) → ŷ · SVM = শুধু সীমানার কাছের point মনে রাখে

07

Mathematical Intuition

⏱ ১০ মিনিট · সহজ গণিত

📐 সহজ ধারণা থেকে সূত্রে যাওয়া

একটি সরলরেখার সমীকরণ আমরা সবাই চিনি: y = mx + c। SVM-এর Decision Boundary-ও একটি রেখা (বা সমতল), তবে সেটা আলাদাভাবে লেখা হয়।

📊 উপাদানগুলো বোঝা

উপাদানSymbolসহজ ভাষায়উদাহরণ
Featuresx₁, x₂Input ডেটার মানপড়ার ঘণ্টা, উপস্থিতি
Weightsw₁, w₂প্রতিটি Feature-এর গুরুত্বপড়া বেশি গুরুত্বপূর্ণ → w বড়
Biasbরেখার অবস্থান পরিবর্তনশুরুর অবস্থান
Outputw·x + bডেটা কোন পাশে আছে?ধনাত্মক = ক্লাস +1, ঋণাত্মক = ক্লাস −1
Decision Boundary: w₁x₁ + w₂x₂ + b = 0
যদি w·x+b > 0 → Class +1 (পাস) | যদি w·x+b < 0 → Class −1 (ফেল)

💡 সহজ ব্যাখ্যা

কল্পনা করুন একটি দাঁড়িপাল্লা। বাম দিকে ওজন বেশি হলে বাঁ দিকে ঝোঁকে (Class -1), ডান দিকে বেশি হলে ডান দিকে (Class +1)। w·x+b হলো সেই দাঁড়িপাল্লার ভারসাম্য।

🎯 SVM-এর লক্ষ্য

এমন w ও b খুঁজে বের করা যাতে:
• w·x+b ≥ +1 → ক্লাস +1 (পাস)
• w·x+b ≤ −1 → ক্লাস −1 (ফেল)
• এবং Margin (= 2/|w|) সর্বোচ্চ হয়

08

Linear vs Non-Linear SVM

⏱ ১০ মিনিট · সরল বনাম বাঁকা

Linear ও Non-Linear ডেটার পার্থক্য

✅ Linearly Separable (সরল রেখায় আলাদা) সরল রেখায় আলাদা → Linear SVM ❌ Non-Linearly Separable (সরল রেখায় সম্ভব নয়) সরল রেখায় আলাদা করা যাচ্ছে না → Kernel দরকার!

📊 তুলনা

বিষয়Linear SVMNon-Linear SVM
Decision Boundaryসরল রেখা/সমতলবাঁকা রেখা/পৃষ্ঠ
KernelLinear KernelRBF, Polynomial Kernel
কখন ব্যবহার?ডেটা সহজে আলাদা হলেডেটা মিশ্রিত বা বৃত্তাকার হলে
গতিদ্রুততুলনামূলক ধীর
09

Kernel Trick — সবচেয়ে শক্তিশালী কৌশল

⏱ ১৫ মিনিট · Non-Linear সমস্যার সমাধান

গল্প: কাগজ ভাঁজ করা 📄

কল্পনা করুন, একটি কাগজে দুই ধরনের বিন্দু আঁকা আছে — কিছু বিন্দু মাঝখানে, কিছু চারদিকে। সমতল কাগজে সরল রেখায় ভাগ করা অসম্ভব। কিন্তু কাগজটি ভাঁজ করলে (৩D-তে নিলে) মাঝখানের বিন্দু উপরে উঠে যাবে! তখন একটি সমতল দিয়ে সহজেই ভাগ করা যাবে। এটাই Kernel Trick — ডেটাকে উচ্চমাত্রায় নিয়ে গিয়ে সহজে আলাদা করা।

Kernel Trick — ২D থেকে ৩D রূপান্তর

2D — আলাদা করা যাচ্ছে না সরল রেখায় অসম্ভব! Kernel Trick উচ্চমাত্রায় — সহজে আলাদা! একটি সমতল দিয়ে সহজে ভাগ! ✅

🔮 Kernel-এর ধরন

📏 Linear Kernel

সূত্র: K(x,y) = xᵀy

কাজ: সাধারণ সরল রেখা/সমতল

কখন? ডেটা linearly separable হলে

সুবিধা: দ্রুত, সহজ ব্যাখ্যা

উদাহরণ: Text Classification, Spam

📐 Polynomial Kernel

সূত্র: K(x,y) = (γxᵀy + r)ᵈ

কাজ: বাঁকা (polynomial) সীমানা

কখন? ডেটায় polynomial সম্পর্ক থাকলে

সুবিধা: Non-linear সমস্যা সমাধান

উদাহরণ: হাতের লেখা চেনা

🌊 RBF / Gaussian Kernel

সূত্র: K(x,y) = exp(−γ|x−y|²)

কাজ: বৃত্তাকার সীমানা, Gaussian bell

কখন? সাধারণ ক্ষেত্রে (default)

সুবিধা: সবচেয়ে নমনীয় ও শক্তিশালী

উদাহরণ: Image, Cancer Detection

🔀 Sigmoid Kernel

সূত্র: K(x,y) = tanh(γxᵀy + r)

কাজ: Neural Network-এর মতো আচরণ

কখন? Neural Network-like সমস্যায়

সুবিধা: Non-linear, নমনীয়

উদাহরণ: NLP, Text Mining

📊 Kernel তুলনা সারসংক্ষেপ

Kernelসীমানার ধরনগতিকখন ভালো?
Linearসরল রেখাসবচেয়ে দ্রুতLinearly separable ডেটায়
Polynomialবাঁকা polynomial রেখামাঝারিImage recognition
RBF (Gaussian)বৃত্তাকার/যেকোনো আকৃতিমাঝারিসাধারণ ক্ষেত্রে (default)
SigmoidS-আকৃতিধীরNeural Network-like সমস্যায়
10

Hyperparameters — C ও Gamma

⏱ ৫ মিনিট

📊 C Parameter — কঠোরতা বনাম নমনীয়তা

C মানমানে কী?Marginঝুঁকিউদাহরণ
ছোট C (যেমন 0.1)নরম সীমানা, কিছু ভুল সহ্য করেবড় MarginUnderfittingডেটায় অনেক noise থাকলে
বড় C (যেমন 100)কঠোর সীমানা, সব ডেটা সঠিকভাবে ভাগ করতে চায়ছোট MarginOverfittingডেটা পরিষ্কার হলে

📊 Gamma Parameter — RBF Kernel-এ প্রভাব

Gamma মানমানে কী?Decision Boundaryঝুঁকি
ছোট Gammaদূরের ডেটাও প্রভাব ফেলেমসৃণ, সরলUnderfitting
বড় Gammaকাছের ডেটাই শুধু প্রভাব ফেলেজটিল, অনিয়মিতOverfitting

💡 সহজ নিয়ম মনে রাখুন

C এবং Gamma দুটোই Grid Search বা Cross Validation দিয়ে বেছে নিন। সাধারণত শুরু করুন: C=1, Gamma='scale' দিয়ে, তারপর ফলাফল দেখে পরিবর্তন করুন।

11

সুবিধা ও অসুবিধা

⏱ ৫ মিনিট

✅ সুবিধা (Advantages)

  • উচ্চমাত্রায়: অনেক Feature-এ ভালো কাজ করে
  • জটিল সীমানা: Kernel দিয়ে যেকোনো আকৃতির সীমানা
  • Overfitting কম: Maximum Margin নিশ্চিত করে
  • Support Vectors: মেমোরি দক্ষ

❌ অসুবিধা (Disadvantages)

  • বড় Dataset-এ ধীর: লক্ষ লক্ষ ডেটায় সমস্যা
  • Kernel নির্বাচন: সঠিক Kernel বেছে নেওয়া কঠিন
  • ব্যাখ্যা কঠিন: Decision Tree-এর মতো সহজে বোঝানো যায় না
  • Scaling বাধ্যতামূলক: Feature Scaling ছাড়া কাজ করে না
12

Real-Life Applications

⏱ ৫ মিনিট
👤

Face Recognition

মুখ চেনা, ছবিতে ব্যক্তি সনাক্তকরণ

✍️

Handwriting Recognition

হাতের লেখা ডিজিটাল পড়া

🔬

Cancer Detection

টিউমার সৌম্য বা ম্যালিগন্যান্ট

🖼️

Image Classification

ছবিতে বস্তু চেনা (বিড়াল/কুকুর)

💳

Fraud Detection

সন্দেহজনক লেনদেন সনাক্তকরণ

📄

Text Classification

নিউজ ক্যাটাগরি, Spam ফিল্টার

13

Google Colab কোডিং সেশন

⏱ লাইভ কোডিং · ছাত্র পাস/ফেল SVM

📋 আজকের লক্ষ্য

Linear SVM ও RBF Kernel SVM তৈরি করব এবং তুলনা করব। Feature Scaling-এর গুরুত্বও দেখব।

ধাপ ১ — Library Import ও Dataset
# প্রয়োজনীয় লাইব্রেরি
import pandas as pd
import numpy as np
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
import matplotlib.pyplot as plt

# Dataset
data = {
    'study_hours':    [1,2,2,3,4,4,5,5,6,6,7,7,8,8,9,3,5,7,2,8],
    'attendance':     [40,50,45,55,60,70,65,75,80,85,90,88,95,92,98,48,72,88,42,96],
    'previous_marks': [30,40,35,45,50,55,60,58,65,70,75,72,80,78,88,38,62,79,33,84],
    'pass_fail':      [0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,1,1,0,1]
}
df = pd.DataFrame(data)
print(df.head(8))
study_hours attendance previous_marks pass_fail 0 1 40 30 0 1 2 50 40 0 2 2 45 35 0 3 3 55 45 0 4 4 60 50 0 5 4 70 55 1 6 5 65 60 0 7 5 75 58 1
📘 কোড ব্যাখ্যা:
SVC = Support Vector Classifier — sklearn-এর SVM ক্লাস
StandardScaler — SVM-এ Feature Scaling বাধ্যতামূলক!
ধাপ ২ — Feature Scaling (SVM-এ বাধ্যতামূলক!)
X = df[['study_hours', 'attendance', 'previous_marks']]
y = df['pass_fail']

# Train-Test Split আগে
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# তারপর Scaling
scaler = StandardScaler()
X_train_sc = scaler.fit_transform(X_train)
X_test_sc  = scaler.transform(X_test)

print("Scaling সম্পন্ন!")
print("আগে (study_hours range):", X_train['study_hours'].min(), "to", X_train['study_hours'].max())
print("পরে (scaled range):", X_train_sc[:,0].min().round(2), "to", X_train_sc[:,0].max().round(2))
Scaling সম্পন্ন! আগে (study_hours range): 1 to 9 পরে (scaled range): -1.76 to 1.76
📘 কোড ব্যাখ্যা:
• SVM Distance-ভিত্তিক — Scaling ছাড়া attendance (40-98) পুরো হিসাব দখল করবে
fit_transform শুধু Train-এ, transform শুধু Test-এ (Data Leakage এড়াতে)
⚠ সবচেয়ে বড় ভুল: Test ডেটায় fit_transform ব্যবহার করা। এতে Test ডেটার তথ্য Training-এ ঢুকে যায় (Data Leakage) — ফলাফল বিভ্রান্তিকর হবে!
ধাপ ৩ — Linear SVM Train ও Evaluate
# Linear SVM
svm_linear = SVC(kernel='linear', C=1.0, random_state=42)
svm_linear.fit(X_train_sc, y_train)

y_pred_l = svm_linear.predict(X_test_sc)
print("✅ Linear SVM Accuracy:", accuracy_score(y_test, y_pred_l))
print("\nSupport Vectors সংখ্যা:", svm_linear.n_support_)
print("(ফেল শ্রেণীর, পাস শ্রেণীর)")
print("\n📊 Confusion Matrix:")
print(confusion_matrix(y_test, y_pred_l))
✅ Linear SVM Accuracy: 1.0 Support Vectors সংখ্যা: [1 2] (ফেল শ্রেণীর, পাস শ্রেণীর) 📊 Confusion Matrix: [[1 0] [0 3]]
📘 কোড ব্যাখ্যা:
kernel='linear' → সরল রেখার সীমানা
n_support_ → মোট ৩টি Support Vector: ১টি ফেল শ্রেণীর, ২টি পাস শ্রেণীর
• মাত্র ৩টি ডেটা পয়েন্ট পুরো Boundary নির্ধারণ করছে!
ধাপ ৪ — RBF Kernel SVM
# RBF Kernel SVM
svm_rbf = SVC(kernel='rbf', C=1.0, gamma='scale', random_state=42)
svm_rbf.fit(X_train_sc, y_train)

y_pred_r = svm_rbf.predict(X_test_sc)
print("✅ RBF SVM Accuracy:", accuracy_score(y_test, y_pred_r))
print("\n📋 Classification Report:")
print(classification_report(y_test, y_pred_r, target_names=['ফেল', 'পাস']))
✅ RBF SVM Accuracy: 1.0 📋 Classification Report: precision recall f1-score support ফেল 1.00 1.00 1.00 1 পাস 1.00 1.00 1.00 3 accuracy 1.00 4
📘 কোড ব্যাখ্যা:
gamma='scale' → sklearn নিজে Gamma হিসাব করবে (ভালো শুরু)
• RBF Kernel বাঁকা সীমানা তৈরি করতে পারে — জটিল ডেটায় ভালো
ধাপ ৫ — Scaling ছাড়া vs Scaling সহ তুলনা
# Scaling ছাড়া SVM
svm_no_scale = SVC(kernel='rbf', random_state=42)
svm_no_scale.fit(X_train, y_train)
acc_no_scale = accuracy_score(y_test, svm_no_scale.predict(X_test))

# Scaling সহ SVM (আগে দেখা)
acc_scaled = accuracy_score(y_test, y_pred_r)

print(f"Scaling ছাড়া SVM Accuracy: {acc_no_scale:.2%}")
print(f"Scaling সহ SVM Accuracy:  {acc_scaled:.2%}")
print("\n💡 পার্থক্য স্পষ্ট! Feature Scaling SVM-এ বাধ্যতামূলক।")
Scaling ছাড়া SVM Accuracy: 75.00% Scaling সহ SVM Accuracy: 100.00% 💡 পার্থক্য স্পষ্ট! Feature Scaling SVM-এ বাধ্যতামূলক।
📘 কোড ব্যাখ্যা:
• Scaling ছাড়া: attendance (40-98) অন্য Feature-কে চাপা দেয়
• Scaling সহ: সব Feature সমান গুরুত্ব পায় → ভালো ফলাফল
⚠ সবচেয়ে গুরুত্বপূর্ণ শিক্ষা: SVM ও KNN — দুটো Distance-ভিত্তিক Algorithm-এ Feature Scaling বাধ্যতামূলক। Decision Tree-তে লাগে না।
ধাপ ৬ — বিভিন্ন C মান পরীক্ষা
print("C মান  | Train Accuracy | Test Accuracy")
print("-" * 42)
for c in [0.01, 0.1, 1, 10, 100]:
    m = SVC(kernel='rbf', C=c, gamma='scale', random_state=42)
    m.fit(X_train_sc, y_train)
    tr = accuracy_score(y_train, m.predict(X_train_sc))
    te = accuracy_score(y_test,  m.predict(X_test_sc))
    print(f"C={c:6} | {tr:.2%}         | {te:.2%}")
C মান | Train Accuracy | Test Accuracy ------------------------------------------ C=0.01 | 81.25% | 75.00% C=0.1 | 93.75% | 100.00% C=1 | 100.00% | 100.00% C=10 | 100.00% | 100.00% C=100 | 100.00% | 100.00%
📘 কোড ব্যাখ্যা:
• C=0.01 → অতিরিক্ত নরম, Underfitting
• C=1 থেকে বেশি → এই Dataset-এ যথেষ্ট, বড় Dataset-এ আলাদা হতে পারে
14

Model Evaluation — মডেল মূল্যায়ন

⏱ Confusion Matrix থেকে F1

Confusion Matrix

Predicted: পাস (1)
Predicted: ফেল (0)
Actual: পাস (1)
TP
True Positive
আসলে পাস ✅
বলেছি পাস
FN
False Negative
আসলে পাস ❌
বলেছি ফেল
Actual: ফেল (0)
FP
False Positive
আসলে ফেল ❌
বলেছি পাস
TN
True Negative
আসলে ফেল ✅
বলেছি ফেল

📊 Evaluation Metrics

Metricসূত্রসহজ ভাষায়কখন গুরুত্বপূর্ণ?
Accuracy(TP+TN)/Totalসবমিলিয়ে কতটা সঠিক?ভারসাম্যপূর্ণ ডেটায়
PrecisionTP/(TP+FP)পাস বলা জনের মধ্যে কতজন সত্যিই পাস?Spam Detection
RecallTP/(TP+FN)আসল পাস-এর মধ্যে কতজন ধরা গেল?Cancer Detection
F1 Score2×(P×R)/(P+R)Precision ও Recall-এর সামঞ্জস্যImbalanced Data
15

অন্যান্য Algorithm-এর সাথে তুলনা

⏱ বিস্তারিত তুলনামূলক বিশ্লেষণ

📊 SVM vs Logistic Regression vs KNN vs Decision Tree vs Random Forest

বিষয়SVMLogistic RegKNNDecision TreeRandom Forest
Feature Scalingবাধ্যতামূলকসাধারণত নাবাধ্যতামূলকলাগে নালাগে না
Non-linear সীমানাKernel দিয়ে হ্যাঁনাহ্যাঁহ্যাঁ (Step)খুব ভালো
ব্যাখ্যাযোগ্যতাকঠিনমাঝারিসহজখুব সহজকঠিন
বড় Dataset গতিধীরদ্রুতধীরদ্রুতমাঝারি
Overfitting ঝুঁকিকমকমK-তে নির্ভরশীলবেশিকম
ছোট Datasetভালোভালোভালোমাঝারিমাঝারি
High-Dimensionalচমৎকারঠিকমতোখারাপমাঝারিভালো

🎯 কোনটা কখন?

Image/Text Classification → SVM দ্রুত Baseline → Logistic Regression ছোট Dataset, জটিল → KNN ব্যাখ্যাযোগ্যতা → Decision Tree সেরা সাধারণ → Random Forest
16

Common Beginner Mistakes

⏱ সতর্কতা

❌ ভুল ১: Feature Scaling ভুলে যাওয়া

ভুল: Scaling ছাড়া SVM চালানো। সমাধান: সবসময় StandardScaler বা MinMaxScaler ব্যবহার করুন। Test-এ শুধু transform (fit নয়)।

❌ ভুল ২: ভুল Kernel বেছে নেওয়া

ভুল: সবসময় Linear Kernel বা সবসময় RBF ব্যবহার। সমাধান: Linear দিয়ে শুরু করুন, তারপর RBF চেষ্টা করুন। GridSearchCV দিয়ে সেরা Kernel খুঁজুন।

❌ ভুল ৩: C ও Gamma ডিফল্টেই রাখা

ভুল: C=1, Gamma='scale' সবসময় ভালো ভাবা। সমাধান: বিভিন্ন C ও Gamma দিয়ে পরীক্ষা করুন।

❌ ভুল ৪: SVM সবসময় সরল রেখা ভাবা

ভুল: SVM শুধু সরল রেখার Boundary দেয়। সমাধান: Kernel Trick দিয়ে SVM যেকোনো আকৃতির Boundary তৈরি করতে পারে।

❌ ভুল ৫: বিশাল Dataset-এ SVM

ভুল: ১০ লক্ষ+ ডেটায় SVM চালানো। সমাধান: বড় Dataset-এ LinearSVC বা SGDClassifier ব্যবহার করুন — অনেক দ্রুত।

17

End-to-End Visual Example

⏱ সম্পূর্ণ দৃশ্যমান উদাহরণ

📊 ছোট Dataset — ৮টি ডেটা পয়েন্ট

#পড়ার ঘণ্টা (x₁)উপস্থিতি % (x₂)ফলাফল
A240ফেল (−1)
B355ফেল (−1)
C465ফেল (−1)
D570পাস (+1)
E680পাস (+1)
F788পাস (+1)
G4.568ফেল (−1) ← Support Vector!
H5.572পাস (+1) ← Support Vector!

ধাপে ধাপে SVM — Scatter → Support Vectors → Margin → Boundary → Prediction

পড়ার ঘণ্টা (x₁) → উপস্থিতি % (x₂) → 1 3 5 7 9 A B C D E F G★ H★ ←Margin→ নতুন? নতুন বিন্দু Boundary-র ডান পাশে → পাস! ✅ Decision Boundary ফেল শ্রেণী পাস শ্রেণী = Support Vector = নতুন ডেটা
18

Revision — পুনরাবৃত্তি ও MCQ

⏱ সারসংক্ষেপ · Viva · MCQ · Homework

⚡ Quick Revision Chips

SVM = সর্বোচ্চ Margin Support Vectors = সীমানার কাছের পয়েন্ট Kernel Trick = উচ্চমাত্রায় রূপান্তর C বড় = কঠোর সীমানা Scaling বাধ্যতামূলক! RBF = সেরা সাধারণ Kernel Gamma বড় = জটিল সীমানা

🎤 Viva Questions (ক্লিক করলে উত্তর)

Q1: SVM-কে "Support Vector Machine" কেন বলা হয়?
কারণ Decision Boundary নির্ধারণ করে মাত্র কয়েকটি বিশেষ ডেটা পয়েন্ট — যারা Boundary থেকে সবচেয়ে কাছে থাকে। এদের "Support Vectors" বলে কারণ এরাই Boundary-কে "সাপোর্ট" বা ধরে রাখে।
Q2: SVM-এর Margin কী এবং কেন সর্বোচ্চ Margin ভালো?
Margin হলো Decision Boundary থেকে উভয় শ্রেণীর সবচেয়ে কাছের ডেটা পয়েন্টের দূরত্বের সমষ্টি। বড় Margin মানে নতুন ডেটা সামান্য পরিবর্তনেও সঠিক শ্রেণীতে পড়বে — তাই Generalization ভালো হয়।
Q3: Kernel Trick কী এবং কেন দরকার?
Kernel Trick হলো ডেটাকে গাণিতিকভাবে উচ্চ মাত্রায় রূপান্তর করার কৌশল। যখন ২D-তে সরল রেখায় ডেটা আলাদা করা যায় না, তখন Kernel ব্যবহার করে উচ্চমাত্রায় নিয়ে যাওয়া হয় যেখানে সরল সমতল দিয়ে আলাদা করা যায়।
Q4: SVM-এ C Parameter কী করে?
C নির্ধারণ করে মডেল কতটা কঠোর হবে। বড় C → কঠোর, ভুল সহ্য করে না, ছোট Margin, Overfitting ঝুঁকি। ছোট C → নরম, কিছু ভুল সহ্য করে, বড় Margin, Underfitting ঝুঁকি।
Q5: SVM-এ Feature Scaling কেন বাধ্যতামূলক?
SVM Distance (দূরত্ব) হিসাব করে সিদ্ধান্ত নেয়। যদি Feature-গুলোর Scale ভিন্ন হয় (যেমন বয়স=25 vs আয়=100000), তাহলে বড় সংখ্যার Feature দূরত্ব হিসাবে প্রাধান্য পাবে এবং ফলাফল ভুল হবে।

📝 MCQ — Multiple Choice Questions

1. SVM সর্বোচ্চ করার চেষ্টা করে?
  • Accuracy
  • Margin
  • Decision Boundary-র সংখ্যা
  • Support Vectors-এর সংখ্যা
2. SVM-এ Feature Scaling কেন বাধ্যতামূলক?
  • মডেল দ্রুত হওয়ার জন্য
  • SVM Distance-ভিত্তিক, তাই সব Feature সমান স্কেলে থাকা দরকার
  • Decision Tree-র মতো হওয়ার জন্য
  • Kernel কাজ করার জন্য
3. RBF Kernel কোন ধরনের সীমানা তৈরি করে?
  • শুধু সরল রেখা
  • শুধু polynomial
  • যেকোনো আকৃতির (বৃত্তাকারসহ)
  • শুধু ত্রিভুজ
4. বড় C মান ব্যবহার করলে কী হয়?
  • Margin বড় হয়
  • Margin ছোট হয়, মডেল কঠোর, Overfitting ঝুঁকি
  • Support Vectors বেশি হয়
  • Kernel পরিবর্তিত হয়
5. কোন Kernel সবচেয়ে জনপ্রিয় এবং sklearn-এর default?
  • Linear
  • Polynomial
  • RBF (Gaussian)
  • Sigmoid
6. Support Vectors সরিয়ে নিলে কী হবে?
  • কিছুই হবে না
  • Margin বাড়বে
  • Decision Boundary বদলে যাবে
  • Kernel পরিবর্তিত হবে
7. SVM কোন ধরনের Dataset-এ সবচেয়ে ভালো কাজ করে?
  • লক্ষ লক্ষ ডেটা
  • মাঝারি আকার, উচ্চমাত্রার Feature
  • শুধু ছবির ডেটা
  • শুধু টেক্সট ডেটা

📚 Homework Assignment

  1. Google Colab খুলুন এবং আজকের সম্পূর্ণ SVM কোড নিজে হাতে লিখুন।
  2. Linear, RBF, Polynomial সব Kernel-এ Accuracy তুলনা করুন।
  3. C=0.01, 0.1, 1, 10, 100 দিয়ে Train vs Test Accuracy টেবিল বানান।
  4. Scaling ছাড়া ও Scaling সহ — দুটো মডেলের Confusion Matrix তুলনা করুন।
  5. Kaggle-এ "Breast Cancer Dataset" নামিয়ে SVM দিয়ে সৌম্য/ম্যালিগন্যান্ট classify করুন।

💼 Interview Questions

#প্রশ্নমূল বিষয়
1SVM কীভাবে Maximum Margin খুঁজে বের করে?Optimization, Lagrange Multipliers
2Hard Margin vs Soft Margin SVM-এর পার্থক্য?C Parameter, Slack Variables
3Kernel Trick-এর গাণিতিক ব্যাখ্যা?Feature Map, Inner Product
4SVM কি Multi-Class Classification করতে পারে?One-vs-One, One-vs-Rest
5SVM vs Logistic Regression — কখন কোনটা?High-D, Small N vs Large N
6বড় Dataset-এ SVM ধীর কেন?O(n²) থেকে O(n³) Time Complexity

🎉 অভিনন্দন! আজকের SVM ক্লাস সম্পন্ন!

আপনি আজ শিখেছেন: Classification, Decision Boundary, Maximum Margin, Support Vectors, Kernel Trick, Linear vs RBF Kernel, C ও Gamma Hyperparameter, Feature Scaling-এর গুরুত্ব এবং সম্পূর্ণ Python কোডিং!

✅ Margin বোঝা গেছে ✅ Kernel Trick শিখেছি ✅ Feature Scaling জানি

পরের ক্লাস: Random Forest — Decision Tree-এর সম্মিলিত শক্তি 🌲🌲🌲