Etiketter, svaga etiketter och sanning

Att designa maskininlärningsflöden i Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Etiketter är inte alltid perfekta

Grader av sanning:

  • Grundsanning
    • datorn kraschar och ett meddelande kräver lösen
  • Expertetikettering
    • analytikern granskar datorloggar och identifierar otillåtna beteenden
  • Heuristisk etikettering
    • alltför många portar tog emot trafik under en mycket kort tidsperiod
Att designa maskininlärningsflöden i Python

Etiketter är inte alltid perfekta

Brusfriade eller starka etiketter:

  • Grundsanning
  • Expertetikettering

Brusiiga eller svaga etiketter:

  • Heuristisk etikettering

Särdrags­teknik:

  • Särdrag använda i heuristik
Att designa maskininlärningsflöden i Python

Särdrag och heuristik

Genomsnitt för unika portar besökta av varje infekterad värd:

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

Genomsnitt för unika portar besökta per värd oavsett etiketter:

np.mean(X['unique_ports'])
11.23
Att designa maskininlärningsflöden i Python

Från särdrag till etiketter

Omvandla ett särdrag till en etiketteringsheuristik:

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

hist_cropped.png

Att designa maskininlärningsflöden i Python

Från särdrag till etiketter

Två kopior av särdragsmatrisen staplade ovanpå varandra. Den ena har redan etiketter skapade av domänexperter, och den andra är etiketterad med en heuristik.

X_train_aug = pd.concat([X_train, X_train])
y_train_aug = pd.concat([pd.Series(y_train), pd.Series(y_weak_train)])
Att designa maskininlärningsflöden i Python

Data staplas på samma sätt som i föregående slide, men de ursprungliga etiketterna ges vikten 1,0 och de heuristiska etiketterna vikten 0,5.

weights = [1.0]*len(y_train) + [0.1]*len(y_weak_train)
Att designa maskininlärningsflöden i Python

Noggrannhet med enbart grundsanning:

0.91

Grundsanning och svaga etiketter utan vikter:

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

Lägg till vikter:

accuracy_score(y_test, clf.fit(X_train_aug, y_train_aug, sample_weight=weights).predict(X_test))
0.95
Att designa maskininlärningsflöden i Python

Etiketter behöver inte vara perfekta!

Att designa maskininlärningsflöden i Python

Preparing Video For Download...