Machine Learning আসলে কী? Computer কীভাবে নিজে নিজে pattern খুঁজে পায়?

features, labels, train/val/test, inference (Series 05, Episode 01)

🟢 BEGINNER Series 05 — Classical Machine Learning Episode 01 / 11

📑 এই পর্বে যা যা আছে

🧩 ১. গল্প: Rahim-এর সেই "if-else" সমস্যা

Rahim একটা e-commerce কোম্পানিতে junior developer। একদিন তার Boss এসে বলল — "আমাদের কোন customer পরের মাসে কেনাকাটা করবে আর কে করবে না, সেটা আগেভাগে জানতে চাই। যারা করবে না, তাদের একটা discount SMS পাঠাব।"

Rahim তো software developer, সে যা জানে তাই করল — if-else লিখতে বসল:

if customer.last_order_days > 30: will_buy = False elif customer.total_orders > 10: will_buy = True elif customer.age < 25 and customer.city == "Dhaka": will_buy = True else: will_buy = ... # এখানেই Rahim আটকে গেল
Rahim পাশের ডেস্কের ML Engineer Arif-কে ডাকল: "ভাই, নিয়মগুলো তো হাজারটা হয়ে যাচ্ছে! বয়স, শহর, শেষ অর্ডার, কতগুলো অর্ডার, কোন product... প্রতিটা combination-এর জন্য আলাদা if লিখতে গেলে তো জীবন শেষ। আর নতুন pattern এলে?"

Arif হাসল: "তুই তো নিজেই নিজের সমস্যাটা বলে ফেললি। এত নিয়ম হাতে লেখা অসম্ভব। এখানেই Machine Learning। তুই নিয়ম লিখবি না — computer পুরনো data দেখে নিয়মগুলো নিজে বের করবে।"

২. আসল সমস্যা: নিয়ম হাতে লেখা যখন অসম্ভব

কিছু সমস্যা আছে যেখানে নিয়ম সোজা — "order ৫০০০ টাকার বেশি হলে free delivery"। এখানে ML লাগে না, সাধারণ if যথেষ্ট। কিন্তু Rahim-এর সমস্যায় নিয়মগুলো:

যখন সমস্যার নিয়ম (rules) মানুষের পক্ষে স্পষ্টভাবে লিখে দেওয়া কঠিন, কিন্তু ঘটনার ঐতিহাসিক data আছে — তখনই Machine Learning-এর জায়গা। ML নিয়ম হাতে নেয় না, data থেকে নিয়ম শিখে নেয়

🧠 ৩. Machine Learning আসলে কী? (৩ স্তরে)

Level 1 — সহজ intuition:
একটা বাচ্চাকে ১০০টা আম আর ১০০টা কমলা দেখিয়ে বললেন "এটা আম, এটা কমলা"। কিছুক্ষণ পর নতুন একটা ফল দেখালে সে নিজেই বলে দেবে কোনটা। কেউ তাকে "আম মানে হলুদ ও লম্বাটে" এমন নিয়ম শেখায়নি — সে উদাহরণ দেখে নিজে pattern ধরেছে। ML ঠিক এটাই করে।
Level 2 — technical:
Machine Learning হলো এমন algorithm-এর সমষ্টি যা data (input) এবং তার সঠিক উত্তর (output) দেখে একটা function approximate করে — যাতে ভবিষ্যতে নতুন input পেলে output predict করা যায়। গণিতে বললে: আমরা এমন একটা f খুঁজছি যেন f(features) ≈ label হয়, শুধু training উদাহরণে নয়, নতুন unseen data-তেও।
Level 3 — Engineer perspective:
একজন ML Engineer হিসেবে আপনি নিয়ম লেখেন না; আপনি ঠিক করেন — কোন data লাগবে, কোন feature দরকার, কোন algorithm উপযুক্ত, model কতটা ভালো হলো (evaluation), এবং সেই model production-এ কীভাবে prediction দেবে। মনে রাখবেন: model ≠ production system — একটা trained model একটা .pkl file মাত্র; সেটাকে API, monitoring, retraining দিয়ে system বানানো আলাদা কাজ (Series 09-এ দেখব)।
জরুরি distinction: ML হলো AI-এর একটা subset। সব ML-ই AI, কিন্তু সব AI মানেই ML নয় (rule-based system-ও AI)। আর Deep Learning হলো ML-এর একটা subset। এই সিরিজে (Series 05) আমরা classical ML শিখছি — Deep Learning নয়, সেটা Series 06-এ।

🔄 ৪. Traditional Programming বনাম Machine Learning

Traditional Programming

Data + Rules → Program → Output

মানুষ নিয়ম (rules) লেখে। Rahim-এর if-else এখানে পড়ে।
Machine Learning

Data + Output → ML Training → Rules (Model)

Machine উদাহরণ দেখে নিয়ম (model) নিজে বের করে।

পার্থক্যটা মৌলিক: traditional-এ আউটপুট বানাতে নিয়ম দরকার; ML-এ নিয়ম বানাতে আউটপুট (উদাহরণ) দরকার। তাই ML-এর প্রথম শর্ত — ভালো labeled data

📚 ৫. মূল শব্দভাণ্ডার: Features, Labels, Dataset

Rahim-এর customer data একটা টেবিল হিসেবে ভাবুন:

agecitytotal_orderslast_order_dayswill_buy (label)
24Dhaka1210Yes
41Khulna260No
30Dhaka725Yes
Features (X) Label (y) ┌───────────────────────────────┐ ┌───────────┐ │ age city orders last_days │ → │ will_buy │ │ 24 Dhaka 12 10 │ → │ Yes │ │ 41 Khulna 2 60 │ → │ No │ └───────────────────────────────┘ └───────────┘ model শেখে: X → y

🗂️ ৬. Supervised, Unsupervised, Reinforcement — তিন ধরন

ধরনlabel আছে?কাজউদাহরণ
Supervisedহ্যাঁX থেকে y predictchurn prediction, house price, spam detection
Unsupervisedনাdata-র লুকানো গঠন খোঁজাcustomer segmentation (K-Means), PCA
Reinforcementনা (reward)trial-error দিয়ে শেখাgame AI, robotics

এই সিরিজের বেশিরভাগ Supervised Learning (E02–E08, E10–E11), আর E09-এ Unsupervised (K-Means, PCA)। Reinforcement Learning junior চাকরির জন্য Learn Later — এখন শুধু নাম জানলেই চলবে।

Supervised-এর দুই ভাগ: Regression = সংখ্যা predict (house price কত টাকা?), Classification = category predict (churn করবে হ্যাঁ/না?)। এই পার্থক্যটা মাথায় রাখুন — পরের episode-গুলো এই দুই ভাগ ধরেই এগোবে।

✂️ ৭. Train / Validation / Test — ডেটা কেন ভাগ করি

একটা পরীক্ষার আগে যদি ছাত্রকে হুবহু পরীক্ষার প্রশ্নই মুখস্থ করিয়ে দেন, তাহলে সে ১০০ পাবে — কিন্তু সে কি আসলে শিখেছে? না। ML-এও একই ফাঁদ। তাই আমরা data ভাগ করি:

পুরো Dataset (১০০%) ├── Train set (~৭০%) → model এখানে শেখে ├── Validation (~১৫%) → hyperparameter টিউন / model বাছাই └── Test set (~১৫%) → চূড়ান্ত পরীক্ষা (একবারই ছোঁয়া)
সোনার নিয়ম: Test set কখনো training বা tuning-এ ব্যবহার করবেন না। ওটা "final exam" — একবারই দেখবেন। না হলে আপনি নিজেকেই ঠকাবেন এবং production-এ model খারাপ করবে।

⚙️ ৮. Training বনাম Inference (একদম আলাদা দুই জিনিস)

Training

পুরনো labeled data দিয়ে model-কে "শেখানো"। ভারী কাজ, একবার/মাঝেমধ্যে হয়। ফলাফল: একটা trained model।
Inference

trained model দিয়ে নতুন data-তে prediction করা। হালকা কাজ, বারবার হয় (প্রতিটা request-এ)।

Production-এ latency, cost — সবই মূলত inference নিয়ে। এই পার্থক্যটা interview-তে প্রায়ই আসে, আর Series 09-এ যখন model deploy করব তখন এটাই মূল ভিত্তি। Training ≠ Inference — মনে রাখুন।

💻 ৯. প্রথম কোড: scikit-learn দিয়ে ছোট experiment

কেন scikit-learn? কারণ classical ML-এর জন্য এটাই industry-standard Python library — সব algorithm একই সরল API (fit/predict) দিয়ে চলে, বাংলাদেশের প্রায় সব ML/Data Science JD-তে এর নাম থাকে। চলুন ধারণাগুলো কোডে দেখি:

# pip install scikit-learn pandas import pandas as pd from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score # ১. ছোট dataset (বাস্তবে CSV/DB থেকে আসবে) data = pd.DataFrame({ "age": [24, 41, 30, 22, 55, 34, 28, 47], "total_orders": [12, 2, 7, 9, 1, 8, 6, 3], "last_order_days":[10, 60, 25, 12, 90, 20, 30, 75], "will_buy": [1, 0, 1, 1, 0, 1, 1, 0], # 1=Yes, 0=No }) # ২. Features (X) আর Label (y) আলাদা করা X = data[["age", "total_orders", "last_order_days"]] y = data["will_buy"] # ৩. Train/Test ভাগ (random_state = reproducibility-র জন্য) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.25, random_state=42 ) # ৪. Training — model নিয়মগুলো নিজে শিখছে model = DecisionTreeClassifier(max_depth=3, random_state=42) model.fit(X_train, y_train) # <-- এখানেই "শেখা" # ৫. Inference — নতুন data-তে prediction preds = model.predict(X_test) print("Test accuracy:", accuracy_score(y_test, preds)) # ৬. একদম নতুন একজন customer new_customer = [[27, 10, 15]] # age, orders, last_days print("নতুন customer কিনবে?", model.predict(new_customer))
লক্ষ্য করুন — আমরা একটাও if-else লিখিনি! model.fit() data দেখে নিজে নিয়ম বের করেছে, আর model.predict() নতুন customer-এ সেটা প্রয়োগ করেছে। এটাই traditional programming থেকে ML-এর মূল paradigm shift।

🔬 ১০. Experiment ও বাংলাদেশের বাস্তব উদাহরণ

নিজে চেষ্টা করুন: উপরের কোডে max_depth ৩ থেকে ১ করুন, তারপর ১০ করুন। accuracy কীভাবে বদলায় খেয়াল করুন — এটাই আপনাকে পরে overfitting/underfitting (E08) বোঝাবে।

💼 ১১. Boss Question

Boss: "ঠিক আছে, computer নিজে শেখে বুঝলাম। কিন্তু এই ML জিনিসটা আমার business-এ টাকা বানাবে কীভাবে?"

উত্তর: Rahim-এর churn prediction দিয়েই ভাবুন। ১ লাখ customer-এর মধ্যে যদি model আগেভাগে বলে দিতে পারে কোন ৫,০০০ জন চলে যাওয়ার ঝুঁকিতে, আপনি শুধু তাদেরই targeted offer পাঠাবেন — সবাইকে নয়। ফলে marketing খরচ কমে, retention বাড়ে। এক লাইনে business value: "সঠিক সিদ্ধান্ত, সঠিক সময়ে, কম খরচে, বড় স্কেলে।" এটাই ML বিক্রি করে — magic নয়, better decisions।

🔎 ১২. Job Requirement Decoder

JD-তে দেখবেন: "Solid understanding of core Machine Learning concepts (supervised/unsupervised learning, model training and evaluation)."

১. কী বোঝায়? আপনি ML-এর মৌলিক workflow ও শব্দভাণ্ডার (features, labels, train/test, supervised vs unsupervised) পরিষ্কার বোঝেন।
২. কেন চায়? যাতে সমস্যা শুনে বুঝতে পারেন এটা regression না classification, এবং সঠিক পথে এগোন।
৩. কোন সমস্যা সমাধান করে? ভুল সমস্যায় ML লাগানো বা ভুল ধরন বাছাই — এসব এড়ায়।
৪. junior-এর কী জানা লাগে? এই episode-এর সব ধারণা + scikit-learn-এ একটা fit/predict চালাতে পারা।
৫. এখনই কী master লাগবে না? Reinforcement Learning, distributed training, gradient-এর গণিত — এগুলো পরে।
৬. GitHub-এ কীভাবে দেখাবে? একটা ছোট notebook: data → split → train → evaluate, README-তে সহজ ভাষায় ব্যাখ্যা।
৭. Interview-তে কী জিজ্ঞেস করতে পারে? "Supervised vs unsupervised?", "Train/test split কেন?", "Regression vs classification?"

⚠️ ১৩. সাধারণ ভুল

ভুল ১: Test set-এ model টিউন করা → ঠিক: test শুধু final exam, একবার।

ভুল ২: "সব সমস্যায় ML লাগবে" → ঠিক: নিয়ম স্পষ্ট হলে simple if-ই ভালো।

ভুল ৩: "accuracy বেশি মানেই ভালো model" → ঠিক: imbalanced data-তে এটা মিথ্যা বলে (E05-এ দেখব)।

ভুল ৪: Training আর Inference গুলিয়ে ফেলা → এই দুটো আলাদা phase, আলাদা খরচ।

ভুল ৫: খারাপ/কম data দিয়ে ভালো model আশা করা → "garbage in, garbage out"।

🎤 ১৪. Interview Prep

প্র: Machine Learning কী, এক লাইনে?
উ: Data থেকে pattern শিখে নতুন data-তে prediction করার পদ্ধতি — নিয়ম হাতে না লিখে।

প্র: Supervised আর Unsupervised-এর পার্থক্য?
উ: Supervised-এ label থাকে (X→y শেখে); unsupervised-এ label নেই, data-র গঠন খোঁজে (যেমন clustering)।

প্র: Train/validation/test কেন দরকার?
উ: Model যাতে মুখস্থ না করে সত্যিকারের generalize করে; test দিয়ে unseen data-তে honest performance মাপা যায়।

প্র: Regression আর Classification?
উ: Regression সংখ্যা predict করে (দাম), classification category predict করে (হ্যাঁ/না)।

প্র: Training আর Inference আলাদা কীভাবে?
উ: Training-এ model শেখে (ভারী, কম-বার); inference-এ trained model prediction দেয় (হালকা, বারবার)।

✍️ ১৫. হাতে-কলমে

নিচের ৪টা সমস্যাকে ভাগ করুন — Regression / Classification / Unsupervised / "ML লাগে না":

১. একটা ফ্ল্যাটের মাসিক ভাড়া কত হবে অনুমান করা।
২. একটা email spam কিনা বলা।
৩. ১০ হাজার customer-কে আচরণ অনুযায়ী কয়েকটা দলে ভাগ করা (label নেই)।
৪. "bill > 1000 হলে 5% discount দাও।"

(উত্তর: ১→Regression, ২→Classification, ৩→Unsupervised, ৪→ML লাগে না)
তারপর উপরের scikit-learn কোডটা নিজের মেশিনে চালান আর max_depth বদলে দেখুন।

🚀 ১৬. Project Connection ও সারসংক্ষেপ

আমাদের flagship project "Bangladesh Tech Career Assistant" এতদিন ছিল data analyzer (V2)। এই সিরিজে সেটা ML-চালিত হবে (V3): একটা job description দিলে model বলবে এটা junior না senior role, বা কোন skill-গুলো লাগবে। কিন্তু কোড লেখার আগে আজকের এই মানসিক framework — এটা কি supervised? regression না classification? কোন feature, কোন label? — সেটাই ভিত্তি।

এই Episode-এ শিখলাম:

✓ ML = data থেকে নিয়ম শেখা, নিয়ম হাতে লেখা নয় (Data+Output → Rules)
✓ Features (X), Label (y), Dataset — মূল শব্দভাণ্ডার
✓ Supervised (label আছে) / Unsupervised (নেই) / Reinforcement; supervised-এর ভেতরে Regression vs Classification
✓ Train / Validation / Test কেন ভাগ করি — test হলো final exam
✓ Training ≠ Inference — আলাদা phase, আলাদা খরচ
✓ scikit-learn-এ প্রথম fit/predict চালানো
✓ ML হলো AI-এর subset; classical ML ≠ Deep Learning
পরবর্তী Episode: Linear Regression — prediction-এর "Hello World"। House Price দিয়ে আমরা প্রথম সত্যিকারের model train করব এবং দেখব একটা সংখ্যা কীভাবে predict হয়।
© 2025 Sheikh Thanbir Alam. All Rights Reserved. thanbirtamim.github.io
এই লেখা মূল লেখকের সম্পত্তি — লিখিত অনুমতি ছাড়া কপি করে অন্য কোনো ওয়েবসাইট, ব্লগ, বই বা প্ল্যাটফর্মে প্রকাশ/বিতরণ করা কঠোরভাবে নিষিদ্ধ। Content may not be copied or republished without permission.