Читать книгу 120 практических задач онлайн
# Пример архитектуры автоэнкодера для обнаружения аномалий в финансовых транзакциях
# Подготовка данных (вымышленный пример)
# X_train – обучающие данные, X_test – тестовые данные
# Данные предварительно должны быть нормализованы
input_dim = X_train.shape[1] # размер входных данных
# Энкодер
input_layer = Input(shape=(input_dim,))
encoded = Dense(32, activation='relu')(input_layer)
encoded = Dense(16, activation='relu')(encoded)
# Декодер
decoded = Dense(32, activation='relu')(encoded)
decoded = Dense(input_dim, activation='sigmoid')(decoded)
# Модель автоэнкодера
autoencoder = Model(input_layer, decoded)
# Компиляция модели
autoencoder.compile(optimizer='adam', loss='mse')
# Обучение модели на обычных (нормальных) образцах
autoencoder.fit(X_train, X_train,
epochs=50,
batch_size=128,
shuffle=True,
validation_data=(X_test, X_test))
# Использование автоэнкодера для предсказания на тестовых данных
predicted = autoencoder.predict(X_test)
# Рассчитываем ошибку реконструкции для каждого образца
mse = np.mean(np.power(X_test – predicted, 2), axis=1)
# Определение порога для обнаружения аномалий
threshold = np.percentile(mse, 95) # например, выбираем 95-й процентиль
# Обнаружение аномалий
anomalies = X_test[mse > threshold]
# Вывод аномалий или дальнейшее их анализ
print(f"Найдено {len(anomalies)} аномалий в данных.")
```
Пояснение архитектуры и процесса:
1. Архитектура автоэнкодера: Модель состоит из двух частей: энкодера и декодера. Энкодер уменьшает размерность данных, представляя их в скрытом пространстве меньшей размерности. Декодер восстанавливает данные обратно в оригинальную размерность.
2. Компиляция и обучение: Модель компилируется с использованием оптимизатора Adam и функции потерь MSE (Mean Squared Error), затем обучается на обычных (нормальных) образцах.
3. Определение порога для обнаружения аномалий: После обучения модели рассчитывается среднеквадратичная ошибка (MSE) между входными данными и их реконструкциями. Затем определяется порог, например, на основе перцентиля ошибок, для обнаружения аномальных образцов.