Etichette, etichette deboli e verità

Progettare workflow di Machine Learning in Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Le etichette non sono sempre perfette

Gradi di verità:

  • Verità a terra
    • il computer si blocca e compare una richiesta di riscatto
  • Etichettatura da esperti
    • l'analista esamina i log e identifica comportamenti non autorizzati
  • Etichettatura euristica
    • troppi port ricevono traffico in un intervallo molto breve
Progettare workflow di Machine Learning in Python

Le etichette non sono sempre perfette

Etichette senza rumore o forti:

  • Verità a terra
  • Etichettatura da esperti

Etichette rumorose o deboli:

  • Etichettatura euristica

Feature engineering:

  • Feature usate nelle euristiche
Progettare workflow di Machine Learning in Python

Feature ed euristiche

Media delle porte uniche visitate da ogni host infetto:

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

Media delle porte uniche visitate per host ignorando le etichette:

np.mean(X['unique_ports'])
11.23
Progettare workflow di Machine Learning in Python

Dalle feature alle etichette

Trasforma una feature in un'euristica di etichettatura:

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

hist_cropped.png

Progettare workflow di Machine Learning in Python

Dalle feature alle etichette

Due copie della matrice delle feature impilate. Una ha etichette di esperti di dominio, l'altra è etichettata con un'euristica.

X_train_aug = pd.concat([X_train, X_train])
y_train_aug = pd.concat([pd.Series(y_train), pd.Series(y_weak_train)])
Progettare workflow di Machine Learning in Python

I dati sono impilati come nella slide precedente, ma si assegna peso 1,0 alle etichette originali e 0,5 a quelle prodotte dall'euristica.

weights = [1.0]*len(y_train) + [0.1]*len(y_weak_train)
Progettare workflow di Machine Learning in Python

Accuratezza usando solo la verità a terra:

0.91

Verità a terra ed etichette deboli senza pesi:

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

Aggiungi pesi:

accuracy_score(y_test, clf.fit(X_train_aug, y_train_aug, sample_weight=weights).predict(X_test))
0.95
Progettare workflow di Machine Learning in Python

Le etichette non devono essere perfette!

Progettare workflow di Machine Learning in Python

Preparing Video For Download...