فرهاد بیرانوند
فرهاد بیرانوند
خواندن ۴ دقیقه·۲ سال پیش

نشت داده‌ها در یادگیری ماشین

در هنگام صلح بیشتر عرق بریز تا در خلال جنگ کمتر خون بریزی. سان تزو

مقدمه

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

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

منظور از نشت داده‌ها

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

مثال‌هایی از نشت داده‌ها

پیش از پرداختن به مثال‌ها، لازم است تا با دو مفهوم "ویژگی‌ها" (Features) و "متغیر هدف" (Class) آشنا شویم.

متغیر هدف: خروجی که مدل قصد دارد پیش‌بینی کند.

ویژگی‌ها: داده‌های مورد استفاده برای پیش‌بینی متغیر خروجی.

مثال 1 - ساده‌ترین حالت نشت داده‌ها زمانی است که ما در الگوریتم خود، متغیر هدف را نیز در مجموعه آموزش به عنوان ویژگی لحاظ می‌کنیم.

مثال 2 - حالت دیگر زمانی است که مجموعه‌های آموزش و آزمون در برخی داده‌ها همپوشانی دارند.

مثال 3 - برخی ویژگی‌ها در مجموعه داده، حاوی اطلاعاتی در مورد متغیر هدف هستند. این ویژگی‌ها را ویژگی‌های بدل (Giveaway Features) می‌نامند. مثلا در مجموعه داده مدلی که قرار است داشتن یک بیماری را پیش‌بینی کند، متغیری که نشان دهد بیمار یک عمل جراحی مربوطه انجام داده است، ویژگی بدل محسوب می‌شود که منجر به نشت داده‌ها می‌شود.

نشت داده‌ها را چگونه باید تشخیص داد؟

حالت 1 - در کل اگر مدل خیلی کامل جواب می‌دهد و نتایج ارزیابی فاز آزمون به فاز آموزش بسیار نزدیک است، باید به نشت داده‌ها شک کرد.

حالت 2 - در مرحله تحلیل کاوشی داده‌ها (DEA) باید ویژگی‌هایی را که بشدت با متغیر هدف همبستگی دارند کشف کرد. این متغیرها را بسته به شرایط باید حذف یا ادغام کرد.

حل مشکل نشت داده‌ها

ایده 1 - استخراج مجموعه مناسب از ویژگی‌ها

در انتخاب ویژگی‌ها باید اطمینان حاصل کرد که ویژگی‌های انتخاب شده با متغیر هدف همبسته نباشند، یا حاوی اطلاعاتی در مورد متغیر هدف نباشند.

ایده 2 - ایجاد یک مجموعه اعتبارسنجی مجزا

ایجاد یک مجموعه اعتبارسنجی مجزا
ایجاد یک مجموعه اعتبارسنجی مجزا

برای کاهش احتمال نشت داده‌ها، یک راه ایجاد مجموعه اعتبارسنجی علاوه بر مجموعه آموزش و مجموعه آزمون است. هدف از ایحاد مجموعه اعتبارسنجی، تقلید سناریوی دنیای واقعی است و می‌تواند به عنوان گام آخر مورد استفاده قرار گیرد. با انجام این کار، اگر بیش‌برازش (Overfitting) مشاهده شد، مدل قطعا در دنیای واقعی عملکرد نامناسیی خواهد داشت و احتمال نشت داده‌ها بسیار است.

ایده 3 - انجام مجزای پیش‌پردازش روی هر دو مجموعه آموزش و آزمون

در پیش‌پردازش داده‌ها، مرسوم است که نرمال‌سازی انجام شود. در نرمال‌سازی، مقدار داده بر میانگین آن تقسیم می‌شود. اغلب واقع این نرمال‌سازی بر کل مجموعه داده اعمال می‌شود، که ممکن است اطلاعات آزمون روی داده‌های آموزش تاثیر بگذارد و در نهایت منجر به نشت داده‌ها شود. بنابراین، برای پرهیز از نشت داده‌ها، نرمال‌سازی روی هر دو مجموعه، آموزش و آزمون، مستقلا صورت می‌گیرد.

ایده 4 - داده‌های سری زمانی

نمونه داده‌های سری زمانی بورس تهران
نمونه داده‌های سری زمانی بورس تهران

در برخورد با داده‌های سری زمانی، باید توجه بیشتری به نشت داده‌ها داشت. برای مثال، اگر به نحوی از داده‌های آینده در محاسبات ویژگی‌های فعلی یا پیش‌بینی‌ها استفاده شود، به احتمال زیاد مدل نهایی دارای نشت داده خواهد بود. معمولا این کار با تقسیم تصادفی داده‌ها به زیر مجموعه‌های آموزش و آزمون اتفاق می‌افتد. پس در کار با سری زمانی، ایجاد یک نقطه برش (Cutoff) در زمان می‌تواند بسیار مفید باشد، زیرا مانع از افشای اطلاعات پس از زمان پیش‌بینی می‌شود.

ایده 5 - اعتبارسنجی متقاطع (Cross-Validation)

اعتبارسنجی متقاطع
اعتبارسنجی متقاطع

وقتی داده‌های محدودی برای آموزش الگوریتم داریم، بهتر است که از اعتبارسنجی متقاطع در فاز آموزش بهره بریم. در اعتبارسنجی متقاطع، کل داده‌ها به k بخش شکسته می‌شوند و در طی k مرحله، هر بار k-1 بخش برای آموزش و یک بخش باقیمانده برای آزمون مدل استفاده می‌شود.

مزیت این رویکرد این است که از کل مجموعه داده برای اهداف آموزش و آزمون استفاده می‌شود.

نتیجه‌گیری

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

یادگیری ماشیننشت داده‌هاالگوریتمسری زمانیداده
متخصص علم داده و یادگیری ماشین
شاید از این پست‌ها خوشتان بیاید