Hook — পরীক্ষায় pass করব কি?
তুমি ৪ ঘন্টা পড়েছ — pass করবে কি? শিক্ষক বলবেন “মনে হয় ৭০% chance এ pass”। এই “সম্ভাবনা” বলার ক্ষমতাই Logistic Regression এর মূল কাজ — সংখ্যা না, বরং একটি probability return করা।
Concept — Linear থেকে Logistic
Linear Regression continuous সংখ্যা দেয় (−∞ থেকে +∞)। কিন্তু probability ০ থেকে ১ এর মধ্যে। তাই linear output কে Sigmoid function এর মধ্যে দিয়ে চেপে দেই।
Logistic Regression নাম এ regression হলেও কাজে এটা Classification algorithm।
Math — Log Loss / Cross Entropy
MSE এখানে কাজ করে না — non-convex হয়ে যায়। তাই আমরা Cross-Entropy Loss ব্যবহার করি।
Gradient descent দিয়ে এই loss minimize করি — gradient form linear regression এর মতই সরল: ∂L/∂w = (1/n) Σ (ŷ − y)·x।
Real-world Use
- Disease diagnosis — symptom থেকে positive/negative।
- Credit default — loan return করবে কি না।
- Click prediction — ad এ click হবে কি না।
- Churn prediction — customer চলে যাবে কি না।
Code — Scratch + Sklearn
import numpy as np
X = np.array([1,2,3,4,5,6,7,8], dtype=float)
y = np.array([0,0,0,0,1,1,1,1], dtype=float)
w, b, lr, n = 0.0, 0.0, 0.1, len(X)
def sigmoid(z): return 1 / (1 + np.exp(-z))
for _ in range(5000):
z = w * X + b
p = sigmoid(z)
dw = (1/n) * np.sum((p - y) * X)
db = (1/n) * np.sum(p - y)
w -= lr * dw
b -= lr * db
print(f"w={w:.3f}, b={b:.3f}")
print("P(pass | 4.5 hours):", sigmoid(w*4.5 + b))from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
X, y = load_breast_cancer(return_X_y=True)
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.2, random_state=42)
model = LogisticRegression(max_iter=5000).fit(Xtr, ytr)
print(classification_report(yte, model.predict(Xte)))Common Mistakes
- Feature scale না করা — convergence slow।
- Multi-collinear feature — unstable coefficient।
- Imbalanced data এ Accuracy এর উপর নির্ভর করা।
- Non-linear decision boundary এ চাপিয়ে দেওয়া — polynomial feature বা kernel লাগে।
Practice Tasks
- Task 1: Decision boundary plot করো (2D dataset)।
- Task 2: L1 vs L2 regularization এর effect তুলনা করো।
- Task 3: threshold বদলে precision/recall এর trade-off দেখো।
Mini Project — Heart Disease Predictor
UCI Heart Disease dataset দিয়ে Logistic Regression train করো। Confusion matrix, ROC-AUC report করো। কোন feature এর coefficient সবচেয়ে বেশি প্রভাব ফেলে — interpret করো।
Summary
Logistic Regression = Linear + Sigmoid = Probability-based Classifier।