Мітки, слабкі мітки й істина

Проєктування робочих процесів машинного навчання в Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Мітки не завжди досконалі

Ступені істинності:

  • Ground truth
    • комп'ютер зависає, а повідомлення вимагає викуп
  • Розмітка експертом-людиною
    • аналітик переглядає журнали комп'ютера й виявляє несанкціоновану активність
  • Евристична розмітка
    • надто багато портів отримали трафік за дуже короткий час
Проєктування робочих процесів машинного навчання в Python

Мітки не завжди досконалі

Безшумні або сильні мітки:

  • Ground truth
  • Розмітка експертом-людиною

Шумні або слабкі мітки:

  • Евристична розмітка

Створення ознак:

  • Ознаки, що використовують евристики
Проєктування робочих процесів машинного навчання в Python

Ознаки та евристики

Середнє унікальних портів, відвіданих кожним інфікованим хостом:

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

Середнє унікальних портів на хост без урахування міток:

np.mean(X['unique_ports'])
11.23
Проєктування робочих процесів машинного навчання в Python

Від ознак до міток

Перетворіть ознаку на евристичну мітку:

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

hist_cropped.png

Проєктування робочих процесів машинного навчання в Python

Від ознак до міток

Дві копії матриці ознак, складені одна над одною. Одна має мітки від експертів, інша — мітки з евристики.

X_train_aug = pd.concat([X_train, X_train])
y_train_aug = pd.concat([pd.Series(y_train), pd.Series(y_weak_train)])
Проєктування робочих процесів машинного навчання в Python

Дані складено так само, як на попередньому слайді, але вагу 1.0 задано для початкових міток, а вагу 0.5 — для міток з евристики.

weights = [1.0]*len(y_train) + [0.1]*len(y_weak_train)
Проєктування робочих процесів машинного навчання в Python

Точність лише з ground truth:

0.91

Ground truth і слабкі мітки без ваг:

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

Додайте ваги:

accuracy_score(y_test, clf.fit(X_train_aug, y_train_aug, sample_weight=weights).predict(X_test))
0.95
Проєктування робочих процесів машинного навчання в Python

Мітки не мусять бути ідеальними!

Проєктування робочих процесів машинного навчання в Python

Preparing Video For Download...