Labels, zwakke labels en waarheid

Machine Learning-workflows ontwerpen in Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Labels zijn niet altijd perfect

Graden van waarheid:

  • Ground truth
    • de computer crasht en er verschijnt een bericht met losgeldeis
  • Labeling door expert
    • de analist bekijkt de logs en vindt ongeautoriseerd gedrag
  • Heuristische labeling
    • te veel poorten ontvingen verkeer in een zeer korte tijd
Machine Learning-workflows ontwerpen in Python

Labels zijn niet altijd perfect

Ruisvrije of sterke labels:

  • Ground truth
  • Labeling door expert

Ruisige of zwakke labels:

  • Heuristische labeling

Feature-engineering:

  • Features gebruikt in heuristieken
Machine Learning-workflows ontwerpen in Python

Features en heuristieken

Gemiddeld aantal unieke poorten per geïnfecteerde host:

np.mean(X[y]['unique_ports'])
15.11

Gemiddeld aantal unieke poorten per host, labels genegeerd:

np.mean(X['unique_ports'])
11.23
Machine Learning-workflows ontwerpen in Python

Van features naar labels

Zet een feature om in een labeling-heuristiek:

X_train, X_test, y_train, y_test = train_test_split(X, y)
y_weak_train = X_train['unique_ports'] > 15

hist_cropped.png

Machine Learning-workflows ontwerpen in Python

Van features naar labels

Twee kopieën van de featurematrix gestapeld. Eén heeft labels van domeinexperts; de andere is gelabeld met een heuristiek.

X_train_aug = pd.concat([X_train, X_train])
y_train_aug = pd.concat([pd.Series(y_train), pd.Series(y_weak_train)])
Machine Learning-workflows ontwerpen in Python

De data zijn gestapeld zoals op de vorige slide, maar de originele labels krijgen gewicht 1,0 en de heuristische labels 0,5.

weights = [1.0]*len(y_train) + [0.1]*len(y_weak_train)
Machine Learning-workflows ontwerpen in Python

Nauwkeurigheid met alleen ground truth:

0.91

Ground truth en zwakke labels zonder gewichten:

accuracy_score(y_test, clf.fit(X_train_aug, y_train_aug).predict(X_test))
0.93

Voeg gewichten toe:

accuracy_score(y_test, clf.fit(X_train_aug, y_train_aug, sample_weight=weights).predict(X_test))
0.95
Machine Learning-workflows ontwerpen in Python

Labels hoeven niet perfect te zijn!

Machine Learning-workflows ontwerpen in Python

Preparing Video For Download...