Data Processing কী এবং কেন দরকার?
Machine Learning শেখার আগে সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো ডেটা প্রস্তুত করা। একটি ML মডেল যতটা ভালো হবে, তা নির্ভর করে তার ডেটা কতটা পরিষ্কার ও সঠিকভাবে প্রস্তুত করা হয়েছে তার উপর।
কল্পনা করুন আপনি বিরিয়ানি রান্না করবেন। বাজার থেকে কাঁচা সবজি, মাংস, মশলা এনেছেন। এগুলো সরাসরি হাঁড়িতে ফেললেই কি বিরিয়ানি হবে? অবশ্যই না! আপনাকে আগে ধুতে হবে, কাটতে হবে, মশলা মাখাতে হবে।
Machine Learning-এও একই কথা: Raw Data → Process → তারপর Model।
কেন Raw Data সরাসরি ব্যবহার করা যায় না?
| সমস্যা | উদাহরণ | কী হয়? |
|---|---|---|
| Missing Values | কিছু ঘর খালি | Model error দেয় |
| Different Scales | বয়স ১-১০০, আয় ১০,০০০-১০,০০,০০০ | বড় সংখ্যা বেশি গুরুত্ব পায় |
| Text Categories | "ঢাকা", "চট্টগ্রাম" | Machine বোঝে না |
| Skewed Data | বেশিরভাগ মানুষের আয় কম, কিছু ধনীর অনেক বেশি | Model ভুল শেখে |
| Outliers | বয়স কলামে মান = ৯৯৯ | Model বিভ্রান্ত হয় |
সম্পূর্ণ ML Pipeline
Numerical Data Processing
Numerical Data হলো সংখ্যায় প্রকাশিত ডেটা। এটি দুই ধরনের: Continuous (যেকোনো দশমিক মান — উচ্চতা, বেতন) এবং Discrete (শুধু পূর্ণসংখ্যা — রুম সংখ্যা, ক্লিক সংখ্যা)।
| ডোমেইন | Continuous Variables | Discrete Variables |
|---|---|---|
| বাড়ির দাম | আয়তন (বর্গফুট), দূরত্ব (কিমি) | রুম সংখ্যা, বাথরুম সংখ্যা |
| ছাত্র ফলাফল | GPA (৩.৭৫), নম্বর (%) | উপস্থিতির দিন, পরীক্ষা সংখ্যা |
| Customer Analytics | মাসিক আয়, ক্রয়ের পরিমাণ | ক্রয়ের সংখ্যা, পরিবারের সদস্য |
Standardization (Z-Score Normalization)
বয়স কলাম: ২২–৩০, আয় কলাম: ৩৫,০০০–৮০,০০০। ML model আয়কে বেশি গুরুত্ব দেবে শুধু সংখ্যা বড় বলে। এটা ভুল! Standardization সব কলামকে একই স্কেলে আনে।
Z = +1 → গড়ের ১ standard deviation উপরে
Z = −1 → গড়ের ১ standard deviation নিচে
Step-by-Step উদাহরণ (বয়স কলাম)
| ছাত্র | বয়স | গড় (Mean) | বয়স − গড় | Std Dev | Z-Score |
|---|---|---|---|---|---|
| রাহেল | ২৫ | ২৫.৭ | −০.৭ | ৪.০ | −০.১৭৫ |
| করিম | ৩০ | ২৫.৭ | +৪.৩ | ৪.০ | +১.০৭৫ |
| সুমাইয়া | ২২ | ২৫.৭ | −৩.৭ | ৪.০ | −০.৯২৫ |
সুবিধা ও অসুবিধা
০ থেকে ১-এ থাকে না
কম intuitive
SVM, K-Means, PCA-তে সেরা
সব কলাম সমান গুরুত্ব পায়
Min-Max Scaling
উদাহরণ: পরীক্ষার নম্বর [৪৫, ৬০, ৭৫, ৮৫, ৯৫]
| নম্বর | Min | Max | নম্বর − Min | Max − Min | Scaled মান |
|---|---|---|---|---|---|
| ৪৫ | ৪৫ | ৯৫ | ০ | ৫০ | ০.০০ |
| ৬০ | ৪৫ | ৯৫ | ১৫ | ৫০ | ০.৩০ |
| ৭৫ | ৪৫ | ৯৫ | ৩০ | ৫০ | ০.৬০ |
| ৮৫ | ৪৫ | ৯৫ | ৪০ | ৫০ | ০.৮০ |
| ৯৫ | ৪৫ | ৯৫ | ৫০ | ৫০ | ১.০০ |
Standardization vs Min-Max: তুলনা
| বিষয় | Standardization | Min-Max |
|---|---|---|
| Output Range | নির্দিষ্ট নয় (সাধারণত −৩ থেকে +৩) | সবসময় ০ থেকে ১ |
| Outlier প্রভাব | তুলনামূলক কম | Outlier range বিকৃত করে |
| সূত্র | (x − mean) / std | (x − min) / (max − min) |
| সেরা Algorithm | SVM, K-Means, PCA, Neural Net | KNN, Neural Net, Image Data |
| কখন ব্যবহার | Outlier থাকলে | ০–১ range দরকার হলে |
Log Transformation
Income data-তে বেশিরভাগ মানুষের আয় কম (১০,০০০–৫০,০০০ টাকা), কিন্তু কিছু ধনীর আয় কোটি টাকা। এই ভারসাম্যহীনতাকে Right Skew বলে। এতে ML model শুধু ধনীদের pattern শেখে।
Log Transformation-এর পরে কী হয়?
| ব্যক্তি | মাসিক আয় (আগে) | Log মান (পরে) | পার্থক্য কমেছে? |
|---|---|---|---|
| রিকশাচালক | ৮,০০০ | ৮.৯৯ | ✅ |
| শিক্ষক | ৩০,০০০ | ১০.৩১ | ✅ |
| ডাক্তার | ১,৫০,০০০ | ১১.৯২ | ✅ |
| ব্যবসায়ী | ৫,০০,০০০ | ১৩.১২ | ✅ |
| শিল্পপতি | ৫০,০০,০০০ | ১৫.৪৩ | ✅ Extreme outlier নিয়ন্ত্রিত |
Log Transformation শুধু ধনাত্মক (positive) মানে কাজ করে। ডেটায় ০ বা ঋণাত্মক মান থাকলে সরাসরি log ব্যবহার করা যাবে না। সমাধান: log(x + 1) ব্যবহার করুন।
Categorical Data Processing
Categorical Data হলো সেই ডেটা যা নির্দিষ্ট বিভাগে বিভক্ত — সংখ্যা নয়, বরং নাম বা লেবেল।
| ধরন | সংজ্ঞা | উদাহরণ | সেরা Encoding |
|---|---|---|---|
| Nominal | কোনো ক্রম নেই | লিঙ্গ, শহর, রঙ, পেশা | One-Hot / Frequency |
| Ordinal | নির্দিষ্ট ক্রম আছে | শিক্ষার স্তর, রেটিং (১-৫) | Ordinal Encoding |
One-Hot Encoding
যদি Red=1, Blue=2, Green=3 করি, তাহলে model মনে করবে Green > Blue > Red — এটা সম্পূর্ণ ভুল! One-Hot Encoding প্রতিটি category-র জন্য আলাদা ০/১ column তৈরি করে।
রূপান্তর উদাহরণ: শহর
করিম → চট্টগ্রাম
সুমাইয়া → সিলেট
নাফিস → ঢাকা
করিম → [0, 1, 0]
সুমাইয়া → [0, 0, 1]
নাফিস → [1, 0, 0]
| ছাত্র | শহর_ঢাকা | শহর_চট্টগ্রাম | শহর_সিলেট |
|---|---|---|---|
| রাহেল | ১ | ০ | ০ |
| করিম | ০ | ১ | ০ |
| সুমাইয়া | ০ | ০ | ১ |
| নাফিস | ১ | ০ | ০ |
১০০টি শহর থাকলে One-Hot Encoding করলে ১০০টি নতুন column তৈরি হবে! এতে memory বাড়ে এবং overfitting হওয়ার সম্ভাবনা থাকে। এক্ষেত্রে Target Encoding বা Frequency Encoding ভালো।
Target Encoding
প্রতিটি category-কে সেই category-র গড় target মান দিয়ে replace করা হয়।
Customer Churn উদাহরণ
| বিভাগ | মোট Customer | Churn হয়েছে | Churn Rate | Encoded মান |
|---|---|---|---|---|
| IT | ৩ | ২ | ২÷৩ = ০.৬৭ | ০.৬৭ |
| Banking | ২ | ১ | ১÷২ = ০.৫০ | ০.৫০ |
| Healthcare | ১ | ০ | ০÷১ = ০.০০ | ০.০০ |
Target Encoding-এ Data Leakage-এর ঝুঁকি আছে। সমাধান: শুধু Training set-এ mean calculate করুন, তারপর Test set-এ apply করুন। Cross-validation ব্যবহার করুন।
Frequency Encoding
প্রতিটি category কতবার ডেটাসেটে আছে সেই সংখ্যা দিয়ে replace করা হয়।
| ব্যক্তি | শহর (আগে) | কতবার আছে | Encoded মান |
|---|---|---|---|
| ব্যক্তি ১ | ঢাকা | ৫ | ৫ |
| ব্যক্তি ২ | চট্টগ্রাম | ৩ | ৩ |
| ব্যক্তি ৩ | ঢাকা | ৫ | ৫ |
| ব্যক্তি ৪ | সিলেট | ১ | ১ |
| ব্যক্তি ৫ | ঢাকা | ৫ | ৫ |
Ordinal Encoding
যখন category-গুলোর মধ্যে স্বাভাবিক ক্রম আছে, তখন ক্রম অনুযায়ী সংখ্যা দেওয়া হয়।
| ছাত্র | শিক্ষা (আগে) | ক্রম | Encoded মান |
|---|---|---|---|
| নাফিস | High School | সর্বনিম্ন | ১ |
| করিম | Bachelor | মধ্যম | ২ |
| সুমাইয়া | Master | উচ্চ | ৩ |
| রাহেল | PhD | সর্বোচ্চ | ৪ |
সব Encoding পদ্ধতির তুলনা
| পদ্ধতি | কখন ব্যবহার | সুবিধা | অসুবিধা |
|---|---|---|---|
| One-Hot | Nominal, কম categories | মিথ্যা ক্রম নেই | Column বেড়ে যায় |
| Target | High cardinality, Supervised | Powerful, কম column | Data leakage ঝুঁকি |
| Frequency | যেকোনো categorical | সহজ ও দ্রুত | একই সংখ্যায় ভিন্ন category |
| Ordinal | ক্রম আছে এমন data | ক্রম সংরক্ষণ করে | Nominal-এ ভুল ফলাফল |
Text Data Processing
Text Data হলো লেখা বা মন্তব্যের আকারে ডেটা — product review, social media post, email, customer complaint ইত্যাদি।
Machine শুধু সংখ্যা বোঝে। "ভালো" এবং "খারাপ" শব্দ machine-এর কাছে অর্থহীন। তাই Text → Numbers রূপান্তর করতে হবে।
প্রক্রিয়া: Raw Text → Tokenize (শব্দ ভাগ) → Vectorize (সংখ্যায় রূপান্তর) → ML Model
Bag of Words (BoW)
সব বাক্য থেকে unique শব্দের একটি Vocabulary তৈরি করে, তারপর প্রতিটি বাক্যে প্রতিটি শব্দ কতবার আছে তা গণনা করে।
উদাহরণ: Product Reviews
| ID | বাক্য |
|---|---|
| Doc1 | ভালো পণ্য ভালো দাম |
| Doc2 | খারাপ পণ্য ফেরত চাই |
| Doc3 | দাম কম পণ্য ভালো |
[ ভালো, পণ্য, দাম, খারাপ, ফেরত, চাই, কম ] — মোট ৭টি unique শব্দ
Word Count Matrix
| Document | ভালো | পণ্য | দাম | খারাপ | ফেরত | চাই | কম |
|---|---|---|---|---|---|---|---|
| Doc1 | ২ | ১ | ১ | ০ | ০ | ০ | ০ |
| Doc2 | ০ | ১ | ০ | ১ | ১ | ১ | ০ |
| Doc3 | ১ | ১ | ১ | ০ | ০ | ০ | ১ |
TF-IDF Encoding
"এবং", "কিন্তু", "হয়" — এই common শব্দগুলো BoW-এ বেশি count পায় কিন্তু কোনো অর্থবহ তথ্য দেয় না।
TF = Term Frequency = ওই document-এ শব্দটি কতবার এসেছে
IDF = Inverse Document Frequency = শব্দটি কতটা বিরল (সব document মিলিয়ে)
TF-IDF = TF × IDF → বিরল কিন্তু গুরুত্বপূর্ণ শব্দকে বেশি মান দেয়
| বিষয় | Bag of Words | TF-IDF |
|---|---|---|
| Common শব্দের মান | বেশি | কম (IDF দিয়ে penalty) |
| বিরল কিন্তু গুরুত্বপূর্ণ শব্দ | কম মান পায় | বেশি মান পায় |
| সঠিকতা | তুলনামূলক কম | সাধারণত বেশি |
| জটিলতা | সহজ | কিছুটা জটিল |
| ব্যবহার | সহজ classification | Search engine, Document similarity |
N-Grams
BoW-এ শব্দের ক্রম হারিয়ে যায়। "ভালো নয়" এবং "নয় ভালো" BoW-এ একই দেখায়। N-Grams এই সমস্যা সমাধান করে।
উদাহরণ: "এই পণ্য একদম ভালো নয়"
| N-Gram ধরন | তৈরি হওয়া টোকেন |
|---|---|
| Unigram (1-gram) | এই | পণ্য | একদম | ভালো | নয় |
| Bigram (2-gram) | এই পণ্য | পণ্য একদম | একদম ভালো | ভালো নয় |
| Trigram (3-gram) | এই পণ্য একদম | পণ্য একদম ভালো | একদম ভালো নয় |
BoW vs TF-IDF vs N-Grams: চূড়ান্ত তুলনা
| বিষয় | BoW | TF-IDF | N-Grams |
|---|---|---|---|
| শব্দের ক্রম | রক্ষা করে না | রক্ষা করে না | আংশিক রক্ষা করে |
| Common শব্দ সমস্যা | আছে | সমাধান করে | আছে |
| Memory ব্যবহার | মাঝামাঝি | মাঝামাঝি | অনেক বেশি |
| সহজ Implementation | সবচেয়ে সহজ | মাঝামাঝি | কঠিন |
| সেরা ব্যবহার | Basic classification | Document search | Sentiment analysis |
সঠিক Processing Technique বাছাই
| ডেটার ধরন | পরিস্থিতি | প্রস্তাবিত পদ্ধতি |
|---|---|---|
| Numerical | বিভিন্ন scale-এ আছে | Standardization বা Min-Max |
| Numerical | Outlier অনেক বেশি | Standardization (Z-Score) |
| Numerical | Neural Network বা Image | Min-Max (০ থেকে ১) |
| Numerical | Income, Price (Skewed) | Log Transform → তারপর Scaling |
| Categorical | Nominal, কম categories (২–১০) | One-Hot Encoding |
| Categorical | High cardinality (১০০+ categories) | Target বা Frequency Encoding |
| Categorical | ক্রম আছে (শিক্ষা, রেটিং) | Ordinal Encoding |
| Text | Basic classification | BoW বা TF-IDF |
| Text | Sentiment analysis | TF-IDF + N-Grams |
| Text | Complex NLP | Word2Vec বা BERT |
সাধারণ ভুলসমূহ ও সমাধান
| ভুল | সমস্যা কী? | সমাধান |
|---|---|---|
| অপ্রয়োজনীয় Scaling | Tree-based model-এ scaling দরকার নেই | কোন algorithm ব্যবহার করছেন জানুন |
| ভুল Encoding | শিক্ষার স্তরে One-Hot করলে ক্রম হারায় | Ordinal data-তে Ordinal Encoding করুন |
| Data Leakage | Test data-র তথ্য train-এ আসে | শুধু train data-তে fit করুন |
| Skewed Data উপেক্ষা | Model ভুল শেখে | Distribution দেখে log transform করুন |
| High Cardinality উপেক্ষা | ১০০ শহরে One-Hot → ১০০ column | Target বা Frequency Encoding ব্যবহার করুন |
| Test data আলাদাভাবে Scale | Train ও Test-এর scale আলাদা হয় | Train-এর scaler দিয়ে Test scale করুন |
End-to-End বাস্তব উদাহরণ
একটি Customer dataset — predict করতে চাই কোন customer পণ্য কিনবে।
মূল Dataset
| Age | Salary | City | Education | Review |
|---|---|---|---|---|
| ২৫ | ৩০,০০০ | ঢাকা | Bachelor | দারুণ পণ্য |
| ৩২ | ৫০,০০০ | চট্টগ্রাম | Master | ভালো না |
| ৪৫ | ২,০০,০০০ | ঢাকা | PhD | অসাধারণ পণ্য সেবা |
| ২২ | ২৫,০০০ | সিলেট | HSC | মোটামুটি |
Processing Plan
| কলাম | ডেটার ধরন | সমস্যা | Processing পদ্ধতি |
|---|---|---|---|
| Age | Numerical Discrete | বিভিন্ন scale | Standardization |
| Salary | Numerical Continuous | Right-skewed, বড় মান | Log Transform → Standardization |
| City | Categorical Nominal | Machine text বোঝে না | One-Hot Encoding (৩ column) |
| Education | Categorical Ordinal | ক্রম আছে | Ordinal Encoding: HSC=১, Bach=২, Mas=৩, PhD=৪ |
| Review | Text Data | Machine text বোঝে না | TF-IDF Vectorization |
প্রক্রিয়াকৃত ডেটা (Final)
| Age_Z | LogSal_Z | City_ঢাকা | City_চট্ট | City_সিলেট | Edu_Ord |
|---|---|---|---|---|---|
| −০.৮৫ | −০.৭২ | ১ | ০ | ০ | ২ |
| −০.১২ | ০.১৩ | ০ | ১ | ০ | ৩ |
| +১.৪৫ | +১.৮৮ | ১ | ০ | ০ | ৪ |
| −১.৪৮ | −১.২৯ | ০ | ০ | ১ | ১ |
Revision, Quiz & Exercises
✅ Data Processing = কাঁচা ডেটাকে ML-উপযোগী করা
✅ Numerical → Standardization / Min-Max / Log Transform
✅ Categorical Nominal → One-Hot | Ordinal → Ordinal Encoding
✅ Text → BoW / TF-IDF / N-Grams
✅ Scaler সবসময় Train-এ fit করুন, Test-এ শুধু transform করুন
✅ Data Leakage সবচেয়ে বড় ভুল — সতর্ক থাকুন
Interview প্রশ্নোত্তর
MCQ পরীক্ষা
বিকল্পে ক্লিক করুন এবং উত্তর দেখুন।
ব্যবহারিক অনুশীলন
Viva প্রশ্নসমূহ
- Numerical এবং Categorical Data-র পার্থক্য উদাহরণ দিয়ে বলুন।
- কেন Raw Data সরাসরি ML model-এ দেওয়া যায় না? ৩টি কারণ বলুন।
- Standardization কোন কোন ML algorithm-এর জন্য গুরুত্বপূর্ণ?
- Target Encoding কীভাবে Data Leakage ঘটাতে পারে?
- Bag of Words-এর ৩টি সীমাবদ্ধতা বলুন।
- Bigram এবং Trigram-এর পার্থক্য উদাহরণ দিয়ে বোঝান।
- High Cardinality কী এবং কীভাবে সমাধান করবেন?
- ML pipeline-এর ধাপগুলো সঠিক ক্রমে বলুন।
Feature Engineering এবং Missing Value Handling — কীভাবে নতুন উপযোগী feature তৈরি করবেন এবং missing data সামলাবেন।