ارزیابی مدل LSTM و پیشگیری از نشت داده
روش ارزیابی پیشبینی سری زمانی با LSTM؛ تقسیم زمانی دادهها، پیشگیری از نشت اطلاعات و مقایسه با خط مبنا.
نشت داده چگونه رخ میدهد؟
اگر در آمادهسازی یا انتخاب مدل، اطلاعاتی از آینده وارد فرایند آموزش گذشته شود، ارزیابی میتواند بیش از حد خوشبینانه باشد. مثال ساده، محاسبه پارامترهای نرمالسازی از کل سری زمانی پیش از تقسیم آموزش و آزمون است. سؤال کنترل این است: آیا این اطلاعات در لحظهای که قرار بود پیشبینی کنیم در دسترس بود؟
یک تقسیم زمانی روشن بساز
بخش قدیمیتر داده را برای آموزش و بخش جدیدتر را برای آزمون نگه دار. اگر تنظیم مدل نیاز به اعتبارسنجی دارد، آن بخش را هم جدا تعریف کن. این کد فقط تقسیم و استانداردسازی داده مصنوعی را نشان میدهد؛ شبکهای آموزش نمیدهد.
t = (1:300)';
y = sin(t/15) + 0.002*t;
cut = floor(0.7*numel(y));
yTrain = y(1:cut);
yTest = y(cut+1:end);
mu = mean(yTrain);
sigma = std(yTrain);
assert(sigma > 0,'Training signal must vary.');
zTrain = (yTrain-mu)/sigma;
zTest = (yTest-mu)/sigma;پنجره ورودی و هدف را با خط زمان تطبیق بده
اگر از ده مقدار قبلی برای تخمین مقدار بعدی استفاده میکنی، همه آن ده مقدار باید در زمان تصمیم قابل مشاهده باشند. اینکه اولین پنجره آزمون از چند مقدار انتهای بخش آموزش استفاده کند لزوماً نشت داده نیست؛ مهم این است که هدف آینده یا مشاهدهای که هنوز نرسیده، وارد ورودی نشده باشد. محدوده هر پنجره و زمان هدف را صریح مشخص کن.
خط مبنا را روی همان شرایط بساز
برای پیشبینی یکگامی، میتوان مقدار بعدی را برابر آخرین مشاهده واقعی موجود گرفت. در مثال زیر، پیشبینی اولین نقطه آزمون از آخرین نقطه آموزش استفاده میکند و برای نقاط بعد، آخرین مشاهده واقعی تا همان لحظه در دسترس فرض میشود. این فرض با پیشبینی چندگامی بدون داده تازه متفاوت است.
baseline = [yTrain(end); yTest(1:end-1)];
maeBaseline = mean(abs(yTest-baseline));
rmseBaseline = sqrt(mean((yTest-baseline).^2));
disp([maeBaseline rmseBaseline]);یکگامی و چندگامی را مخلوط نکن
| روش ارزیابی | در گام بعد چه ورودیای داریم؟ | نکته گزارش |
|---|---|---|
| یکگامی با مشاهده تازه | داده واقعی تازه تا زمان تصمیم | فرض دسترسی به مشاهده جدید را بنویس. |
| چندگامی از یک مبدأ | مشاهده واقعی آینده هنوز موجود نیست | افق، راهبرد بازگشتی یا مستقیم و تجمع خطا را مشخص کن. |
نمودار خوب را با سؤالهای دقیق بررسی کن
- آیا بازه آزمون در انتخاب معماری یا تنظیم ابرپارامتر مصرف شده است؟
- آیا معیار خطا پس از بازگرداندن مقیاس به واحد اصلی حساب شده؟
- آیا مدل و خط مبنا روی هدفها و زمانهای یکسان مقایسه شدهاند؟
- آیا نمونههای جاافتاده، تأخیرها یا تغییر فاصله زمانی درست مدیریت شدهاند؟
- آیا از نتیجه روی یک داده مصنوعی، ادعای عملکرد روی داده واقعی کردهایم؟
چه زمانی سراغ اصلاح شبکه برویم؟
بعد از اینکه تعریف افق، آمادهسازی داده و روش ارزیابی روشن شد، تغییر اندازه شبکه یا تنظیم آموزش معنیدارتر است. اگر همین پایهها مبهم باشند، شبکه بزرگتر ممکن است فقط ارزیابی اشتباه را پیچیدهتر کند. برای مرور کل فرایند، راهنمای LSTM و سری زمانی را بخوان و سپس سرفصل دوره تخصصی را بررسی کن.
دوره مرتبط: آموزش LSTM و پیشبینی سری زمانی در متلب