В анализе данных обнаружение аномалий — это процесс выявления точек данных, которые значительно отклоняются от большинства данных. Эти точки данных также известны как выбросы и могут дать ценную информацию о данных.
Выбросы могут быть вызваны различными причинами, такими как ошибки ввода данных, неисправности оборудования или естественные изменения данных. Важно выявить эти выбросы и выяснить причину, поскольку они могут повлиять на точность и надежность анализа.
В этой статье мы рассмотрим различные методы выявления выбросов в данных.
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 — это лишь несколько примеров методов, доступных для выявления выбросов в данных. Важно выбрать правильный метод для конкретных данных и анализа.
Удачного обучения!