مقادیر ناموجود/از دست رفته (Missing Values):

هم نمونه‌های ورودی(Instances) و هم فیچرهای یک دیتاست می‌توانند مقادیر ناموجود یا مفقودالاثر داشته‌ باشند. فیچرهایی که در اِزای یکسری نمونه‌ها، مقادیر تعریف نشده داشته باشند یا نمونه‌هایی که کلا هیچ مقداری برای فیچرهای متناظر با آنها ثبت نشده باشد، به عنوان: " missing data " در نظر گرفته می شوند:

ML example of missing values

در تصویر فوق؛ یک نمونه‌ی ورودی(نمونه‌ی شماره 8) را مشاهده میکنید که به اِزای هیچکدام از فیچرهای جدول، دارای مقدار نمیباشد و این بدین معناست که این نمونه رسما بی‌مصرف است. همچنین اگر به فیچر شماره‌ی 8 دقت کنید متوجه میشوید که به اِزای 10 نمونه‌ی ورودی، 7 مقدار ثبت نشده یا ناموجود دارد؛ این بدین معناست که اگر قصد داشتیم بر اساس فیچر شماره‌ی 8 الگویی بین نمونه‌ها پیدا کنیم، اینکار عملا ممکن نبود چون اکثر نمونه‌ها در اِزای این فیچر فاقد مقدار میباشند.

بصورت قراردادی، هر فیچری که 5% الی 10% مقادیر آن ناموجود باشند را در زمره‌ی Missing Data به حساب می‌آورند (همچنین این تیپ از فیچرها به فیچرهایی با نرخ غیبت بالا یا به اصطلاح high absence rate معروفند). از طرف دیگر، تمام نمونه‌هایی که هیچ مقداری به اِزای فیچرهای تعریف شده نداشته باشند را باید حذف کرد چون نه تنهاهیچگونه اطلاعاتی به مدل نمیدهند بلکه ممکن است باعث بایاس شدن داده‌ها شوند.

هنگام برخورد با یک فیچر که دارای نرخ غیبت بالاست، توصیه می‌شود که آنرا حذف یا مقداردهی کنید. محبوب‌ترین روش‌های جایگزینی مقادیر ناموجود به شرح زیر میباشند:

  • اِنتساب میانگین (Mean imputation): جایگزینی مقادیر ناموجود با میانگینِ مقادیر در دسترس برای فیچر موردنظر.
  • اِنتساب رگرسیون (Regression imputation): جایگزینی مقادیر ناموجود با مقادیر پیش‌بینی شده‌ای که از طریق یک تابع رگرسیون به دست آمده‌اند.


نکته:

منظور از یک تابع رگرسیون، مدلی آماری میباشد که برای تخمین رابطه‌ی بین یک متغیر وابسته و یک یا چند متغیر مستقل استفاده می‌شود. تابع رگرسیون می‌تواند خطی(linear)، لجستیک(logistic)، چند جمله ای(polynomial) و ... باشد.


در حالی که پیاده‌سازی روش انتسابِ میانگین ساده‌تر بنظر میرسد ولی این رویکرد به دلیل یکنواخت کردن همه‌ی نمونه‌ها میتواند منجر به بایاس شدن داده‌ها شود. حالا از طرف دیگر اگر رویکرد انتساب رگرسیون را هم پیش بگیریم، درست است که مقادیر ناموجود با مقادیر پیش‌بینی شده جایگزین میشوند ولی همین قضیه نیز به نوبه‌‌ی خود میتواند منجر به overfitting مدل بشود! یعنی مدل ایجاد شده، به‌ حدّی با داده‌های فاز آموزش اُخت شود که دیگر بدرد پردازش داده‌های جدیدی که در عمل با آنها برخورد میکند نخورد. علت این قضیه به آنجائی برمیگردد که همه‌ی داده‌های جایگزین شده از یک تابع پیروی کرده‌اند.

علاوه بر این، مواردی هم پیش میایند که مقادیر یک فیچر مبتنی بر متن بوده(مثل جنسیت) و دیگر نمیتوان مقادیر ناموجود آنرا با شیوه‌ی انتساب میانگین یا رگرسیون جایگزین کرد. در این مواقع بهترین راه‌حل این است که یا این تیپ نمونه‌ها را حذف کنیم یا یک برچسب یا اصطلاحا: Label به آنها اختصاص دهیم؛ مثلا بنویسم: " uncategorized " .

برچسب‌گذاری مقادیر ناموجود اغلب زمانی انجام می‌شود که حذف آنها بخش مهمی از دیتاست را حذف می‌کند. در این جور مواقع حتی با وجود اینکه ممکن است منطق بکار گرفته‌شده در برچسب‌گذاری داده‌های ناموجود روی مدل تاثیر داشته باشد، ولی باز هم بهتر از این است که آنها را خالی رها کنیم! زیرا خالی گذاشتن آنها باعث می‌شود تا مدل به صورت خودکار مفروضاتی را در خصوص آنها درنظر بگیرد.


نکته:

برای کسب اطلاعات بیشتر در مورد نحوه شناسایی و مدیریت مقادیر ناموجود، به این لینک مراجعه کنید.