Étiquettes, étiquettes faibles et vérité

Concevoir des workflows de Machine Learning en Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Les étiquettes ne sont pas toujours parfaites

Degrés de vérité :

  • Vérité terrain
    • l'ordinateur plante et un message réclame une rançon
  • Étiquetage par expert humain
    • l'analyste inspecte les journaux système et repère des comportements non autorisés
  • Étiquetage heuristique
    • trop de ports reçoivent du trafic en un laps de temps très court
Concevoir des workflows de Machine Learning en Python

Les étiquettes ne sont pas toujours parfaites

Étiquettes sans bruit ou « fortes » :

  • Vérité terrain
  • Étiquetage par expert humain

Étiquettes bruitées ou « faibles » :

  • Étiquetage heuristique

Ingénierie des features :

  • Features utilisées dans les heuristiques
Concevoir des workflows de Machine Learning en Python

Features et heuristiques

Moyenne des ports uniques visités par hôte infecté :

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

Moyenne des ports uniques visités par hôte, sans tenir compte des étiquettes :

np.mean(X['unique_ports'])
11.23
Concevoir des workflows de Machine Learning en Python

Des features aux étiquettes

Convertir une feature en heuristique d'étiquetage :

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

hist_cropped.png

Concevoir des workflows de Machine Learning en Python

Des features aux étiquettes

Deux copies de la matrice de features empilées. L'une porte des étiquettes d'experts du domaine, l'autre est étiquetée par heuristique.

X_train_aug = pd.concat([X_train, X_train])
y_train_aug = pd.concat([pd.Series(y_train), pd.Series(y_weak_train)])
Concevoir des workflows de Machine Learning en Python

Les données sont empilées comme à la diapo précédente, avec un poids de 1,0 pour les étiquettes d'origine et 0,5 pour celles issues de l'heuristique.

weights = [1.0]*len(y_train) + [0.1]*len(y_weak_train)
Concevoir des workflows de Machine Learning en Python

Précision avec la seule vérité terrain :

0.91

Vérité terrain et étiquettes faibles sans poids :

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

Ajouter des poids :

accuracy_score(y_test, clf.fit(X_train_aug, y_train_aug, sample_weight=weights).predict(X_test))
0.95
Concevoir des workflows de Machine Learning en Python

Les étiquettes n'ont pas besoin d'être parfaites !

Concevoir des workflows de Machine Learning en Python

Preparing Video For Download...