Etykiety, słabe etykiety i prawda

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Etykiety nie zawsze są idealne

Stopnie wiarygodności:

  • Dane rzeczywiste (ground truth)
    • komputer ulega awarii i pojawia się komunikat z żądaniem okupu
  • Etykietowanie przez eksperta
    • analityk analizuje logi komputera i identyfikuje nieautoryzowane działania
  • Etykietowanie heurystyczne
    • zbyt wiele portów otrzymało ruch w bardzo krótkim czasie
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Etykiety nie zawsze są idealne

Etykiety bezszemrowe lub mocne:

  • Dane rzeczywiste (ground truth)
  • Etykietowanie przez eksperta

Etykiety zaszumione lub słabe:

  • Etykietowanie heurystyczne

Inżynieria cech:

  • Cechy używane w heurystykach
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Cechy i heurystyki

Średnia liczba unikalnych portów odwiedzonych przez każdy zainfekowany host:

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

Średnia liczba unikalnych portów na host bez uwzględnienia etykiet:

np.mean(X['unique_ports'])
11.23
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Od cech do etykiet

Konwersja cechy na heurystykę etykietowania:

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

hist_cropped.png

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Od cech do etykiet

Dwie kopie macierzy cech ułożone jedna na drugiej. Jedna zawiera etykiety nadane przez ekspertów, druga — etykiety z heurystyki.

X_train_aug = pd.concat([X_train, X_train])
y_train_aug = pd.concat([pd.Series(y_train), pd.Series(y_weak_train)])
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Dane są ułożone tak jak na poprzednim slajdzie, ale oryginalnym etykietom przypisano wagę 1,0, a etykietom z heurystyki — 0,5.

weights = [1.0]*len(y_train) + [0.1]*len(y_weak_train)
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Dokładność tylko na danych rzeczywistych:

0.91

Dane rzeczywiste i słabe etykiety bez wag:

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

Dodanie wag:

accuracy_score(y_test, clf.fit(X_train_aug, y_train_aug, sample_weight=weights).predict(X_test))
0.95
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Etykiety nie muszą być idealne!

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Preparing Video For Download...