Home › Lectures › Machine Learning

🛠️ ফিচার ইঞ্জিনিয়ারিং · Feature Engineering

ভালো ফিচার = ভালো মডেল।

Good features make good models.

📅 ৩. মেশিন লার্নিং⏳ ~2 সপ্তাহ📘 6 টপিক🧩 18 সাব-টপিক🎬 0 ভিডিও💻 রানযোগ্য কোড

🎯 যা শিখবেন / Outcomes

Scale, encode, select and create features; pipelines

🧰 টুলস / Tools

scikit-learn

🏁 প্রজেক্ট / Capstone

Feature pipeline for house-price prediction

📌 পূর্বশর্ত / Prerequisites

🧹 Data Cleaning & EDA

📅

সাপ্তাহিক পরিকল্পনা · Weekly plan

~২ ঘণ্টা/দিন ধরে
1

Feature Scaling

Standardisation and normalisation.
Beginner
📘 বাংলা: Standardization ও Normalization।
🌐 English: Standardisation and normalisation.

💡 দূরত্ব বা গ্রেডিয়েন্টভিত্তিক মডেলে বড় স্কেলের ফিচার অন্যায্যভাবে প্রাধান্য পায়।

  1. 1
    কোন মডেলে লাগে চিনুন: KNN, SVM, লজিস্টিক রিগ্রেশন, নিউরাল নেট, PCA (ট্রি মডেলে লাগে না)
  2. 2
    StandardScaler: (x−গড়)/SD
  3. 3
    MinMaxScaler: ০–১ পরিসরে; RobustScaler: আউটলায়ার থাকলে (মিডিয়ান ও IQR)
  4. 4
    শুধু ট্রেনিং ডেটায় fit, টেস্টে transform
StandardScalerগড় 0, SD 1
MinMaxScaler0 থেকে 1
কখন লাগেKNN, SVM, নিউরাল নেট
2

Encoding Categorical Variables

One-hot, label and target encoding.
Beginner
📘 বাংলা: One-hot, Label ও Target encoding।
🌐 English: One-hot, label and target encoding.

💡 মডেল শুধু সংখ্যা বোঝে—টেক্সট ক্যাটাগরিকে সংখ্যায় রূপান্তর করতে হয়।

  1. 1
    Nominal (ক্রম নেই: জেলা) → One-hot: pd.get_dummies বা OneHotEncoder(handle_unknown="ignore")
  2. 2
    Ordinal (ক্রম আছে: শিক্ষা স্তর) → OrdinalEncoder নির্দিষ্ট ক্রমে
  3. 3
    অনেক ক্যাটাগরি (৪৯৫ উপজেলা) → target/frequency encoding বা grouping
  4. 4
    বিরল ক্যাটাগরি "Other"-এ একত্র করুন
One-hotpd.get_dummies
Label/Ordinalক্রমযুক্ত ক্যাটাগরি
Target encodingউচ্চ কার্ডিনালিটি
3

Feature Selection

Choose the most useful features.
Intermediate
📘 বাংলা: গুরুত্বপূর্ণ ফিচার বাছাই।
🌐 English: Choose the most useful features.

💡 অপ্রয়োজনীয় ফিচার নয়েজ যোগ করে, ওভারফিটিং বাড়ায় ও মডেল ধীর করে।

  1. 1
    ফিল্টার: কম ভ্যারিয়েন্স বাদ, টার্গেটের সাথে কোরিলেশন/χ²/mutual information
  2. 2
    অতিরিক্ত পারস্পরিক কোরিলেশন (>০.৯) থাকলে একটি রাখুন
  3. 3
    র‍্যাপার: RFE—মডেল দিয়ে বারবার সবচেয়ে দুর্বল ফিচার বাদ
  4. 4
    এমবেডেড: Lasso (শূন্য সহগ), ট্রি feature_importances_, permutation importance
ফিল্টারকোরিলেশন, chi²
র‍্যাপারRFE
এমবেডেডLasso, ট্রি ইম্পর্ট্যান্স
4

Feature Creation

Engineer new meaningful features.
Intermediate
📘 বাংলা: নতুন অর্থবহ ফিচার তৈরি।
🌐 English: Engineer new meaningful features.

💡 ভালো ফিচার প্রায়ই জটিল মডেলের চেয়ে বেশি উন্নতি দেয়।

  1. 1
    তারিখ থেকে: বছর, মাস, সপ্তাহের দিন, ছুটি, ঋতু
  2. 2
    অনুপাত ও পার্থক্য: প্রতি লাখে রোগী, আয়/সদস্য, আগের সপ্তাহের তুলনা
  3. 3
    ল্যাগ ও রোলিং: গত ৭ দিনের গড় (টাইম সিরিজ)
  4. 4
    ডোমেইন জ্ঞান: তাপমাত্রা+আর্দ্রতা থেকে heat index; বাইনিং: বয়স গ্রুপ
তারিখ থেকেমাস, সপ্তাহের দিন
অনুপাত ও ইন্টারঅ্যাকশনআয়/সদস্য
ডোমেইন জ্ঞানসবচেয়ে শক্তিশালী ফিচার
5

Imbalanced Data SMOTE

Fix imbalanced classes.
Advanced
📘 বাংলা: অসম ক্লাস সমস্যার সমাধান।
🌐 English: Fix imbalanced classes.

💡 বিরল ঘটনা (রোগ, জালিয়াতি) শনাক্তে মডেল সংখ্যাগরিষ্ঠ ক্লাস বলে দিয়েই "৯৯% সঠিক" হয়।

  1. 1
    ক্লাস অনুপাত দেখুন: y.value_counts(normalize=True)
  2. 2
    সঠিক মেট্রিক: Recall, F1, PR-AUC (Accuracy নয়)
  3. 3
    class_weight="balanced" দিয়ে ভুলের শাস্তি সমন্বয়
  4. 4
    রিস্যাম্পলিং: SMOTE (ট্রেনিং ডেটায় শুধু), undersampling; থ্রেশহোল্ড সমন্বয়
সমস্যা৯৫% বনাম ৫% ক্লাস
SMOTEসিন্থেটিক নমুনা
class_weight ও সঠিক মেট্রিকF1, PR-AUC
6

Sklearn Pipeline

Chain preprocessing and model together.
Advanced
📘 বাংলা: প্রিপ্রসেসিং ও মডেল এক ধারায়।
🌐 English: Chain preprocessing and model together.

💡 প্রিপ্রসেসিং ও মডেল একসাথে বাঁধলে লিকেজ বন্ধ হয় এবং ডিপ্লয় সহজ হয়।

  1. 1
    সংখ্যা ও ক্যাটাগরি কলাম আলাদা করুন
  2. 2
    ColumnTransformer: num → Imputer+Scaler, cat → Imputer+OneHot
  3. 3
    Pipeline([("pre", pre), ("model", RandomForest())])
  4. 4
    পুরো pipeline দিয়ে cross_val_score, GridSearch ও joblib.dump—একটি ফাইলে সব
Pipelineধাপগুলো শৃঙ্খলিত
ColumnTransformerসংখ্যা ও ক্যাটাগরি আলাদা প্রসেস
ডেটা লিকেজ প্রতিরোধ
💻

হাতে-কলমে কোড · Hands-on code

Run চাপুন — পাইথন আপনার ব্রাউজারেই চলবে (Ctrl+Enter)
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression
df=pd.DataFrame({"age":[22,35,47,52,28,61,33,44],"income":[20,45,60,80,30,90,40,55],"city":list("DSDKSDKS"),"buy":[0,1,1,1,0,1,0,1]})
pre=ColumnTransformer([("num",StandardScaler(),["age","income"]),("cat",OneHotEncoder(),["city"])])
pipe=Pipeline([("pre",pre),("clf",LogisticRegression())]).fit(df.drop(columns="buy"),df.buy)
print("Train accuracy:",pipe.score(df.drop(columns="buy"),df.buy))
📝

অনুশীলন · Practice tasks

  1. তারিখ কলাম থেকে ৫টি নতুন ফিচার তৈরি করুন
  2. One-hot বনাম target encoding তুলনা
  3. Pipeline দিয়ে লিকেজমুক্ত প্রিপ্রসেসিং
  4. ক্যাপস্টোন: Feature pipeline for house-price prediction
❓

কুইজ · Quick quiz

1. গড় 0 ও SD 1 করে?

2. SMOTE কী সমাধান করে?

🎬

ভিডিও লাইব্রেরি · Videos

সাইটের ভেতরে ফ্লোটিং প্লেয়ারে চলবে
এই শাখার ভিডিও এখনো সংরক্ষিত হয়নি। যেকোনো টপিক পেজ খুললে ভিডিও স্বয়ংক্রিয়ভাবে খুঁজে MySQL-এ সংরক্ষিত হবে (API key থাকলে)।

📺 Reference channels

🔗

সংযুক্ত বিষয় · Connected

← আগের শাখা🧹 Data Cleaning & EDAপরের শাখা →🤖 Machine Learning Basics
🎬 Video