Краткий обзор методов обнаружения выбросов

Что такое выбросы и как с ними бороться?

«Наблюдение, которое настолько отличается от других наблюдений, что вызывает подозрение, что оно было вызвано другим механизмом» - Хокинс (1980)

Выбросы - это экстремальные значения, которые отклоняются от других наблюдений за данными, они могут указывать на изменчивость в измерениях, экспериментальные ошибки или новизну. Другими словами, выброс - это наблюдение, которое расходится с общей картиной на выборке.

Типы выбросов

Выбросы бывают двух видов: одномерные и многомерные. Одномерные выбросы можно найти, глядя на распределение значений в одном пространстве признаков. Многомерные выбросы можно найти в n-мерном пространстве (n-функций). Рассмотрение распределений в n-мерном пространстве может быть очень трудным для человеческого мозга, поэтому нам нужно обучить модель, которая будет делать это за нас.

Выбросы также могут быть разных видов в зависимости от среды: точечные выбросы, контекстные выбросы или коллективные выбросы. Выбросы точек - это отдельные точки данных, которые находятся далеко от остальной части распределения. Контекстные выбросы могут представлять собой шум в данных, например знаки препинания при анализе текста или фоновый шумовой сигнал при распознавании речи. Коллективные выбросы могут быть подмножествами новинок в данных, таких как сигнал, который может указывать на открытие новых явлений (как на рисунке B).

Наиболее частые причины выбросов в наборе данных:

  • Ошибки ввода данных (человеческие ошибки)
  • Ошибки измерения (ошибки прибора)
  • Экспериментальные ошибки (извлечение данных или ошибки планирования / выполнения эксперимента)
  • Преднамеренный (фиктивные выбросы, сделанные для проверки методов обнаружения)
  • Ошибки обработки данных (манипуляции с данными или непреднамеренные изменения набора данных)
  • Ошибки выборки (извлечение или смешивание данных из неправильных или различных источников)
  • Естественный (не ошибка, новинки в данных)

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

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

При попытке обнаружить выбросы в наборе данных очень важно учитывать контекст и пытаться ответить на вопрос: «¿Почему я хочу обнаруживать выбросы?» Значение ваших выводов будет зависеть от контекста.

Кроме того, при запуске квеста по обнаружению выбросов вы должны ответить на два важных вопроса о вашем наборе данных:

  • Какие и сколько функций я учитываю для обнаружения выбросов? (одномерный / многомерный)
  • Могу ли я предположить распределение значений для выбранных мной функций? (параметрический / непараметрический)

Некоторые из наиболее популярных методов обнаружения выбросов:

  • Z-Score или анализ экстремальных значений (параметрический)
  • Вероятностно-статистическое моделирование (параметрическое)
  • Модели линейной регрессии (PCA, LMS)
  • Модели на основе близости (непараметрические)
  • Модели теории информации
  • Методы обнаружения выбросов большой размерности (разреженные данные большой размерности)

Z-оценка

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

Некоторые библиотеки Python, такие как Scipy и Sci-kit Learn, имеют простые в использовании функции и классы для легкой реализации вместе с Pandas и Numpy.

После выполнения соответствующих преобразований в выбранном пространстве объектов набора данных z-оценку любой точки данных можно вычислить с помощью следующего выражения:

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

«Помечая» или удаляя точки данных, которые лежат за пределами заданного порогового значения, мы классифицируем данные на выбросы, а не на выбросы.

Z-оценка - это простой, но мощный метод избавления от выбросов в данных, если вы имеете дело с параметрическими распределениями в низкоразмерном пространстве признаков. Для непараметрических проблем хорошими решениями могут быть Dbscan и Isolation Forests.

Dbscan (Пространственная кластеризация приложений с шумом на основе плотности)

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

Dbscan - это алгоритм кластеризации на основе плотности, он ориентирован на поиск соседей по плотности (MinPts) на «n-мерной сфере» с радиусом. Кластер можно определить как максимальный набор «точек, связанных плотностью» в пространстве признаков.

Затем Dbscan определяет разные классы точек:

  • C ore point: A является центральной точкой, если ее окрестность (определенная ɛ) содержит по крайней мере такое же или большее количество точек, чем параметр МинПц.
  • Граничная точка: C - это граничная точка, которая лежит в кластере, и ее окружение не содержит больше точек, чем MinPts, но все же ' достижимая плотность другими точками кластера.
  • Выброс: N - это точка выброса, которая не находится ни в одном кластере и не является «достижимой плотностью» или плотность, связанная ' с любой другой точкой. Таким образом, у этой точки будет «свой кластер».

Если A является центральной точкой, она образует кластер со всеми точками, которые из нее достижимы. A точка Q достижима из P, если существует путь p1,…, pn с p1 = p и pn = q, где каждый pi + 1 напрямую доступен из pi (все точки на пути должны быть основными, за возможным исключением q).

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

Две точки p и q связаны плотностью, если существует точка o такая, что обе p и q достижимы по плотности из o. Связность по плотности симметрична.

Кластер удовлетворяет двум свойствам:

  • Все точки в кластере плотно связаны между собой.
  • Если точка является достижимой по плотности из любой точки кластера, она также является частью кластера.

В Sci-kit Learn есть реализация dbscan, которую можно использовать вместе с пандами для построения модели обнаружения выбросов.

Опять же, первым шагом является масштабирование данных, поскольку радиус ɛ будет определять окрестности вместе с MinPts. (Совет: хорошим средством масштабирования для решения данной проблемы может быть Robust Scaler от Sci-kit Learn).

После масштабирования пространства функций пора выбрать пространственную метрику, по которой dbscan будет выполнять кластеризацию. Метрика должна быть выбрана в зависимости от проблемы, евклидова метрика хорошо работает для 2 или 3 измерений, манхэттенская метрика также может быть полезна при работе с пространством признаков более высоких измерений 4 или более измерений.

Затем параметр eps (ɛ) должен быть выбран соответствующим образом для выполнения кластеризации. Если ɛ слишком велико, многие точки будут связаны плотностью, если слишком мало, кластеризация приведет к множеству бессмысленных кластеров. Хороший подход - попробовать значения от 0,25 до 0,75.

Dbscan также чувствителен к параметру MinPts, его настройка полностью зависит от решаемой проблемы.

Сложность dbscan составляет O (n log n), это эффективный метод с наборами данных среднего размера. Подача данных в модель легко при использовании реализации Scikit learn. После подгонки dbscan к кластерам данных можно извлечь, и каждая выборка будет назначена кластеру. Dbscan самостоятельно оценивает количество кластеров, нет необходимости указывать количество желаемых кластеров, это модель машинного обучения без учителя.

Выбросы (шум) будут присвоены кластеру -1. После добавления тегов к этим экземплярам их можно удалить или проанализировать.

Изоляционные леса

И последнее, но не менее важное: изолированные леса - это эффективный метод обнаружения выбросов или новинок в данных. Это относительно новый метод, основанный на двоичных деревьях решений. Реализация Sci-Kit Learn относительно проста и понятна.

Основной принцип изолированного леса состоит в том, что выбросов мало и они далеки от остальных наблюдений. Чтобы построить дерево (обучение), алгоритм случайным образом выбирает признак из пространства признаков и случайное значение разделения в диапазоне от максимума до минимума. Это сделано для всех наблюдений в обучающей выборке. Для построения леса составляется ансамбль деревьев, усредняющий все деревья в лесу.

Затем для прогнозирования он сравнивает наблюдение с этим значением разделения в «узле», этот узел будет иметь двух дочерних узлов, на которых будет выполнено другое случайное сравнение. Количество «разделений», сделанных алгоритмом для экземпляра, называется: «длина пути». Как и ожидалось, выбросы будут иметь более короткий путь, чем остальные наблюдения.

Для каждого наблюдения можно рассчитать показатель выбросов:

Где h (x) - длина пути образца x, а c (n) - это "неудачный поиск длины" двоичного файла. дерево (максимальная длина пути двоичного дерева от корня до внешнего узла) n - количество внешних узлов. После присвоения каждому наблюдению балла от 0 до 1; 1 означает большую удаленность, а 0 означает большую нормальность. Можно указать порог (например, 0,55 или 0,60).

Совет: в библиотеке Scikit-Learn оценка сдвигается на 0,5 и меняется на противоположную, поэтому возвращаются значения от -0,5 до 0,5, больший - менее ненормальный, а меньший - более ненормальный.

Выводы:

Плюсы Z-Score:

  • Это очень эффективный метод, если вы можете описать значения в пространстве признаков с помощью гауссовского распределения. (Параметрический)
  • Реализация очень проста с использованием библиотек pandas и scipy.stats.

Минусы Z-Score:

  • Его удобно использовать только в пространстве пространственных объектов низкой размерности, в наборе данных малого и среднего размера.
  • Не рекомендуется, если распределения нельзя считать параметрическими.

Плюсы Dbscan:

  • Это суперэффективный метод, когда нельзя предположить распределение значений в пространстве признаков.
  • Хорошо работает, если пространство признаков для поиска выбросов является многомерным (т. Е. 3 или более измерений).
  • Реализация Sci-kit learn проста в использовании, а документация великолепна.
  • Визуализировать результаты легко, а сам метод очень интуитивно понятен.

Минусы Dbscan:

  • Значения в пространстве функций необходимо соответственно масштабировать.
  • Выбор оптимальных параметров eps, MinPts и metric может быть трудным, поскольку он очень чувствителен к любому из трех параметров.
  • Это неконтролируемая модель, и ее необходимо повторно калибровать каждый раз, когда анализируется новый пакет данных.
  • После калибровки он может прогнозировать, но настоятельно не рекомендуется.

Плюсы Isolation Forest:

  • Нет необходимости масштабировать значения в пространстве функций.
  • Это эффективный метод, когда невозможно предположить распределение стоимости.
  • У него мало параметров, что делает этот метод достаточно надежным и простым в оптимизации.
  • Реализация Scikit-Learn проста в использовании, а документация великолепна.

Минусы Isolation Forest:

  • Реализация Python существует только в разрабатываемой версии Sklearn.
  • Визуализировать результаты сложно.
  • При неправильной оптимизации время обучения может быть очень долгим и затратным с точки зрения вычислений.

Полезные ссылки и другие руководства по машинному обучению: