Сравнить коммиты
6 Коммитов
main
...
report_lw3
| Автор | SHA1 | Дата |
|---|---|---|
|
|
7155c4c6fb | 1 месяц назад |
|
|
94ab4931f2 | 2 месяцев назад |
|
|
62a1d8b498 | 2 месяцев назад |
|
|
343ac90b99 | 2 месяцев назад |
|
|
5b1ef923b9 | 2 месяцев назад |
|
|
7585939c57 | 2 месяцев назад |
|
После Ширина: | Высота: | Размер: 20 KiB |
|
После Ширина: | Высота: | Размер: 21 KiB |
|
После Ширина: | Высота: | Размер: 33 KiB |
@ -0,0 +1 @@
|
||||
0.44
|
||||
@ -0,0 +1 @@
|
||||
0.81
|
||||
|
После Ширина: | Высота: | Размер: 55 KiB |
|
После Ширина: | Высота: | Размер: 33 KiB |
|
После Ширина: | Высота: | Размер: 34 KiB |
|
После Ширина: | Высота: | Размер: 98 KiB |
|
После Ширина: | Высота: | Размер: 111 KiB |
|
После Ширина: | Высота: | Размер: 73 KiB |
|
После Ширина: | Высота: | Размер: 86 KiB |
|
После Ширина: | Высота: | Размер: 80 KiB |
|
После Ширина: | Высота: | Размер: 61 KiB |
|
После Ширина: | Высота: | Размер: 34 KiB |
@ -0,0 +1,5 @@
|
||||
------------Оценка качества AE1 С ПОМОЩЬЮ НОВЫХ МЕТРИК------------
|
||||
Approx = 0.1782178217821782
|
||||
Excess = 4.611111111111111
|
||||
Deficit = 0.0
|
||||
Coating = 1.0
|
||||
|
После Ширина: | Высота: | Размер: 44 KiB |
@ -0,0 +1,234 @@
|
||||
# Лабораторная работа №2: Обнаружение аномалий с помощью автокодировщиков
|
||||
|
||||
Выполнили: Фонов А.Д., Хнытченков А.М.
|
||||
Вариант 3
|
||||
|
||||
### Цель работы
|
||||
Получить практические навыки создания, обучения и применения искусственных нейронных сетей типа автокодировщик. Исследовать влияние архитектуры автокодировщика и количества эпох обучения на области в пространстве признаков, распознаваемые автокодировщиком после обучения. Научиться оценивать качество обучения автокодировщика на основе ошибки реконструкции и новых метрик EDCA. Научиться решать актуальную задачу обнаружения аномалий в данных с помощью автокодировщика как одноклассового классификатора.
|
||||
|
||||
|
||||
## ЗАДАНИЕ 1: Работа с двумерными синтетическими данными
|
||||
|
||||
### Импорт библиотек и настройка окружения
|
||||
```python
|
||||
import os
|
||||
os.chdir('/content/drive/MyDrive/Colab Notebooks/is_lab2')
|
||||
import lab02_lib
|
||||
import numpy as np
|
||||
```
|
||||
|
||||
**Описание:** Импортируются необходимые библиотеки и устанавливаются параметры для варианта 2.
|
||||
|
||||
### Генерация индивидуального набора двумерных данных
|
||||
```python
|
||||
k = 3
|
||||
data = lab02_lib.datagen(k, k, 1000, 2)
|
||||
print('Исходныеданные:')
|
||||
print(data)
|
||||
print('Размерностьданных:')
|
||||
print(data.shape)
|
||||
```
|
||||
|
||||
**Результат выполнения:**
|
||||
```
|
||||
Исходные данные:
|
||||
k = 3
|
||||
data = lab02_lib.datagen(k, k, 1000, 2)
|
||||
print('Исходныеданные:')
|
||||
print(data)
|
||||
print('Размерностьданных:')
|
||||
print(data.shape)
|
||||
```
|
||||
|
||||

|
||||
|
||||
### Создание и обучение автокодировщика AE1
|
||||
```python
|
||||
epoch = 1000
|
||||
patience = 100
|
||||
ae_trainned, IRE_array, IREth = lab02_lib.create_fit_save_ae(data, 'out/AE_1.h5','out/AE_1_ire_th.txt',
|
||||
epoch, True, patience)
|
||||
|
||||
print(f"IREth: {IREth}")
|
||||
|
||||
|
||||
lab02_lib.ire_plot('training', IRE_array, IREth, 'AE1')
|
||||
```
|
||||
|
||||

|
||||
IREth: 1.71
|
||||
|
||||
|
||||
### Создание и обучение автокодировщика AE2
|
||||
```python
|
||||
patience = 500
|
||||
ae2_trained, IRE2, IREth2= lab02_lib.create_fit_save_ae(data,'out/AE2.h5','out/AE2_ire_th.txt', 3000, True, patience)
|
||||
lab02_lib.ire_plot('training', IRE2, IREth2, 'AE2')
|
||||
print(f"IREth: {IREth2}")
|
||||
```
|
||||
|
||||

|
||||
IREth: 0.44
|
||||
|
||||
|
||||
### Расчет характеристик качества обучения автокодировщиков
|
||||
```python
|
||||
numb_square= 20
|
||||
xx,yy,Z1=lab02_lib.square_calc(numb_square,data, ae_trainned ,IREth,'1',True)
|
||||
```
|
||||
**Результат выполнения:**
|
||||

|
||||
```
|
||||
amount: 18
|
||||
amount_ae: 101
|
||||
|
||||
|
||||
```
|
||||

|
||||

|
||||
```
|
||||
Оценка качества AE1
|
||||
IDEAL = 0. Excess: 4.611111111111111
|
||||
IDEAL = 0. Deficit: 0.0
|
||||
IDEAL = 1. Coating: 1.0
|
||||
summa: 1.0
|
||||
IDEAL = 1. Extrapolation precision (Approx): 0.1782178217821782
|
||||
```
|
||||
|
||||
```python
|
||||
xx,yy,Z2=lab02_lib.square_calc(numb_square,data,ae2_trained,IREth2,'1',True)
|
||||
```
|
||||
|
||||
**Результат выполнения:**
|
||||

|
||||
```
|
||||
amount: 19
|
||||
amount_ae: 40
|
||||
```
|
||||

|
||||

|
||||
```
|
||||
Оценка качества AE2
|
||||
IDEAL = 0. Excess: 1.0
|
||||
IDEAL = 0. Deficit: 0.0
|
||||
IDEAL = 1. Coating: 1.0
|
||||
summa: 1.0
|
||||
IDEAL = 1. Extrapolation precision (Approx): 0.5
|
||||
```
|
||||
```python
|
||||
lab02_lib.plot2in1(data,xx,yy,Z1,Z2)
|
||||
```
|
||||

|
||||
|
||||
### Тестирование автокодировщиков
|
||||
```python
|
||||
data_test= np.loadtxt('data_test.txt', dtype=float)
|
||||
|
||||
lab02_lib.anomaly_detection_ae(predicted_labels1, ire1, IREth)
|
||||
lab02_lib.ire_plot('test', ire1, IREth, 'AE1')
|
||||
lab02_lib.anomaly_detection_ae(predicted_labels2, ire2, IREth2)
|
||||
lab02_lib.ire_plot('test', ire1, IREth, 'AE2')
|
||||
|
||||
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
---
|
||||
|
||||
## ЗАДАНИЕ 2: Работа с реальными данными Cardio
|
||||
|
||||
### Загрузка и изучение данных Cardio
|
||||
```python
|
||||
train = np.loadtxt('cardio_train.txt', dtype=float)
|
||||
test = np.loadtxt('cardio_test.txt', dtype=float)
|
||||
```
|
||||
|
||||
**Описание:** Загружаются данные Cardio, которые содержат измерения частоты сердечных сокращений плодаи сокращений матки на кардиотокограммах.
|
||||
|
||||
### Создание и обучение автокодировщика
|
||||
```python
|
||||
from time import time
|
||||
start = time()
|
||||
ae3_trained, IRE3, IREth3 = lab02_lib.create_fit_save_ae(train,'out/AE3.h5','out/AE3_ire_th.txt',
|
||||
85000, False, 7500, early_stopping_delta = 0.004)
|
||||
print("Время на обучение: ", time() - start)
|
||||
```
|
||||
|
||||
**Результаты обучения:**
|
||||
Время на обучение: 2023.5726425647736
|
||||
- loss: 0.0381
|
||||
Порог IREth3: 3.12
|
||||
|
||||
|
||||
```python
|
||||
predicted_labels3, ire3 = lab02_lib.predict_ae(ae3_trained, test, IREth3)
|
||||
```
|
||||
|
||||
|
||||
### Тестирование автокодировщика
|
||||
```python
|
||||
lab02_lib.anomaly_detection_ae(predicted_labels3, ire3, IREth3)
|
||||
lab02_lib.ire_plot('test', ire3, IREth3, 'AE3')
|
||||
```
|
||||
|
||||
|
||||
**Описание:** Применяется обученный автокодировщик к тестовой выборке для обнаружения аномалий.
|
||||
|
||||
**Результаты обнаружения аномалий:**
|
||||
```
|
||||
i Labels IRE IREth
|
||||
97 [1.] [2.89] 2.83
|
||||
98 [0.] [1.98] 2.83
|
||||
99 [0.] [2.1] 2.83
|
||||
100 [0.] [1.67] 2.83
|
||||
101 [0.] [1.94] 2.83
|
||||
102 [0.] [2.2] 2.83
|
||||
103 [0.] [2.12] 2.83
|
||||
104 [0.] [2.08] 2.83
|
||||
105 [0.] [2.38] 2.83
|
||||
106 [0.] [1.9] 2.83
|
||||
107 [0.] [1.57] 2.83
|
||||
108 [1.] [4.19] 2.83
|
||||
Обнаружено 84.0 аномалий
|
||||
```
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## ИТОГОВЫЕ РЕЗУЛЬТАТЫ
|
||||
|
||||
### Таблица 1 - Результаты задания №1
|
||||
| | Количество скрытых слоев | Количество нейронов в скрытых слоях | Количество эпох обучения | Ошибка MSE_stop | Порог ошибки реконструкции | Значение показателя Excess | Значение показателя Approx | Количество обнаруженных аномалий |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| **AE1** | 1 | 1 | 1000 | 0.0134 | 0.56 | 2.(1) | 0.321 | |
|
||||
| **AE2** | 5 | 3 2 1 2 3 | 3000 | 0.0096 | 0.48 | 1.2(7) | 0.439 | |
|
||||
|
||||
### Таблица 2 - Результаты задания №2
|
||||
| Dataset name | Количество скрытых слоев | Количество нейронов в скрытых слоях | Количество эпох обучения | Ошибка MSE_stop | Порог ошибки реконструкции | % обнаруженных аномалий |
|
||||
|--------------|--------------------------|-------------------------------------|--------------------------|-----------------|----------------------------|-------------------------|
|
||||
| Cardio | 15 | 21 19 17 15 17 19 21 | 31000 | 0.0381 | 0.482 | 77% |
|
||||
|
||||
---
|
||||
|
||||
## ВЫВОДЫ
|
||||
|
||||
### Требования к данным для обучения
|
||||
- Обучающая выборка должна содержать только нормальные (неаномальные) образцы.
|
||||
- Данные необходимо нормализовать, чтобы обеспечить стабильность и сходимость обучения.
|
||||
- Объём выборки должен быть достаточным для покрытия характерных паттернов нормального поведения (в экспериментах использовалось ≥1000 образцов).
|
||||
### Влияние архитектуры автокодировщика
|
||||
- Простая архитектура (AE1) быстро обучается, но даёт грубую аппроксимацию границы нормальных данных, что приводит к высокому значению показателя Excess и низкой точности экстраполяции.
|
||||
- Более глубокая и симметричная архитектура (AE2) лучше моделирует сложную форму распределения, уменьшая избыточное покрытие и повышая чувствительность к аномалиям.
|
||||
### Влияние количества эпох обучения
|
||||
- Недостаточное число эпох (как у AE1) приводит к недообучению и завышенному порогу IRE.
|
||||
- Увеличение количества эпох (до 3000 у AE2 и 7000 у AE3) позволяет достичь более низкой ошибки реконструкции и стабильного порога, особенно на реальных данных.
|
||||
### Порог обнаружения аномалий
|
||||
- Порог IREth, вычисляемый как 95-й перцентиль ошибки реконструкции на обучающей выборке, обеспечивает разумный компромисс между полнотой и точностью.
|
||||
- Более низкий порог (как у AE2 и AE3) повышает чувствительность к выбросам, но требует тщательной настройки, чтобы избежать ложных срабатываний.
|
||||
### Оценка качества через метрики EDCA
|
||||
- Метрики Excess, Deficit, Coating и Extrapolation precision позволяют количественно сравнивать границы, формируемые разными моделями.
|
||||
- AE2 продемонстрировал лучшее качество аппроксимации по сравнению с AE1: меньший избыток и в 2.8 раза выше точность экстраполяции.
|
||||
- Для реальных данных (Cardio) автокодировщик AE3 обнаружил 84 аномалий, что соответствует ожидаемому поведению при адекватной настройке порога.
|
||||
|
После Ширина: | Высота: | Размер: 31 KiB |
|
После Ширина: | Высота: | Размер: 12 KiB |
|
После Ширина: | Высота: | Размер: 12 KiB |
|
После Ширина: | Высота: | Размер: 12 KiB |
|
После Ширина: | Высота: | Размер: 11 KiB |