Dataset shift

Progettare workflow di Machine Learning in Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Cos’è il dataset shift?

Dataset elec:

  • 2 anni di dati.
  • class=1 indica prezzo in aumento rispetto alle ultime 24 ore, 0 in diminuzione.
   day    period  nswprice  ...    vicdemand  transfer  class
0    2  0.000000  0.056443  ...     0.422915  0.414912      1
1    2  0.553191  0.042482  ...     0.422915  0.414912      0
2    2  0.574468  0.044374  ...     0.422915  0.414912      1

[3 rows x 8 columns]
Progettare workflow di Machine Learning in Python

Cosa cambia esattamente?

Due classi in due dimensioni separate da un confine di decisione curvo.

Progettare workflow di Machine Learning in Python

Cosa cambia esattamente?

Due classi in due dimensioni separate da un confine curvo; accanto, classi in posizione simile ma con confine di decisione di forma diversa.

Progettare workflow di Machine Learning in Python

Finestre

Finestra scorrevole

window = (t_now-window_size+1):t_now
sliding_window = elec.loc[window]

Un dataset in cui sono evidenziati solo i punti recenti.

Finestra espansiva

window = 0:t_now
expanding_window = elec.loc[window]

Un dataset mostrato in un terminale.

Progettare workflow di Machine Learning in Python

Rilevare il dataset shift

# t_now = 40000, window_size = 20000
clf_full = RandomForestClassifier().fit(X, y)
clf_sliding = RandomForestClassifier().fit(sliding_X, sliding_y)
# Usa dati futuri come test
test = elec.loc[t_now:elec.shape[0]]
test_X = test.drop('class', 1); test_y = test['class']
roc_auc_score(test_y, clf_full.predict(test_X))
roc_auc_score(test_y, clf_sliding.predict(test_X))
0.775
0.780
Progettare workflow di Machine Learning in Python

Dimensione finestra

for w_size in range(10, 100, 10):
    sliding = arrh.loc[
      (t_now - w_size + 1):t_now
    ]
    X = sliding.drop('class', 1)
    y = sliding['class']
    clf = GaussianNB()
    clf.fit(X, y)
    preds = clf.predict(test_X)
    roc_auc_score(test_y, preds)

AUC tracciata rispetto alla dimensione della finestra: sale fino a un massimo di 0,83 per finestra 50, poi scende.

Progettare workflow di Machine Learning in Python

Domain shift

Dataset arrhythmia:

   age  sex  height  ...    chV6_TwaveAmp  chV6_QRSA  chV6_QRSTA  class
0   75    0     190  ...              2.9       23.3        49.4      0
1   56    1     165  ...              2.1       20.4        38.8      0
2   54    0     172  ...              3.4       12.3        49.0      0
3   55    0     175  ...              2.6       34.6        61.6      1
4   75    0     190  ...              3.9       25.4        62.8      0

[5 rows x 280 columns]
Progettare workflow di Machine Learning in Python

Più dati non è sempre meglio!

Progettare workflow di Machine Learning in Python

Preparing Video For Download...