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

Загрузите данные. Первый шаг — загрузить данные в среду Python. В этом примере мы будем использовать набор данных финансовых транзакций, который содержит информацию о сумме транзакции, времени и местоположении. Мы можем загрузить эти данные из файла CSV с помощью библиотеки pandas:

import pandas as pd

data = pd.read_csv('financial_transactions.csv')

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

import matplotlib.pyplot as plt

# Too explore the dataset, you could plot a histogram and a scatter plot
#to identify any outlier

#Histogram of transaction amounts
plt.hist(data['Amount'], bins=50)
plt.xlabel('Transaction Amount')
plt.ylabel('Frequency')
plt.show()

# scatter plot of the transaction amounts and times
plt.scatter(data['Time'], data['Amount'])
plt.xlabel('Time')
plt.ylabel('Transaction Amount')
plt.show()

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

from sklearn.preprocessing import StandardScaler

# Scale the transaction amounts
scaler = StandardScaler()
data['Amount'] = scaler.fit_transform(data['Amount'].values.reshape(-1, 1))

Обучение модели обнаружения аномалий. Следующим шагом является обучение модели обнаружения аномалий на предварительно обработанных данных. Одним из часто используемых методов является алгоритм Isolation Forest, который представляет собой древовидный алгоритм, который изолирует аномалии путем случайного разделения пространства данных. Мы можем создать и обучить эту модель с помощью функции IsolationForest из scikit-learn:

from sklearn.ensemble import IsolationForest

# Create and train the Isolation Forest model
model = IsolationForest(n_estimators=100, contamination=0.01)
model.fit(data[['Time', 'Amount']])

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

# Generate anomaly scores for each transaction
scores = model.decision_function(data[['Time', 'Amount']])
data['Anomaly Score'] = scores

# Plot a histogram of the anomaly scores
plt.hist(data['Anomaly Score'], bins=50)
plt.xlabel('Anomaly Score')
plt.ylabel('Frequency')
plt.show()

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

# Identify anomalous transactions
threshold = data['Anomaly Score'].quantile(0.01)
anomalies = data[data['Anomaly Score'] < threshold]

# Plot a scatter plot of the anomalous transactions
plt.scatter(anomalies['Time'], anomalies['Amount'])
plt.xlabel('Time')
plt.ylabel('Transaction Amount')
plt.show()

Обнаружение аномалий — важный шаг в анализе данных, который может помочь найти выбросы или странные тенденции в вашем наборе данных. Мы можем успешно находить выбросы в любом наборе данных, используя такие стратегии, как Изолирующий лес, и оценивая оценки аномалий. Надежные инструменты для реализации этих стратегий и визуализации результатов предоставляются Python и scikit-learn. Изучение методов обнаружения аномалий может быть важным навыком для любого аналитика данных, поскольку аналитика данных продолжает играть все более важную роль в различных отраслях.