Уровень статьи: средний

Мои клиенты часто спрашивают меня об особенностях тех или иных методов предварительной обработки данных, зачем они нужны и когда их использовать. Я расскажу о нескольких распространенных (и не очень) методах предварительной обработки в серии статей на эту тему.

В этой серии о предварительной обработке:

Стандартизация данных — Краткое объяснение — для начинающих
Нормализация данных — Краткое объяснение — для начинающих
Горячее кодирование — Краткое объяснение — для начинающих
Порядковое кодирование — Краткое объяснение — для начинающих
Отсутствующие значения в предварительной обработке набора данных — Средний уровень
Токенизация и векторизация текста в НЛП — средний уровень

Обнаружение выбросов в предварительной обработке набора данных — средний уровень

Выбор функций в предварительной обработке данных —Дополнительно

В этом кратком отчете я объясню, как найти выбросы в вашем наборе данных. Некоторое понимание конкретных терминов было бы полезно, поэтому я приложил краткое объяснение более сложной терминологии. Попробуйте, и если вам нужна дополнительная информация, просто спросите в разделе комментариев!

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

аномальные точки данных —значения, заметно отличающиеся от типичных значений набора данных.

искажение анализа машинного обучения —искажение производительности и точности модели машинного обучения.

Статистические методы — математические методы описания, анализа и интерпретации данных.

Z-показатели —нормализованный показатель, показывающий отношение точек данных к среднему значению.

IQR – мера разброса набора данных с использованием верхнего и нижнего квартилей.

изолирующий лес —алгоритм изоляции аномалий путем случайного разделения данных.

автокодер —нейронная сеть, сжимающая и реконструирующая данные для поиска аномалий.

Гауссова —кривая нормального распределения имеет форму колокола, симметричную относительно среднего значения.

наименьшие квадраты —метод оптимизации, сводящий к минимуму сумму квадратов невязок.

Обнаружение выбросов

Выявление и устранение выбросов является ключевой частью анализа данных. Обнаружение выбросов относится к выявлению данных, которые значительно отличаются от большинства других ваших данных. Эти выбросы могут быть аномальными точками данных, мошенническими транзакциями, ошибочными показаниями датчиков и т. д. Обнаружение выбросов важно для очистки данных, чтобы избежать искажения анализа ML.

Существуют различные статистические методы и методы машинного обучения для обнаружения выбросов. Статистические методы полагаются на такие вещи, как среднее значение, стандартное отклонение, квантили и т. д., чтобы идентифицировать выбросы. Методы машинного обучения используют такие вещи, как изолированные леса, одноклассовые SVM, автоэнкодеры и т. д. При таком большом количестве вариантов метод зависит от таких факторов, как размер данных, тип аномалии, способ обработки аномалий и т. д.

Статистические методы

Для небольших наборов данных можно использовать простые статистические методы, такие как z-показатели и диапазоны квантилей, для выявления выбросов. Например, z-оценка измеряет, сколько стандартных отклонений наблюдения от среднего. Порог, подобный z=3, можно использовать для обнаружения потенциальных выбросов.

Другим широко используемым методом является использование межквартильного диапазона; (IQR) идентифицирует выбросы между 1-м и 3-м квартилями. Любое наблюдение за пределами 1,5 * IQR можно считать выбросом.

Методы машинного обучения

Модели машинного обучения, такие как изолированные леса, одноклассовые SVM или автоэнкодеры, отлично подходят для обнаружения выбросов. Изолирующие леса изолируют аномалии, а не просто профилируют обычные данные. Они строят деревья решений, которые рекурсивно разбивают данные, тем самым быстрее изолируя выбросы и с меньшим количеством разделов. SVM одного класса изучают границу вокруг обычных точек данных; новые образцы за пределами границы помечаются как аномалии. Автоэнкодеры изучают сжатые представления данных. Образцы с высокой ошибкой реконструкции являются потенциальными выбросами.

Полезный код Python

Я покажу вам, как находить выбросы с помощью scikit-learn. Я буду использовать оценщик EllipticEnvelope, который часто используется для данных Гаусса. В демонстрационных целях я найду только один выброс на столбец в сгенерированном образце df. Наконец, просто чтобы четко показать вам, где лежат выбросы, я воссоздам df с видимыми только выбросами.

import pandas as pd
import numpy as np
from sklearn.covariance import EllipticEnvelope

# define model  
outlier_detector = EllipticEnvelope(contamination=0.01)

# sample dataframe. Some values will naturally become outliers
df = pd.DataFrame(np.random.randn(6, 3))

# identify outliers 
outlier_values = pd.DataFrame(columns=['column', 'value'])
for col in df.columns:
  # fit on column directly
  outlier_detector.fit(df[col].values.reshape(-1, 1))  
  # predict the outliers
  y_pred = outlier_detector.predict(df[col].values.reshape(-1, 1))
  # store outlier rows and values
  if -1 in y_pred:
    outlier_row = df[y_pred==-1].index[0]
    outlier_values = pd.concat([outlier_values, 
                           pd.DataFrame({'column': col, 'value': df.loc[outlier_row, col]}, index=[0])])
    
# create empty mask
mask = pd.DataFrame(False, index=df.index, columns=df.columns)

# set mask to True where values match outliers
for row in outlier_values.itertuples():
    mask.loc[df[row.column] == row.value, row.column] = True

# mask all values except outliers
df_outliers = df.mask(~mask)

# show results
print(outlier_values)
print(df_outliers)

Это выведет следующее (значения будут различаться):

  column     value
0      0  1.523088
0      1 -0.611936
0      2 -0.187589
          0         1         2
0       NaN       NaN       NaN
1       NaN       NaN       NaN
2       NaN       NaN       NaN
3       NaN       NaN -0.187589
4  1.523088       NaN       NaN
5       NaN -0.611936       NaN

И это все! Я оставлю вас с некоторыми «веселыми» мелочами 😊

Разное

  • Одно раннее использование обнаружения выбросов произошло в 1897 году, когда астроном Фридрих Виннеке использовал метод наименьших квадратов и отклонение выбросов для определения орбитальных путей многих небесных объектов. Удалив выбросы измерений, которые отличались от орбитальных расчетов, он смог уменьшить ошибки в оценке параметров орбиты. Это помогло точно определить траектории, в частности, комет Свифта и Барнарда.
  • Обнаружение выбросов является основным инструментом, используемым при обнаружении мошенничества — обнаружении странных транзакций по кредитным картам или страховых требований, которые не соответствуют ожидаемым шаблонам. Для кредитных карт анализируются такие вещи, как суммы покупок, местоположение, время и т. д., чтобы обнаружить выбросы, отличающиеся от обычных моделей пользователей.