Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
31
Добавлен:
18.07.2022
Размер:
1.43 Mб
Скачать

# построение областей аппроксимации и точек тестового набора lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test)

11) Результаты исследования занесем в таблицу:

 

 

Число

 

 

 

 

 

 

 

Число

нейронов

Число

Ошибка

Порог ошибки

Значение

Значение

Число

M=22

скрытых

в

 

эпох

MSE_stop

реконструкции

показателя

показателя

обнаруженных

 

слоев

скрытых

обучения

 

 

Excess

Approx

аномалий

 

 

слоях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AE1

1

1

 

12000

2,8649

2,75

10,727

0,085

0

 

 

 

 

 

 

 

 

 

 

AE2

5

3 2 1

2 3

10000

0,0100

0,36

0,136

0,917

5

 

 

 

 

 

 

 

 

 

 

12) Выводы:

Для качественного обнаружения аномалий в данных при создании и обучении автокодировщика должны выполняться следующие требования:

-архитектура автокодировщика не должна быть простой, то есть должна включать в себя несколько слоев;

-количество эпох обучения должно быть достаточно большим (порядка десятков тысяч);

-ошибка MSE_stop, приемлемая для останова обучения, должна иметь достаточно малое значение << 1;

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

-характеристики качества обучения EDCA одноклассового классификатора не должны сильно отличаться от идеальных значений показателей Excess = 0, Deficit = 0, Coating = 1, Approx = 1.

11

Задание 2

1) Изучим описание набора реальных данных.

Исходный набор данных Letter Recognition Data Set https://archive.ics.uci.edu/ml/datasets/Letter+Recognition) из репозитория машинного обучения

UCI представляет собой набор данных для многоклассовой классификации. Набор предназначен для распознавания черно-белых пиксельных прямоугольников как одну из 26 заглавных букв английского алфавита, где буквы алфавита представлены в 16 измерениях. Чтобы получить данные, подходящие для обнаружения аномалий, была произведена подвыборка данных из 3 букв, чтобы сформировать нормальный класс, и случайным образом их пары были объединены так, чтобы их размерность удваивалась. Чтобы сформировать класс аномалий, случайным образом были выбраны несколько экземпляров букв, которые не входят в нормальный класс, и они были объединены с экземплярами из нормального класса. Процесс объединения выполняется для того, чтобы сделать обнаружение более сложным, поскольку каждый аномальный пример также будет иметь некоторые нормальные значения признаков.

Количество

Количество

Количество

Количество

признаков

примеров

нормальных

аномалий

 

 

примеров

 

 

 

 

 

32

1600

1500

100

 

 

 

 

2) Загрузим многомерную обучающую выборку реальных данных letter_train.txt.

# загрузка обучающей выборки

train = np.loadtxt('letter_train.txt', dtype=np.float)

3) Выведем полученные данные и их размерность в консоли.

# вывод данных и размерности print('Исходные данные:') print(train)

print('Размерность данных:') print(train.shape)

12

Исходные данные:

[[ 6. 10. 5. ... 10. 2. 7.] [ 0. 6. 0. ... 8. 1. 7.] [ 4. 7. 5. ... 8. 2. 8.]

...

[ 7. 10. 10. ... 8. 5. 6.] [ 7. 7. 10. ... 6. 0. 8.] [ 3. 4. 5. ... 9. 5. 5.]]

Размерность данных: (1500, 32)

4) Создадим и обучим автокодировщик с подходящей для данных архитектурой.

# обучение AE3 patience=5000

ae3_trained, IRE3, IREth3 = lib.create_fit_save_ae(train,'out/AE3.h5','out/AE3_ire_th.txt', 100000, True, patience)

Задать архитектуру автокодировщиков или использовать архитектуру по умолчанию? (1/2): 1 Задайте количество скрытых слоёв (нечетное число) : 7 Задайте архитектуру скрытых слоёв автокодировщика, например, в виде 3 1 3 : 40 30 15 10 15 30 40

5) Зафиксируем ошибку MSE, на которой обучение завершилось. Построим график ошибки реконструкции обучающей выборки. Зафиксируем порог ошибки реконструкции – порог обнаружения аномалий.

Epoch 100000/100000

1/1 [==============================] - 0s 23ms/step - loss: 0.2161

# Построение графика ошибки реконструкции lib.ire_plot('training', IRE3, IREth3, 'AE3')

13

6) Вывод:

Так как ошибка MSE_stop = 0,2161, которая была получена на последней эпохе обучения автокодировщика АЕ3, значительно меньше 1, а порог обнаружения аномалий не слишком завышен по сравнению с большинством значений ошибки реконструкции обучающей выборки, можно сделать вывод, что автокодировщик АЕ3 пригоден для обнаружения аномалий.

7)Загрузим тестовую выборку letter_test.txt.

test = np.loadtxt('letter_test.txt', dtype=np.float)

8)Подадим тестовую выборку на вход обученного автокодировщика для обнаружения аномалий. Выведем график ошибки реконструкции элементов тестовой выборки относительно порога.

# тестирование АE3

predicted_labels3, ire3 = lib.predict_ae(ae3_trained, test, IREth3) lib.anomaly_detection_ae(predicted_labels3, ire3, IREth3) lib.ire_plot('test', ire3, IREth3, 'AE3')

i

Labels

IRE

IREth

0

[1.]

[8.34]

5.47

1

[1.]

[11.11]

5.47

 

 

 

98

[1.]

[8.17]

5.47

14

99 [1.] [12.51] 5.47

Обнаружено 83.0 аномалий

9) Параметры наилучшего автокодировщика и результаты обнаружения аномалий занесем в таблицу:

 

Число

Число

 

 

 

 

Name

нейронов в

Число эпох

Ошибка

Порог ошибки

% Обнаруженных

скрытых

dataset

скрытых

обучения

MSE_stop

реконструкции

аномалий

 

слоев

слоях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

letter

7

40 30 15 10

100000

0,2161

5,5

83

15 30 40

 

 

 

 

 

 

 

 

 

 

 

 

 

10) Выводы:

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

-архитектура автокодировщика должна быть достаточно сложной, то есть должна включать в себя несколько слоев;

-количество эпох обучения должно быть достаточно большим (порядка сотен тысяч);

-ошибка MSE_stop, приемлемая для останова обучения, должна иметь достаточно малое значение << 1;

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

15

Соседние файлы в папке Лабораторные работы