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

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



В этой статье мы рассмотрим различные методы выявления выбросов в данных.

1. Метод Z-оценки

Метод Z-Score — это статистический метод выявления выбросов в данных. Он включает в себя вычисление стандартного отклонения данных, а затем определение количества стандартных отклонений от среднего значения каждой точки данных. Точки данных, которые отличаются от среднего значения более чем на определенное количество стандартных отклонений, считаются выбросами.

Давайте рассмотрим пример с использованием метода Z-Score:

import numpy as np

# Generate some random data
data = np.random.normal(0, 1, 100)

# Calculate the Z-Score for each data point
z_scores = (data - np.mean(data)) / np.std(data)

# Define the threshold for outliers
threshold = 3

# Identify the outliers
outliers = np.where(np.abs(z_scores) > threshold)[0]

# Print the outliers
print('Outliers:', outliers)
#Output:
Outliers: [44]

В этом примере мы генерируем 100 случайных точек данных из нормального распределения со средним значением 0 и стандартным отклонением 1. Затем мы вычисляем Z-показатель для каждой точки данных и определяем пороговое значение 3. Любая точка данных, которая больше отклонение от среднего значения более чем на 3 стандартных отклонения считается выбросом. Затем код идентифицирует выбросы и печатает их индексы.



2. Метод межквартильного диапазона (IQR)

Метод межквартильного диапазона (IQR) — еще один статистический метод выявления выбросов в данных. Он включает в себя расчет IQR, который представляет собой диапазон между 75-м процентилем и 25-м процентилем данных. Точки данных, отстоящие от медианы более чем на определенное число IQR, считаются выбросами.

Давайте рассмотрим пример с использованием метода IQR:

import numpy as np
from scipy import stats

# Generate some random data
data = np.random.normal(0, 1, 100)

# Calculate the IQR for the data
q1, q3 = np.percentile(data, [25, 75])
iqr = q3 - q1

# Define the threshold for outliers
threshold = 1.5

# Identify the outliers
outliers = np.where((data < q1 - threshold*iqr) | (data > q3 + threshold*iqr))[0]

# Print the outliers
print('Outliers:', outliers)
#Output:
Outliers: [51 56 75 95]

В этом примере мы генерируем 100 случайных точек данных из нормального распределения со средним значением 0 и стандартным отклонением 1. Затем мы вычисляем IQR для данных и определяем пороговое значение 1,5. Любая точка данных, которая отличается от медианы более чем на 1,5 IQR, считается выбросом. Затем код идентифицирует выбросы и печатает их индексы.



3. Метод локального выброса (LOF)

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

Давайте рассмотрим пример с использованием метода LOF:

import numpy as np
from sklearn.neighbors import LocalOutlierFactor

# Generate some random data
data = np.random.normal(0, 1, (100, 2))

# Fit the LOF model to the data
model = LocalOutlierFactor(n_neighbors=20)
labels = model.fit_predict(data)

# Identify the outliers
outliers = np.where(labels == -1)[0]

# Plot the data and outliers
import matplotlib.pyplot as plt
plt.scatter(data[:, 0], data[:, 1], c=labels)
plt.scatter(data[outliers, 0], data[outliers, 1], marker='x', s=100, linewidths=2, c='r')
plt.show()

В этом примере мы генерируем 100 случайных точек данных из двумерного нормального распределения со средним значением 0 и стандартным отклонением 1. Затем мы подгоняем модель LOF к данным с размером окрестности 20 и идентифицируем выбросы как точки данных с меткой -1. Затем код отображает данные и выделяет выбросы красными крестиками.



Заключение

Обнаружение аномалий является важным методом анализа данных для выявления выбросов в данных. Используя статистические методы и методы машинного обучения, мы можем идентифицировать и исследовать эти выбросы, чтобы получить ценную информацию о данных. Метод Z-Score, метод IQR и метод LOF — это лишь несколько примеров методов, доступных для выявления выбросов в данных. Важно выбрать правильный метод для конкретных данных и анализа.

Удачного обучения!

Хотите стать участником Medium, чтобы читать тысячи статей?

Другие мои статьи об анализе данных