Sobes.tech
Middle — Senior

როგორ ჩაატაროთ დროის სერიებზე კროსს-ვალიდაცია?

sobes.tech AI

პასუხი AI-სგან

დროის სერიის კროს-ვალიდაცია განსხვავდება კლასიკური, რადგან მონაცემებს აქვთ დროითი დამოკიდებულება და მათ უბრალოდ შემთხვევით არ შეიძლება შერევა.

ძირითადი მიდგომები:

  1. Time Series Split (გადახრილი ფანჯარა)

    • მონაცემები განაწილებულია თანმიმდევრულ დროის ბლოკებად.
    • ყოველი ნაბიჯით, მოდელი იწარმოება დროის გარკვეულ მონაკვეთში და ტესტდება შემდეგი დროის ინტერვალზე.
    • მაგალითი: სწავლება თვეებში 1-3, ტესტი 4; შემდეგ სწავლება 1-4, ტესტი 5 და ასე შემდეგ.
  2. Walk-forward validation (წინსვლის ვალიდაცია)

    • მსგავსია Time Series Split-ის, მაგრამ მოდელი ყოველი ნაბიჯით იწარმოება და ახალი მონაცემები ემატება.
  3. ბლოკირებული კროს-ვალიდაცია (Blocked cross-validation)

    • მონაცემები ნაწილებად იყოფა ბლოკებად, რათა თავიდან აიცილოს ინფორმაცია გადაცემა ტრენინგსა და ტესტს შორის.

Python-ის მაგალითი sklearn-ის გამოყენებით:

from sklearn.model_selection import TimeSeriesSplit
import numpy as np

X = np.arange(100).reshape(-1, 1)  # მაგალითის მონაცემები
 y = np.sin(X).ravel()

tscv = TimeSeriesSplit(n_splits=5)
for train_index, test_index in tscv.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    # მოდელის სწავლება X_train, y_train-ით
    # შეფასება X_test, y_test-ით

მნიშვნელოვანია დროის თანმიმდევრულობის დაცვა, რათა მომავალ მონაცემებს არ გამოიყენოთ მოდელის სწავლებისთვის.