⚖️ پردازش دادههای نامتوازن (Imbalanced Data Processing)
📖 مقدمه
در دنیای واقعی، اغلب با دادههایی روبهرو هستیم که توزیع کلاسهایشان مساوی نیست. به این وضعیت، عدم توازن دادهها (Imbalanced Data) میگویند. مثلاً در تشخیص تقلب در تراکنشهای بانکی، بیش از ۹۹٪ تراکنشها عادی و کمتر از ۱٪ آنها تقلبی هستند.
اگر با این نوع دادهها بدون اصلاح و آمادهسازی کار کنیم، مدلهای یادگیری ماشین سوگیری شدیدی به سمت کلاس غالب پیدا میکنند و عملکرد نامناسبی روی کلاسهای اقلیت خواهند داشت.
🧠 چرا دادههای نامتوازن مشکلسازند؟
| مشکل | نتیجه |
|---|---|
| 🔸 مدل بیشتر به کلاس غالب توجه میکند | دقت (accuracy) بالا ولی F1 پایین |
| 🔸 طبقهبندی نادرست کلاسهای نادر | مدل ارزش عملیاتی ندارد |
| 🔸 ارزیابی اشتباه عملکرد مدل | معیارهایی مثل accuracy گمراهکننده هستند |
📊 مثال از دادههای نامتوازن
اگر مدل همیشه بگوید "سالم"، 95٪ دقت دارد اما هیچ بیماری را شناسایی نمیکند!
🛠️ راهکارهای مقابله با دادههای نامتوازن
1. بازنمونهگیری (Resampling)
🔄 متعادل کردن تعداد نمونهها با:
-
Oversampling (افزایش نمونههای کلاس اقلیت)
-
Undersampling (کاهش نمونههای کلاس غالب)
📌 ابزار:
imbalanced-learnدر پایتون
2. استفاده از الگوریتمهای حساس به عدمتوازن
-
Tree-based models مثل Random Forest و XGBoost که پارامتر
class_weightدارند -
الگوریتمهایی با قابلیت وزندهی متفاوت به کلاسها
3. استفاده از معیارهای ارزیابی مناسب
| معیار | مزیت |
|---|---|
| Precision / Recall | تمرکز بر دقت کلاس اقلیت |
| F1-score | میانگین متوازن Precision و Recall |
| ROC-AUC / PR-AUC | مناسب برای ارزیابی کلی در دادههای نامتوازن |
| Confusion Matrix | بررسی کامل عملکرد مدل روی هر کلاس |
4. استفاده از تکنیکهای ترکیبی (Ensemble)
مدلهایی مانند:
-
EasyEnsemble
-
BalancedBaggingClassifier
که به طور خاص برای دادههای نامتوازن طراحی شدهاند
5. ایجاد دادههای مصنوعی (Synthetic Data)
تولید دادهی جدید با الگوریتمهایی مثل:
-
SMOTE (Synthetic Minority Oversampling Technique)
-
ADASYN: ایجاد داده با تمرکز روی نقاط دشوار
📈 مثال کاربردی با پایتون
📦 کتابخانههای مفید برای دادههای نامتوازن
| کتابخانه | کاربرد |
|---|---|
imbalanced-learn | بازنمونهگیری و الگوریتمهای ترکیبی |
scikit-learn | پشتیبانی از class_weight |
XGBoost, LightGBM | پشتیبانی قوی از دادههای نامتوازن |
TensorFlow / Keras | امکان وزندهی به loss برای کلاسها |
✅ جمعبندی
دادههای نامتوازن بخشی جدانشدنی از پروژههای دنیای واقعی هستند. با استفاده از تکنیکهای مناسب، میتوان مدلهایی ساخت که نهتنها دقت ظاهری بالا دارند بلکه در عمل، در شناسایی موارد مهم مانند تقلب، بیماری یا خطا عملکرد عالی دارند.