راز بالانس بهتر توی داده‌های ناهمتراز: چرا باید برای هر گروه یه مرز خاص بذاریم!

Fall Back

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

حالا راه‌حل چیه؟ تا حالا خیلیا گفتن بیا “سنتتیک دیتا” بسازیم (یعنی با استفاده از روش‌های هوشمند مصنوعی داده‌سازی کنیم که دسته‌های کوچیک‌تر هم تعدادشون زیاد شه). از معروف‌ترین روش‌ها می‌تونم به SMOTE (یه تکنیک برای ساختن نمونه‌های مصنوعی توی گروه کوچیک) یا CT-GAN (یه مدل هوش مصنوعی که مشابه GAN هست و داده جعلی می‌سازه) اشاره کنم. ولی خبر خوب اینه که این مقاله نشون میده روش جدیدتری هست که خیلی بهتر جواب میده و اونم اسمش هست Group-aware threshold calibration یا به فارسی ساده: “تنظیم مرز تصمیم جدا برای هر گروه جمعیتی”.

این یعنی چی؟

خب، معمولاً وقتی می‌خوای بفهمی مدل یه چیزی رو تشخیص داده یا نه، باید یه خط مرز براش بذاری (مثلاً اگه احتمال بیشتر از ۰.۵ بود، بگو سرطان داره). وقتی همه گروه‌ها رو با یه خط مرز ببری جلو، بعضی گروه‌ها حالشون گرفته میشه! چون توی اون گروه مثلاً کلاً احتمالاها پایین‌تره یا بالاتره، مدل واسشون خوب کار نمی‌کنه. نویسنده‌های این مقاله اومدن برا هر گروه یه مرز جدا تعریف کردن.

نتیجه چی شد؟

طبق آزمایش‌هایی که رو کلی مدل مختلف (از مدل خطی گرفته تا درخت تصمیم، مدل‌های مبتنی بر نمونه (یا همون k-NN و اینا)، و تقویتی مثل Boosting) انجام دادن، دیدن این روش group-aware راحت ۱.۵ تا ۴ درصد دقت بالانس‌شده بیشتری نسبت به مدل‌هایی داشت که فقط داده مصنوعی اضافه کردن! balanced accuracy یعنی مدل هم برای گروه بزرگ و هم برای گروه کوچیک عادلانه عمل می‌کنه – نه اینکه فقط تمرکزش روی اکثریت باشه.

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

یه پوینت مهم دیگه هم اینه که وقتی مرز تصمیم هر گروه رو جدا مشخص می‌کنی، می‌شه بهتر بین “دقت بالانس‌شده کلی” و “دقت بدترین گروه” تعادل برقرار کرد. به این ساختار می‌گن Pareto frontier، یعنی یه نقطه بهینه‌ای که دیگه نمی‌تونی یکی رو بدون قربانی کردن اونیکی بهتر کنی.

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

پس دفعه بعدی که با داده‌های نامتوازن گیر کردی، این راهکار خوش‌دست رو بچسب و با خیال راحت مدل بساز!

منبع: +