Метки, слабые метки и истина

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

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Метки не всегда идеальны

Степени достоверности:

  • Абсолютная истина
    • компьютер зависает, и появляется сообщение с требованием выкупа
  • Разметка экспертом
    • аналитик изучает журналы компьютера и выявляет несанкционированные действия
  • Эвристическая разметка
    • слишком много портов получили трафик за очень короткое время
Проектирование рабочих процессов машинного обучения на Python

Метки не всегда идеальны

Чистые, или сильные, метки:

  • Абсолютная истина
  • Разметка экспертом

Шумные, или слабые, метки:

  • Эвристическая разметка

Проектирование признаков:

  • Признаки, используемые в эвристиках
Проектирование рабочих процессов машинного обучения на 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

Точность только на абсолютной истине:

0.91

Абсолютная истина и слабые метки без весов:

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...