Étiquettes, étiquettes faibles et vérité

Concevoir des flux de travail 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 exige une rançon
  • Étiquetage par des spécialistes
    • l'analyste inspecte les journaux du système et repère des comportements non autorisés
  • Étiquetage heuristique
    • trop de ports ont reçu du trafic en très peu de temps
Concevoir des flux de travail Machine Learning en Python

Les étiquettes ne sont pas toujours parfaites

Étiquettes sans bruit ou « fortes » :

  • Vérité terrain
  • Étiquetage par des spécialistes

Étiquettes bruitées ou « faibles » :

  • Étiquetage heuristique

Ingénierie des caractéristiques :

  • Caractéristiques utilisées dans les heuristiques
Concevoir des flux de travail Machine Learning en Python

Caractéristiques et heuristiques

Moyenne des ports uniques visités par chaque 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 flux de travail Machine Learning en Python

Des caractéristiques aux étiquettes

Transformer une caractéristique 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 flux de travail Machine Learning en Python

Des caractéristiques aux étiquettes

Deux copies de la matrice de caractéristiques empilées. L'une porte des étiquettes d'expert du domaine, l'autre des étiquettes issues d'une 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 flux de travail Machine Learning en Python

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

weights = [1.0]*len(y_train) + [0.1]*len(y_weak_train)
Concevoir des flux de travail 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 flux de travail Machine Learning en Python

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

Concevoir des flux de travail Machine Learning en Python

Preparing Video For Download...