Обнаружение аномалий

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

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Аномалии и выбросы

С учителем

Два кластера чёрного цвета и несколько изолированных красных точек.

Без учителя

Два кластера чёрного цвета и несколько изолированных чёрных точек.

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

Аномалии и выбросы

Два кластера чёрного цвета и несколько изолированных чёрных точек.

  • Один из классов встречается крайне редко
  • Крайний случай смещения набора данных
  • Примеры:
    • кибербезопасность
    • выявление мошенничества
    • противодействие отмыванию денег
    • обнаружение неисправностей
Проектирование рабочих процессов машинного обучения на Python

Процессы без учителя

Два кластера чёрного цвета и несколько изолированных чёрных точек, обведённых красным.

  • Как обучить алгоритм без меток?
  • Как оценить его качество?

Осторожное использование небольшого числа меток:

  • слишком мало для обучения без переобучения
  • достаточно для выбора модели
  • даёт несмещённую оценку точности

Набор данных разбит на части: для обучения, выбора модели и валидации; метки доступны только для выбора модели.

Проектирование рабочих процессов машинного обучения на Python
  • Выброс: точка данных, выходящая за пределы диапазона большинства данных

Два кластера чёрного цвета и несколько изолированных чёрных точек. Наиболее удалённая точка обведена красным.

  • Локальный выброс: точка данных, находящаяся в изолированной области без других точек

Два кластера чёрного цвета и несколько изолированных чёрных точек. Изолированные точки между кластерами обведены красным.

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

Локальный фактор выброса (LoF)

Два кластера чёрного цвета и несколько изолированных чёрных точек. Точка между классами обведена красным, её ближайший сосед у одного из кластеров обведён синим.

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

Локальный фактор выброса (LoF)

from sklearn.neighbors import 
   LocalOutlierFactor as lof
clf = lof()
y_pred = clf.fit_predict(X)
y_pred[:4]
array([ 1,  1,  1, -1])
clf.negative_outlier_factor_[:4]
array([-0.99, -1.02, -1.08 , -0.97])
confusion_matrix(
   y_pred, ground_truth)
array([[  5,  16],
       [  0, 184]])

Те же кластеры с изолированными точками. Большое число точек обведено красным — как внутри кластеров, так и среди изолированных.

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

Локальный фактор выброса (LoF)

clf = lof(contamination=0.02)
y_pred = clf.fit_predict(X)
confusion_matrix(
   y_pred, ground_truth)
array([[  5,   0],
       [  0, 200]])

Те же кластеры с изолированными точками. Красным обведены только изолированные точки.

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

Зачем нужны метки!

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

Preparing Video For Download...