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