Déplacement de jeu de données

Concevoir des workflows de Machine Learning en Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Qu'est-ce que le déplacement de jeu de données ?

Jeu de données elec :

  • 2 ans de données.
  • class=1 signifie que le prix a augmenté par rapport aux dernières 24 heures, 0 qu'il a diminué.
   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]
Concevoir des workflows de Machine Learning en Python

En quoi consiste exactement le déplacement ?

Deux classes en deux dimensions séparées par une frontière de décision courbe.

Concevoir des workflows de Machine Learning en Python

En quoi consiste exactement le déplacement ?

Deux classes en deux dimensions séparées par une frontière de décision courbe, et à côté une autre image avec des classes placées de façon similaire mais une frontière de décision de forme différente.

Concevoir des workflows de Machine Learning en Python

Fenêtres

Fenêtre glissante

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

Un jeu de données où seuls les points récents sont mis en évidence.

Fenêtre cumulative

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

Un jeu de données affiché dans un terminal.

Concevoir des workflows de Machine Learning en Python

Détection du déplacement de jeu de données

# t_now = 40000, window_size = 20000
clf_full = RandomForestClassifier().fit(X, y)
clf_sliding = RandomForestClassifier().fit(sliding_X, sliding_y)
# Use future data as 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
Concevoir des workflows de Machine Learning en Python

Taille de fenêtre

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)

L'AUC tracée en fonction de la taille de la fenêtre augmente jusqu'à un maximum de 0,83 pour une fenêtre de 50, puis redescend.

Concevoir des workflows de Machine Learning en Python

Déplacement de domaine

Jeu de données 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]
Concevoir des workflows de Machine Learning en Python

Plus de données n'est pas toujours mieux !

Concevoir des workflows de Machine Learning en Python

Preparing Video For Download...