Уровень статьи: средний
Мои клиенты часто спрашивают меня об особенностях тех или иных методов предварительной обработки данных, зачем они нужны и когда их использовать. Я расскажу о нескольких распространенных (и не очень) методах предварительной обработки в серии статей на эту тему.
В этой серии о предварительной обработке:
Стандартизация данных — Краткое объяснение — для начинающих
Нормализация данных — Краткое объяснение — для начинающих
Горячее кодирование — Краткое объяснение — для начинающих
Порядковое кодирование — Краткое объяснение — для начинающих
Отсутствующие значения в предварительной обработке набора данных — Средний уровень
Токенизация и векторизация текста в НЛП — средний уровень
Обнаружение выбросов в предварительной обработке набора данных — средний уровень
Выбор функций в предварительной обработке данных —Дополнительно
В этом кратком отчете я объясню, как найти выбросы в вашем наборе данных. Некоторое понимание конкретных терминов было бы полезно, поэтому я приложил краткое объяснение более сложной терминологии. Попробуйте, и если вам нужна дополнительная информация, просто спросите в разделе комментариев!
выбросы – точки данных, далекие от других наблюдений, значительно отличающиеся друг от друга.
аномальные точки данных —значения, заметно отличающиеся от типичных значений набора данных.
искажение анализа машинного обучения —искажение производительности и точности модели машинного обучения.
Статистические методы — математические методы описания, анализа и интерпретации данных.
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 году, когда астроном Фридрих Виннеке использовал метод наименьших квадратов и отклонение выбросов для определения орбитальных путей многих небесных объектов. Удалив выбросы измерений, которые отличались от орбитальных расчетов, он смог уменьшить ошибки в оценке параметров орбиты. Это помогло точно определить траектории, в частности, комет Свифта и Барнарда.
- Обнаружение выбросов является основным инструментом, используемым при обнаружении мошенничества — обнаружении странных транзакций по кредитным картам или страховых требований, которые не соответствуют ожидаемым шаблонам. Для кредитных карт анализируются такие вещи, как суммы покупок, местоположение, время и т. д., чтобы обнаружить выбросы, отличающиеся от обычных моделей пользователей.