Štítky, slabé štítky a pravda

Designing Machine Learning Workflows in Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Štítky nejsou vždy dokonalé

Míra spolehlivosti:

  • Ground truth
    • počítač se zhroutí a zobrazí zprávu s požadavkem výkupného
  • Označování odborníkem
    • analytik prochází logy a identifikuje neautorizované chování
  • Heuristické označování
    • příliš mnoho portů obdrželo provoz ve velmi krátkém časovém úseku
Designing Machine Learning Workflows in Python

Štítky nejsou vždy dokonalé

Bezšumové neboli silné štítky:

  • Ground truth
  • Označování odborníkem

Zašumělé neboli slabé štítky:

  • Heuristické označování

Příznaková inženýrství:

  • Příznaky využívané v heuristikách
Designing Machine Learning Workflows in Python

Příznaky a heuristiky

Průměr unikátních portů navštívených každým infikovaným hostitelem:

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

Průměr unikátních portů navštívených na hostitele bez ohledu na štítky:

np.mean(X['unique_ports'])
11.23
Designing Machine Learning Workflows in Python

Od příznaků ke štítkům

Převod příznaku na heuristiku pro označování:

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

hist_cropped.png

Designing Machine Learning Workflows in Python

Od příznaků ke štítkům

Dvě kopie matice příznaků naskládané na sebe. Jedna již obsahuje štítky od doménových expertů, druhá je označena pomocí heuristiky.

X_train_aug = pd.concat([X_train, X_train])
y_train_aug = pd.concat([pd.Series(y_train), pd.Series(y_weak_train)])
Designing Machine Learning Workflows in Python

Data jsou uspořádána stejně jako na předchozím snímku, ale originálním štítkům je přiřazena váha 1,0 a štítkům z heuristiky váha 0,5.

weights = [1.0]*len(y_train) + [0.1]*len(y_weak_train)
Designing Machine Learning Workflows in Python

Přesnost pouze s ground truth:

0.91

Ground truth a slabé štítky bez vah:

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

Přidání vah:

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

Štítky nemusí být dokonalé!

Designing Machine Learning Workflows in Python

Preparing Video For Download...