داده گمشده(Missing Value) چیست و چرا مهم است؟
در دنیای واقعی، دادهها هرگز تمیز و کامل نیستند. (Missing Value) به مقادیری اطلاق میشود که برای یک یا چند ویژگی (ستون) از یک یا چند مشاهده (سطر) در دسترس نیستند. این مقادیر گمشده، که اغلب با NULL، NaN (Not a Number)، ? یا یک خانه خالی نمایش داده میشوند، یکی از رایجترین مشکلات در کیفیت داده (Data Quality) هستند.
چرا اهمیت دارد؟
- الگوریتمهای خرابکار: بسیاری از الگوریتمهای یادگیری ماشین (مانند رگرسیون خطی یا SVM) نمیتوانند مستقیماً با مقادیر گمشده کار کنند و اجرای آنها با خطا مواجه میشود.
- نتایج مغرضانه (Biased): اگر دادههای گمشده به درستی مدیریت نشوند، میتوانند الگوهای آماری داده را به هم ریخته و منجر به نتایج تحلیلی نادرست و مدلهای پیشبینی ضعیف شوند.
چرا دادهها گم میشوند؟ (دلایل رایج)
دلایل اصلی گم شدن دادهها عبارتند از:
جمعآوری نشدن اطلاعات (Information not collected):
- مثال: افراد در یک نظرسنجی، از پاسخ دادن به سوالات حساس مانند «میزان درآمد» یا «وزن» خودداری میکنند.
- مثال: یک دانشجو فرم ثبتنام را به صورت ناقص پر میکند و فیلد «کد پستی» را خالی میگذارد.
عدم کاربرد ویژگی (Attribute not applicable):
مثال: ویژگی «درآمد سالانه» برای یک کودک ۶ ساله یا ویژگی «شغل» برای یک نوزاد، اساساً تعریف نشده و کاربردی ندارد.
گم شدن خود داده (Data is lost):
- مثال: یک دستگاه اندازهگیری آلودگی هوا در یک ایستگاه خاص، به مدت ۲ روز به دلیل نقص فنی از کار میافتد.
- مثال: دادههای یک سنسور به دلیل مشکلات شبکه هرگز به سرور مرکزی ارسال نمیشوند.
الگوهای داده گمشده (شناخت عمیقتر)
برای انتخاب بهترین روش، ابتدا باید الگوی گم شدن دادهها را بشناسیم. در منابع آکادمیک، سه الگوی اصلی تعریف میشود:
MCAR (Missing Completely At Random): کاملاً تصادفی.
- توضیح: گم شدن داده هیچ ربطی به مقدار خود آن متغیر یا متغیرهای دیگر ندارد. این یک اتفاق شانسی است.
- مثال: مسئول ورود دادهها به صورت تصادفی چند خانه از جدول را جا میاندازد. یا نمونه آزمایشگاهی به دلیل شکستن شیشه آزمایش از دست میرود.
- اهمیت: این بهترین و سادهترین سناریو است و حذف دادهها در این حالت (اگر کم باشند) معمولاً بایاس زیادی ایجاد نمیکند.
MAR (Missing At Random): تصادفی (اما وابسته).
- توضیح: گم شدن داده به مقدار خود متغیر گمشده بستگی ندارد، اما به مقادیر سایر متغیرها در آن ردیف بستگی دارد.
- مثال: در یک پرسشنامه پزشکی، مردان (یک متغیر) تمایل کمتری به پاسخ دادن به سوالات مربوط به افسردگی (متغیر گمشده) دارند. در اینجا، گم شدن داده افسردگی به جنسیت وابسته است، نه به سطح افسردگی خود فرد.
MNAR (Missing Not At Random): غیر تصادفی (بدترین حالت).
- توضیح: گم شدن داده به مقدار خود همان متغیر گمشده بستگی دارد.
- مثال: افرادی که درآمد بسیار بالایی دارند (یا بسیار کم)، تمایل بیشتری به وارد نکردن «میزان درآمد» خود دارند. در اینجا، خود مقدار “درآمد” دلیل گم شدن آن است.
- اهمیت: این پیچیدهترین حالت است و نیازمند روشهای تخمین بسیار پیشرفتهتری است، زیرا دادههای موجود، نماینده کل جامعه آماری نیستند.

- این تصویر سه الگوی اصلی گمشدگی داده را نشان میدهد.
- در MCAR گمشدن کاملاً تصادفی است.
- در MAR گمشدن به دادههای مشاهدهشده بستگی دارد.
- در MNAR گمشدن به مقدار واقعیِ همان متغیر گمشده وابسته است.
- شناخت این الگوها اولین قدم برای انتخاب روش مناسب برخورد با Missing Data است.
چطور نوع گم شدگی داده را تشخیص دهیم؟
برای انتخاب روش درست، فقط دانستن مفاهیم MCAR، MAR و MNAR کافی نیست؛باید بتوانیم تشخیص دهیم دادهها واقعاً در کدام دسته قرار میگیرند.
چند روش رایج برای تشخیص:
۱. آزمون Little’s MCAR Test
اگر نتیجه آزمون نشان دهد دادهها MCAR هستند، یعنی گمشدن کاملاً تصادفی است و روشهایی مانند حذف سطر آسیب جدی نمیزند.
۲. ایجاد ستون کمکی
یک ستون کمکی (Indicator) میسازیم:
Missing_Age = 1 → اگر سن گمشده است
Missing_Age = 0 → اگر موجود است
اگر Missing_Age با سایر ویژگیها (مثل جنسیت، درآمد، تحصیلات) رابطه داشته باشد → دادهها MAR هستند.
۳. تحلیل الگوها و منطق دادهها
اگر دلیل گمشدن وابسته به خود مقدار باشد (مثلاً درآمدهای بسیار بالا ثبت نمیشوند) → معمولاً MNAR است.
روش های تصویری (Visualization)
نمایش گرافیکی میزان و الگوی گمشدگی، درک بسیار خوبی از مشکل میدهد و انتخاب روش مناسب را راحت میکند.
چند روش رایج:
- Heatmap: نمایش سطرهای کامل در مقابل سطرهای ناقص
- Matrix Plot: نمایش بلوکی دادههای گمشده و موجود
- Bar Plot: تعداد مقادیر گمشده در هر ستون
- Missingno Library: در پایتون:ابزار آماده برای تولید نمودارهای missingness
این نمودارها کمک میکنند بفهمیم آیا دادههای گمشده الگوی خاصی دارند یا نه.

این تصویر یک مثال از نمایش گرافیکی دادههای گمشده است. رنگهای روشن بخشهای خالی (Missing) و رنگهای تیره مقادیر موجود را نشان میدهند. با چنین نمایشهایی میتوان الگوی گمشدگی، نقاط پرت و ستونهای دارای مشکل را سریع تشخیص داد.
استراتژیهای برخورد با دادههای گمشده
انتخاب روش مناسب به کاربرد و شرایط بستگی دارد. سه رویکرد اصلی وجود دارد:
الف) حذف (Deletion)
سادهترین راهکار، حذف کردن دادههای مشکلدار است.
۱. حذف سطر (Listwise Deletion):
- توضیح: کل سطر (Data Object یا نمونه) که حاوی حداقل یک مقدار گمشده است، حذف میشود.
- جدول اولیه: | سن | درآمد | شغل | |—|—|—| | 25 | 40 | مهندس | | 30 | NULL | پزشک | | 42 | 80 | وکیل |
- جدول پس از حذف سطر: | سن | درآمد | شغل | |—|—|—| | 25 | 40 | مهندس | | 42 | 80 | وکیل |
- مشکل: اگر دادههای گمشده زیاد باشند (مثلاً ۱۰٪ دادهها)، حجم زیادی از دادههای آموزشی ارزشمند را از دست میدهیم.
۲. حذف ستون (Column Deletion):
- توضیح: کل ستون (Feature یا متغیر) که حاوی داده گمشده است، حذف میشود.
- چه زمانی؟ فقط زمانی که درصد بسیار زیادی (مثلاً بالای ۶۰-۷۰٪) از مقادیر یک ستون خاص گم شده باشد و آن ستون اهمیت حیاتی نداشته باشد.
ب) تخمین یا جایگزینی (Imputation / Estimation)
رویکرد هوشمندانهتر و ارجح، تلاش برای تخمین زدن و پر کردن مقادیر گمشده است.
۱. جایگزینی آماری ساده (Simple Imputation):
- توضیح: استفاده از یک مقدار آماری مرکزی برای پر کردن تمام جاهای خالی آن ستون.
- میانگین (Mean): برای دادههای عددی (مثلاً پر کردن «سن» گمشده با میانگین سنی بقیه).
- میانه (Median): برای دادههای عددی که داده پرت (Outlier) دارند، بسیار بهتر از میانگین است.
- نما (Mode): برای دادههای دستهای (Nominal) (مثلاً پر کردن «رنگ چشم» گمشده با رایجترین رنگ).

نمودار بالا نشان میدهد که چگونه یک داده پرت (Outlier) میتواند میانگین (Mean) را به شدت منحرف کند، در حالی که میانه (Median) ثابت و مقاوم باقی میماند.
۲. جایگزینی مبتنی بر مدل (Model-based Imputation):
- توضیح: استفاده از الگوریتمهای یادگیری ماشین برای پیشبینی مقدار گمشده.
- رگرسیون (Regression): متغیری که داده گمشده دارد را به عنوان “هدف (y)” و سایر متغیرها را به عنوان “ویژگی (X)” در نظر میگیریم. یک مدل رگرسیون روی دادههای کامل آموزش داده و سپس مقدار گمشده را پیشبینی میکنیم.
- مثال (سری زمانی): اگر داده آلودگی هوا در ساعت ۳:۰۰ بعد از ظهر گم شده، میتوان از مقادیر ساعات قبلی (۱۲، ۱، ۲) برای پیشبینی (Time Series Prediction) آن استفاده کرد.

مثال (فضایی): میتوان از اطلاعات ایستگاههای سنجش آلودگی در اطراف (ایستگاههای A و C) برای تخمین مقدار گمشده ایستگاه B استفاده کرد.
۳. جایگزینی مبتنی بر شباهت (Similarity-based):
- توضیح: پیدا کردن نمونههای (سطرهای) مشابه با نمونهای که داده گمشده دارد و استفاده از مقادیر آنها.
- مثال (KNN Imputation): k همسایه نزدیک (K-Nearest Neighbors) به سطر مورد نظر را (بر اساس سایر ویژگیها) پیدا میکنیم و مقدار گمشده را با میانگین (یا میانه) مقادیر آن ویژگی در بین k همسایه، پر میکنیم.

ج) نادیده گرفتن (Ignoring)
در برخی موارد، میتوانیم مقدار گمشده را رها کنیم، به شرطی که الگوریتم ما توانایی مدیریت آن را داشته باشد.
- توضیح: در حین محاسبات، آن داده نادیده گرفته میشود.
- مثال: اگر هنگام محاسبه شباهت بین دو فرد، ویژگی «سن» برای یکی از آنها گمشده بود، میتوان این ویژگی را از محاسبه شباهت کنار گذاشت و شباهت را بر اساس باقی ویژگیها محاسبه کرد.

این فلوچارت یک راهنمای ساده برای انتخاب روش مناسب برخورد با دادههای گمشده است.با توجه به نوع گمشدگی (MCAR، MAR، MNAR)، مقدار دادههای خالی و اهمیت متغیر، تصمیم گرفته میشود که از حذف، جایگزینی ساده، روشهای مدلمحور یا KNN Imputation استفاده شود.هدف این نمودار کمک به انتخاب سریع و منطقی بهترین روش مدیریت Missing Data است.
د) روشهای تکمیلی
1- رفتار الگوریتمهای یادگیری ماشین با داده های گمشده
هریک از الگوریتمها رفتار متفاوتی دارند:
- درخت تصمیم (Decision Tree)
خودش میتواند با مقادیر گمشده کنار بیاید و آنها را در بهترین شاخه هدایت کند. - XGBoost ،LightGBM ،CatBoost
این مدلها بهطور داخلی مقدار گمشده را مدیریت میکنند و لازم نیست قبل از آن Impute کنیم. - KNN، SVM، Regression، Logistic Regression
این الگوریتمها نمیتوانند با داده گمشده کار کنند و قبل از استفاده باید Imputation انجام شود. - K-Means
وجود داده گمشده باعث خطا میشود؛ قبل از خوشهبندی باید ستون یا سطر کامل شود.
این بخش کمک میکند انتخاب کنیم که چه زمانی باید Imputation انجام دهیم و چه زمانی الگوریتم خودش مدیریت میکند.
چرا Imputation گاهی خطرناک است؟
هرچند پر کردن دادهها ضروری است، اما میتواند مشکلاتی ایجاد کند:
- کاهش واریانس دادهها
چون مقادیر مشابه به داده تزریق میشود. - ایجاد الگوهای مصنوعی
ممکن است روابطی شکل بگیرد که در داده واقعی وجود نداشته است. - افزایش Bias
مخصوصاً در روشهای ساده مثل میانگین یا میانه. - وابستگی شدید مدل به دادههای فرضی
داده پرشده همیشه واقعی نیست؛ مدل ممکن است فریب بخورد.
به همین دلیل، همیشه باید کیفیت Imputation کنترل و گزارش شود.
نکات مهم در برخورد با داده های گمشده
- قبل از هرکار، الگوی Missingness را بررسی کن.
- برای دادههای دارای Outlier از میانه استفاده کن، نه میانگین.
- اگر ستون بیش از ۷۰٪ گمشدگی دارد، حذف آن معمولاً بهتر است.
- از نشت اطلاعات (Data Leakage) جلوگیری کنImputation : را جداگانه روی train و test انجام بده.
- برای دادههای دستهای، اگر تعداد دسته زیاد باشد، مود همیشه بهترین گزینه نیست.
- همیشه درصد و نحوهی مدیریت دادههای گمشده را مستند کن.
مثال حل شده
سناریو: یک شرکت، دادههای زیر را از ۶ کارمند خود دارد و میخواهد تحلیلی روی حقوق و تجربه انجام دهد، اما دادهها ناقص هستند.
جدول دادههای اولیه:
| ID | سن | تجربه (سال) | دپارتمان | حقوق (میلیون تومان) |
|---|---|---|---|---|
| 1 | 25 | 3 | فروش | 15 |
| 2 | 45 | 20 | NULL | 45 |
| 3 | 30 | NULL | IT | 18 |
| 4 | 50 | 25 | فروش | NULL |
| 5 | 28 | 5 | IT | 16 |
| 6 | 55 | 30 | فروش | 150 (Outlier) |
چالش: ما سه مقدار گمشده (NULL) در سه ستون مختلف داریم.
حل: گام به گام جایگزینی
1: پر کردن “دپارتمان” (ID 2)
- نوع: این یک ویژگی دستهای (Categorical) است.
- روش: از نما (Mode) استفاده میکنیم (رایجترین مقدار).
- دادههای موجود: {فروش، IT، فروش، IT، فروش}
- فراوانی:
- فروش: 3
- IT: 2
- تصمیم: رایجترین دپارتمان، “فروش” است.
- نتیجه: مقدار NULL برای ID 2 با “فروش” پر میشود.
2: پر کردن “تجربه” (ID 3)
- نوع: عددی.
- روش: ابتدا میانگین و میانه را بررسی میکنیم.
- دادههای موجود: {3, 20, 25, 5, 30}
- محاسبه میانگین (Mean):

- محاسبه میانه (Median): مرتبسازی: {3, 5, 20, 25, 30} ← میانه 20 است.
- تصمیم: در این دادهها داده پرت آشکاری وجود ندارد و مقادیر 16.6 و 20 هر دو منطقی به نظر میرسند. از میانگین (16.6) استفاده میکنیم.
- نتیجه: مقدار NULL برای ID 3 با 16.6 پر میشود.
3: پر کردن “حقوق” (ID 4)
- نوع: عددی.
- روش: ابتدا میانگین و میانه را بررسی میکنیم.
- دادههای موجود: {15, 45, 18, 16, 150}
- شناسایی داده پرت: مقدار 150 به وضوح یک داده پرت (Outlier) است.
- محاسبه میانگین (Mean):

- محاسبه میانه (Median): مرتبسازی: {15, 16, 18, 45, 150} ← میانه 18 است.
- تحلیل و تصمیم: میانگین (48.8 میلیون) به شدت توسط داده پرت (150) منحرف شده است و اصلاً نماینده خوبی برای حقوق کارمند ID 4 (با 25 سال سابقه) نیست. اما میانه (18 میلیون) به داده پرت حساس نیست و مقدار بسیار منطقیتری را برای جایگزینی ارائه میدهد.
- نتیجه: مقدار NULL برای ID 4 با 18 پر میشود.
جدول نهایی پس از جایگزینی (Imputation):
| ID | سن | تجربه (سال) | دپارتمان | حقوق (میلیون تومان) |
|---|---|---|---|---|
| 1 | 25 | 3 | فروش | 15 |
| 2 | 45 | 20 | فروش | 45 |
| 3 | 30 | 16.6 | IT | 18 |
| 4 | 50 | 25 | فروش | 18.0 |
| 5 | 28 | 5 | IT | 16 |
| 6 | 55 | 30 | فروش | 150 |
خلاصه روش ها و مزایا و معایب
| روش برخورد | مزایا | معایب |
|---|---|---|
| حذف سطر | ساده، سریع. | از دست دادن دادههای ارزشمند، احتمال ایجاد بایاس (Bias). |
| حذف ستون | ساده | از دست دادن اطلاعات یک ویژگی به طور کامل. |
| جایگزینی ساده (Mean/Median/Mode) | سریع، قابل فهم، حفظ اندازه داده. | واریانس دادهها را کم میکند، روابط بین متغیرها را نادیده میگیرد. |
| جایگزینی مبتنی بر مدل/شباهت | دقیقترین روش، حفظ ساختار و روابط دادهها. | پیچیدگی محاسباتی، زمانبر بودن. |
| نادیده گرفتن | ساده، نیازی به تغییر داده نیست. | همه الگوریتمها این قابلیت را ندارند. |
جمع بندی
دادههای گمشده یکی از اساسیترین چالشهای مرحلهی پیشپردازش داده هستند و تقریباً در همهی مجموعهدادههای واقعی دیده میشوند. کیفیت برخورد با دادههای گمشده میتواند دقت تحلیل، اعتبار نتایج آماری و عملکرد نهایی مدلهای یادگیری ماشین را بهشدت تحت تأثیر قرار دهد.
برای مدیریت درست دادههای گمشده باید:
- نوع گمشَدگی (MCAR، MAR، MNAR) را شناسایی کنیم
- الگوی Missingness را با روشهای گرافیکی بررسی کنیم
- روش مناسب را بر اساس نوع داده، مقدار و اهمیت ویژگی انتخاب کنیم
- بدانیم هر الگوریتم یادگیری ماشین چه رفتاری با دادهی گمشده دارد
- از خطرات Imputation مثل کاهش واریانس یا ایجاد الگوهای مصنوعی آگاه باشیم
