اعتبارسنجی و انتخاب مدل

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

14 دقیقه مطالعه · 4 سؤال تمرینی · یادگیری ماشین میانی و پیشرفته

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

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

  • مقدارهای رایج k=5k=5 یا k=10k=10 است.
  • LOOCV (k=nk=n) بایاس تخمین کمی دارد، ولی واریانس تخمینش بالاست و پرهزینه است.
  • در دسته‌بندی، از نسخه‌ی Stratified استفاده کنید تا نسبت کلاس‌ها در هر بخش حفظ شود.

نشت داده (Data Leakage)

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

رایج‌ترین شکل‌ها:

  • برازش استانداردسازی، جایگذاری مقادیر گمشده یا انتخاب ویژگی روی کل داده، قبل از تقسیم.
  • بُر زدن تصادفی داده‌ی سری زمانی. باید از آینده برای پیش‌بینی آینده استفاده نکرد و تقسیم را رو به جلو انجام داد.
  • وجود داده‌های یک شخص (مثلاً یک بیمار) هم در آموزش و هم در ارزیابی. راه‌حل GroupKFold است.

راه درست این است که پیش‌پردازش داخل یک Pipeline باشد تا در هر دور فقط روی بخش آموزشی برازش شود:

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
from sklearn.model_selection import cross_val_score

model = make_pipeline(StandardScaler(), Ridge(alpha=1.0))
scores = cross_val_score(model, X, y, cv=5, scoring="neg_mean_squared_error")

اعتبارسنجی تودرتو (Nested CV)

وقتی ابرپارامترها را با CV تنظیم می‌کنید، بهترین امتیاز CV خودش انتخاب‌شده است و به‌طور سیستماتیک خوش‌بینانه است. دلیلش این است که از بین چندین گزینه، آن که اتفاقاً روی همین بخش‌ها خوب درآمده، برنده شده است.

در CV تودرتو:

  • حلقه‌ی داخلی ابرپارامتر را انتخاب می‌کند.
  • حلقه‌ی بیرونی کل این فرایند (انتخاب + آموزش) را روی داده‌ای که حلقه‌ی داخلی ندیده ارزیابی می‌کند.

در مقاله‌ها و گزارش‌هایی که داده‌ی آزمون جداگانه ندارند، این روش استاندارد است.

تمرین‌های این درس را حل کن (رایگان)