🤔 Какие методы обнаружения аномалии?



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



🚩Методы



🟠Статистические методы

Z-оценка (Z-score): Измеряет количество стандартных отклонений от среднего. Применимо для данных с нормальным распределением.Метод межквартильного размаха (IQR): Использует квартильные размахи для определения выбросов.



🟠Машинное обучение

Методы без учителя

K-Means: Кластеризует данные, выделяя аномалии на основе удаленности от центроидов. DBSCAN: Определяет аномалии на основе плотности данных. One-Class SVM: Обучается на одном классе данных, выделяя аномалии. Isolation Forest: Быстро изолирует аномальные точки с помощью случайных деревьев.

from sklearn.ensemble import IsolationForest



X_train = ...

clf = IsolationForest(contamination=0.1)

clf.fit(X_train)

y_pred = clf.predict(X_train)




🟠Методы с учителем

Используются при наличии размеченных данных (логистическая регрессия, решающие деревья и т.д.).



🟠Методы на основе временных рядов

Методы скользящего окна (Moving Average)

Выявляют аномалии путем анализа средних значений за периоды.

Методы автокорреляции

Анализируют повторяющиеся шаблоны во временных рядах.



🟠Глубокое обучение

Нейронные сети, кодирующие данные в низкоразмерное пространство и декодирующие их обратно. Высокие ошибки восстановления указывают на аномалии.

from keras.models import Model, Sequential

from keras.layers import Dense, Input



input_dim = X_train.shape[1]

encoding_dim = 14



input_layer = Input(shape=(input_dim, ))

encoder = Dense(encoding_dim, activation="tanh")(input_layer)

encoder = Dense(int(encoding_dim / 2), activation="relu")(encoder)

decoder = Dense(int(encoding_dim / 2), activation="tanh")(encoder)

decoder = Dense(input_dim, activation="relu")(decoder)

autoencoder = Model(inputs=input_layer, outputs=decoder)

autoencoder.compile(optimizer="adam", loss="mean_squared_error")



autoencoder.fit(X_train, X_train, epochs=100, batch_size=32, shuffle=True, validation_split=0.1)




Ставь
👍 и забирай 📚 Базу знаний