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. Բլոկավորված կросս-վալիդացիա

    • Տվյալները բաժանվում են բլոկների, խուսափելով տեղեկատվության արտահոսքից ուսուցման և փորձարկման միջև:

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-ով

Կարևոր է պահպանել ժամանակային հերթականությունը՝ չօգտագործելով ապագա տվյալներ մոդելի ուսուցման համար։