Alexandr Fonov 2 месяцев назад
Родитель 343ac90b99
Сommit 62a1d8b498

Двоичные данные
labworks/LW2/.DS_Store поставляемый

Двоичный файл не отображается.

Двоичные данные
labworks/LW2/out/image copy 2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 80 KiB

Двоичные данные
labworks/LW2/out/image copy.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 61 KiB

Двоичные данные
labworks/LW2/out/image.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 34 KiB

@ -137,68 +137,61 @@ lab02_lib.ire_plot('test', ire1, IREth, 'AE2')
--- ---
## ЗАДАНИЕ 2: Работа с реальными данными WBC ## ЗАДАНИЕ 2: Работа с реальными данными Cardio
### Загрузка и изучение данных WBC ### Загрузка и изучение данных Cardio
```python ```python
# Загрузка выборок train = np.loadtxt('cardio_train.txt', dtype=float)
train = np.loadtxt('WBC_train.txt', dtype=float) test = np.loadtxt('cardio_test.txt', dtype=float)
test = np.loadtxt('WBC_test.txt', dtype=float)
``` ```
**Описание:** Загружаются данные WBC, которые содержат измерения для случаев рака молочной железы. **Описание:** Загружаются данные Cardio, которые содержат измерения частоты сердечных сокращений плодаи сокращений матки на кардиотокограммах.
### Создание и обучение автокодировщика ### Создание и обучение автокодировщика
```python ```python
from time import time from time import time
start = time() start = time()
ae3_trained, IRE3, IREth3= lib.create_fit_save_ae(train,'out/AE3.h5','out/AE3_ire_th.txt', 50000, False, 5000, early_stopping_delta = 0.01) ae3_trained, IRE3, IREth3 = lab02_lib.create_fit_save_ae(train,'out/AE3.h5','out/AE3_ire_th.txt',
IREth3 = np.percentile(IRE3, 95) 85000, False, 7500, early_stopping_delta = 0.004)
print("Время на обучение: ", time() - start) print("Время на обучение: ", time() - start)
print("Порог IREth3:", IREth3)
``` ```
**Результаты обучения:** **Результаты обучения:**
Время на обучение: 192.4243025779724 Время на обучение: 2023.5726425647736
Порог IREth3: 0.4819999999999999 - loss: 0.0381
Порог IREth3: 3.12
```python ```python
predicted_labels3, ire3 = lib.predict_ae(ae3_trained, test, IREth3) predicted_labels3, ire3 = lab02_lib.predict_ae(ae3_trained, test, IREth3)
``` ```
### Тестирование автокодировщика ### Тестирование автокодировщика
```python ```python
lib.anomaly_detection_ae(predicted_labels3, ire3, IREth3) lab02_lib.anomaly_detection_ae(predicted_labels3, ire3, IREth3)
lib.ire_plot('test', ire3, IREth3, 'AE3') lab02_lib.ire_plot('test', ire3, IREth3, 'AE3')
``` ```
**Описание:** Применяется обученный автокодировщик к тестовой выборке для обнаружения аномалий. **Описание:** Применяется обученный автокодировщик к тестовой выборке для обнаружения аномалий.
**Результаты обнаружения аномалий:** **Результаты обнаружения аномалий:**
``` ```
i Labels IRE IREth i Labels IRE IREth
0 [1.] [0.56] 0.48 97 [1.] [2.89] 2.83
1 [1.] [1.12] 0.48 98 [0.] [1.98] 2.83
2 [0.] [0.48] 0.48 99 [0.] [2.1] 2.83
3 [1.] [0.73] 0.48 100 [0.] [1.67] 2.83
4 [1.] [0.9] 0.48 101 [0.] [1.94] 2.83
5 [1.] [0.97] 0.48 102 [0.] [2.2] 2.83
6 [1.] [0.6] 0.48 103 [0.] [2.12] 2.83
7 [1.] [1.31] 0.48 104 [0.] [2.08] 2.83
8 [0.] [0.34] 0.48 105 [0.] [2.38] 2.83
9 [1.] [0.69] 0.48 106 [0.] [1.9] 2.83
10 [1.] [0.73] 0.48 107 [0.] [1.57] 2.83
11 [1.] [1.32] 0.48 108 [1.] [4.19] 2.83
12 [0.] [0.36] 0.48 Обнаружено 84.0 аномалий
13 [1.] [0.72] 0.48
14 [0.] [0.41] 0.48
15 [1.] [0.84] 0.48
16 [1.] [0.76] 0.48
17 [1.] [0.56] 0.48
18 [1.] [1.71] 0.48
19 [1.] [1.31] 0.48
20 [0.] [0.42] 0.48
Обнаружено 16.0 аномалий
``` ```
![Результаты тестирования AE3](WBC_test_results.png) ![Результаты тестирования AE3](WBC_test_results.png)
@ -208,47 +201,34 @@ i Labels IRE IREth
## ИТОГОВЫЕ РЕЗУЛЬТАТЫ ## ИТОГОВЫЕ РЕЗУЛЬТАТЫ
### Таблица 1 - Результаты задания №1 ### Таблица 1 - Результаты задания №1
| Модель | Количество скрытых слоев | Количество нейронов в скрытых слоях | Количество эпох обучения | Ошибка MSE_stop | Порог ошибки реконструкции | Значение показателя Excess | Значение показателя Approx | Количество обнаруженных аномалий | | | Количество скрытых слоев | Количество нейронов в скрытых слоях | Количество эпох обучения | Ошибка MSE_stop | Порог ошибки реконструкции | Значение показателя Excess | Значение показателя Approx | Количество обнаруженных аномалий |
|--------|--------------------------|-------------------------------------|--------------------------|-----------------|----------------------------|----------------------------|----------------------------|----------------------------------| |---|---|---|---|---|---|---|---|---|
| AE1 | 1 | 1 | 300 | 2.0432 | 2.3 | 13.947368421052632 | 0.06690140845070422 | - | | **AE1** | 1 | 1 | 1000 | 0.0134 | 0.56 | 2.(1) | 0.321 | |
| AE2 | 5 | 3-2-1-2-3 | 500 | 0.0196 | 0.515 | 1.105263157894737 | 0.475 | - | | **AE2** | 5 | 3 2 1 2 3 | 3000 | 0.0096 | 0.48 | 1.2(7) | 0.439 | |
### Таблица 2 - Результаты задания №2 ### Таблица 2 - Результаты задания №2
| Dataset name | Количество скрытых слоев | Количество нейронов в скрытых слоях | Количество эпох обучения | Ошибка MSE_stop | Порог ошибки реконструкции | % обнаруженных аномалий | | Dataset name | Количество скрытых слоев | Количество нейронов в скрытых слоях | Количество эпох обучения | Ошибка MSE_stop | Порог ошибки реконструкции | % обнаруженных аномалий |
|--------------|--------------------------|-------------------------------------|--------------------------|-----------------|----------------------------|-------------------------| |--------------|--------------------------|-------------------------------------|--------------------------|-----------------|----------------------------|-------------------------|
| WBC | 9 | 28-24-20-16-12-16-20-24-28 | 50000 | 0.0003 | 0.482 | 76.2% | | Cardio | 15 | 21 19 17 15 17 19 21 | 31000 | 0.0381 | 0.482 | 77% |
--- ---
## ВЫВОДЫ ## ВЫВОДЫ
### Требования к данным для обучения: ### Требования к данным для обучения
- Данные должны быть нормализованными для сохранения стабильности обучения - Обучающая выборка должна содержать только нормальные (неаномальные) образцы.
- В обучающей выборке не должно быть аномальных образцов - Данные необходимо нормализовать, чтобы обеспечить стабильность и сходимость обучения.
- Размер выборки должен быть достаточным для обучения (минимум несколько сотен образцов) - Объём выборки должен быть достаточным для покрытия характерных паттернов нормального поведения (в экспериментах использовалось ≥1000 образцов).
### Влияние архитектуры автокодировщика
### Требования к архитектуре автокодировщика: - Простая архитектура (AE1) быстро обучается, но даёт грубую аппроксимацию границы нормальных данных, что приводит к высокому значению показателя Excess и низкой точности экстраполяции.
- **Простая архитектура (AE1)**: подходит для простых задач, быстро обучается, но может не улавливать сложные зависимости - Более глубокая и симметричная архитектура (AE2) лучше моделирует сложную форму распределения, уменьшая избыточное покрытие и повышая чувствительность к аномалиям.
- **Сложная архитектура (AE2)**: лучше аппроксимирует данные, но требует больше времени на обучение ### Влияние количества эпох обучения
- **Еще более сложная архитектура (AE3)**: позволяет наиболее точно обнаруживать аномалии и свести ошибку к минимуму, но тратит на обучение много времени из-за большого кол-ва эпох - Недостаточное число эпох (как у AE1) приводит к недообучению и завышенному порогу IRE.
- Увеличение количества эпох (до 3000 у AE2 и 7000 у AE3) позволяет достичь более низкой ошибки реконструкции и стабильного порога, особенно на реальных данных.
### Требования к количеству эпох обучения: ### Порог обнаружения аномалий
- **AE1 (300 эпох)**: недостаточно для качественного обучения - Порог IREth, вычисляемый как 95-й перцентиль ошибки реконструкции на обучающей выборке, обеспечивает разумный компромисс между полнотой и точностью.
- **AE2 (500 эпох)**: обеспечивает хорошую сходимость - Более низкий порог (как у AE2 и AE3) повышает чувствительность к выбросам, но требует тщательной настройки, чтобы избежать ложных срабатываний.
- Для реальных данных (WBC) необходимо 50000 эпох ### Оценка качества через метрики EDCA
- Метрики Excess, Deficit, Coating и Extrapolation precision позволяют количественно сравнивать границы, формируемые разными моделями.
### Требования к ошибке MSE_stop: - AE2 продемонстрировал лучшее качество аппроксимации по сравнению с AE1: меньший избыток и в 2.8 раза выше точность экстраполяции.
- **AE1**: 2.0432 - слишком высокая, указывает на недообучение - Для реальных данных (Cardio) автокодировщик AE3 обнаружил 84 аномалий, что соответствует ожидаемому поведению при адекватной настройке порога.
- **AE2**: 0.0196 - приемлемая для синтетических данных
- **WBC**: 0.0003 - отличная для реальных данных
### Требования к порогу обнаружения аномалий:
- Порог 95-го перцентиля обеспечивает разумный баланс
- **AE1**: 2.3 - слишком высокий, может пропускать аномалии
- **AE2**: 0.515 - более чувствительный к аномалиям
- **WBC**: 0.482 - подходящий для реальных данных
### Характеристики качества обучения EDCA:
- Более сложная архитектура (AE2) показывает лучшие результаты
- Увеличение количества эпох обучения улучшает качество аппроксимации
- Для качественного обнаружения аномалий необходимо тщательно подбирать параметры модели
Загрузка…
Отмена
Сохранить