داده آموزش و آزمون

چرا داده را به Train و Test تقسیم می‌کنیم، نحوه استفاده از train_test_split و مفهوم نشت داده

چرا تقسیم داده؟

هدف مدل، پیش‌بینی روی داده دیده‌نشده است. اگر مدل را روی همان داده‌ای که با آن ارزیابی می‌کنیم بسنجیم، مثل برگزاری امتحان با سؤالاتی که از قبل به دانشجو داده‌ایم است — نمره خوب اما بی‌ارزش!

راه‌حل: داده را دو تکه کنیم:

train_test_split در scikit-learn

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

نشت داده (Data Leakage) — دشمن خاموش

نشت داده یعنی اطلاعاتی از Test (یا آینده) به فرایند آموزش راه پیدا کند. نتیجه: ارزیابی غیرواقعی خوش‌بینانه و شوک در محیط واقعی!

مثال‌های رایج نشت:

قاعده طلایی: هر چیزی که از داده یاد می‌گیرید (میانگین، مقیاس، ویژگی)، فقط از Train بیاید؛ بعد روی Test اعمال شود.

اعتبارسنجی متقابل — قدم بعدی

وقتی داده کم است، یک تقسیم واحد ممکن است شانسی بد باشد. K-Fold Cross Validation داده را به K بخش می‌کند و هر بار یک بخش Test می‌شود؛ نتیجه، ارزیابی پایدارتر است. جزئیات در دوره ماشین لرنینگ.

نکته عملی: قبل از هر کاری داده را تقسیم کنید! حتی EDA عمیق را ترجیحاً فقط روی Train انجام دهید تا ذهن‌تان از Test «بی‌خبر» بماند.

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل علم داده است.

ابزارهای مرتبط