Déplacement d'ensemble de données

Concevoir des flux de travail Machine Learning en Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

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

Ensemble elec :

  • 2 années de données.
  • class=1 signifie que le prix a augmenté par rapport aux dernières 24 heures, et 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 flux de travail Machine Learning en Python

Qu'est-ce qui se déplace exactement ?

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

Concevoir des flux de travail Machine Learning en Python

Qu'est-ce qui se déplace exactement ?

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 semblables mais une frontière de décision de forme différente.

Concevoir des flux de travail Machine Learning en Python

Fenêtres

Fenêtre glissante

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

Un ensemble 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 ensemble de données affiché dans un terminal.

Concevoir des flux de travail Machine Learning en Python

Détection du déplacement d'ensemble 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 flux de travail Machine Learning en Python

Taille de la 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)

Le tracé de l'AUC selon la taille de la fenêtre augmente jusqu'à un maximum de 0,83 pour une fenêtre de 50, puis diminue.

Concevoir des flux de travail Machine Learning en Python

Déplacement de domaine

Ensemble 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 flux de travail Machine Learning en Python

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

Concevoir des flux de travail Machine Learning en Python

Preparing Video For Download...