{ "cells": [ { "cell_type": "markdown", "id": "1c1905f6-acba-4dba-aba9-4d2fe59298df", "metadata": { "id": "1c1905f6-acba-4dba-aba9-4d2fe59298df" }, "source": [ "## Задание 1" ] }, { "cell_type": "markdown", "id": "61f467d3-d1c1-481a-8560-f259a22e0824", "metadata": { "id": "61f467d3-d1c1-481a-8560-f259a22e0824" }, "source": [ "### 1) В среде Google Colab создали новый блокнот (notebook). Импортировали необходимые для работы библиотеки и модули." ] }, { "cell_type": "code", "execution_count": null, "id": "58e787ca-562f-458d-8c62-e86b6fb1580a", "metadata": { "id": "58e787ca-562f-458d-8c62-e86b6fb1580a" }, "outputs": [], "source": [ "# импорт модулей\n", "import os\n", "os.chdir('/content/drive/MyDrive/Colab Notebooks/is_lab2')\n", "\n", "import numpy as np\n", "import lab02_lib as lib" ] }, { "cell_type": "markdown", "id": "5bbb8290-8806-4184-b33b-f1b0680bf563", "metadata": { "id": "5bbb8290-8806-4184-b33b-f1b0680bf563" }, "source": [ "### 2) Сгенерировали индивидуальный набор двумерных данных в пространстве признаков с координатами центра (6, 6), где 6 – номер бригады. Вывели полученные данные на рисунок и в консоль." ] }, { "cell_type": "code", "execution_count": null, "id": "29603d03-8478-4341-b7ad-bb608ad88890", "metadata": { "id": "29603d03-8478-4341-b7ad-bb608ad88890" }, "outputs": [], "source": [ "# генерация датасета\n", "data = lib.datagen(6, 6, 1000, 2)\n", "\n", "# вывод данных и размерности\n", "print('Исходные данные:')\n", "print(data)\n", "print('Размерность данных:')\n", "print(data.shape)" ] }, { "cell_type": "markdown", "id": "00ba79e5-d8f9-4c40-a065-e8fd21a68e21", "metadata": { "id": "00ba79e5-d8f9-4c40-a065-e8fd21a68e21" }, "source": [ "### 3) Создали и обучили автокодировщик AE1 простой архитектуры, выбрав небольшое количество эпох обучения. Зафиксировали в таблице вида табл.1 количество скрытых слоёв и нейронов в них" ] }, { "cell_type": "code", "execution_count": null, "id": "bc736f50-204b-4b1d-8c1c-0dd34fb1f02b", "metadata": { "id": "bc736f50-204b-4b1d-8c1c-0dd34fb1f02b" }, "outputs": [], "source": [ "# обучение AE1\n", "patience = 300\n", "ae1_trained, IRE1, IREth1 = lib.create_fit_save_ae(data,'out/AE1.h5','out/AE1_ire_th.txt',\n", "1000, True, patience)" ] }, { "cell_type": "markdown", "id": "ae9e6816-d300-455a-a4ee-77e4911e02f5", "metadata": { "id": "ae9e6816-d300-455a-a4ee-77e4911e02f5" }, "source": [ "### 4) Зафиксировали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксировали порог ошибки реконструкции – порог обнаружения аномалий." ] }, { "cell_type": "markdown", "source": [ "Ошибка MSE_AE1 = 19.5568" ], "metadata": { "id": "Np8zquNSgtO9" }, "id": "Np8zquNSgtO9" }, { "cell_type": "code", "execution_count": null, "id": "fb7eeae8-f478-4295-b6de-b5790b7861f2", "metadata": { "id": "fb7eeae8-f478-4295-b6de-b5790b7861f2" }, "outputs": [], "source": [ "# Построение графика ошибки реконструкции\n", "lib.ire_plot('training', IRE1, IREth1, 'AE1')" ] }, { "cell_type": "markdown", "id": "92fb420f-907e-4417-ab34-6d12308bed0b", "metadata": { "id": "92fb420f-907e-4417-ab34-6d12308bed0b" }, "source": [ "### 5) Создали и обучили второй автокодировщик AE2 с усложненной архитектурой, задав большее количество эпох обучения" ] }, { "cell_type": "code", "execution_count": null, "id": "bb9f83e2-fecf-4118-8376-a712726d12d5", "metadata": { "id": "bb9f83e2-fecf-4118-8376-a712726d12d5" }, "outputs": [], "source": [ "# обучение AE2\n", "ae2_trained, IRE2, IREth2 = lib.create_fit_save_ae(data,'out/AE2.h5','out/AE2_ire_th.txt',\n", "3000, True, patience)" ] }, { "cell_type": "markdown", "id": "03194c1b-c03e-42a5-93e5-f4d007ddb7c7", "metadata": { "id": "03194c1b-c03e-42a5-93e5-f4d007ddb7c7" }, "source": [ "### 6) Зафиксировали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксировали второй порог ошибки реконструкции – порог обнаружения аномалий." ] }, { "cell_type": "markdown", "source": [ "Ошибка MSE_AE2 = 0.0108" ], "metadata": { "id": "6TBPoMskhCQp" }, "id": "6TBPoMskhCQp" }, { "cell_type": "code", "execution_count": null, "id": "47cf147a-f97b-41d3-9d7c-b799da0115fe", "metadata": { "id": "47cf147a-f97b-41d3-9d7c-b799da0115fe" }, "outputs": [], "source": [ "# Построение графика ошибки реконструкции\n", "lib.ire_plot('training', IRE2, IREth2, 'AE2')" ] }, { "cell_type": "markdown", "id": "fd14d331-aad6-4b98-9926-5ab6a055beb0", "metadata": { "id": "fd14d331-aad6-4b98-9926-5ab6a055beb0" }, "source": [ "### 7) Рассчитали характеристики качества обучения EDCA для AE1 и AE2. Визуализировали и сравнили области пространства признаков, распознаваемые автокодировщиками AE1 и AE2. Сделали вывод о пригодности AE1 и AE2 для качественного обнаружения аномалий.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "58fd0b46-1064-4f2f-b04f-88307bf938d2", "metadata": { "id": "58fd0b46-1064-4f2f-b04f-88307bf938d2" }, "outputs": [], "source": [ "# построение областей покрытия и границ классов\n", "# расчет характеристик качества обучения\n", "numb_square = 20\n", "xx, yy, Z1 = lib.square_calc(numb_square, data, ae1_trained, IREth1, '1', True)" ] }, { "cell_type": "code", "source": [ "# построение областей покрытия и границ классов\n", "# расчет характеристик качества обучения\n", "numb_square = 20\n", "xx, yy, Z2 = lib.square_calc(numb_square, data, ae2_trained, IREth2, '2', True)" ], "metadata": { "id": "ZG72thVfYMOy" }, "id": "ZG72thVfYMOy", "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# сравнение характеристик качества обучения и областей аппроксимации\n", "lib.plot2in1(data, xx, yy, Z1, Z2)" ], "metadata": { "id": "RJWYYYHQbUIN" }, "id": "RJWYYYHQbUIN", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "id": "d766b8f0-3ba7-4a73-94a0-7858eb2f5515", "metadata": { "id": "d766b8f0-3ba7-4a73-94a0-7858eb2f5515" }, "source": [ "### 8) Если автокодировщик AE2 недостаточно точно аппроксимирует область обучающих данных, то подобрать подходящие параметры автокодировщика и повторить шаги (6) – (8)." ] }, { "cell_type": "markdown", "source": [ "Полученные показатели EDCA для автокодировщика AE2 нас устраивают." ], "metadata": { "id": "XbnbvTima5dv" }, "id": "XbnbvTima5dv" }, { "cell_type": "markdown", "id": "cfa38b82-4c8e-4437-9c25-581d7fea0f2c", "metadata": { "id": "cfa38b82-4c8e-4437-9c25-581d7fea0f2c" }, "source": [ "### 9) Изучили сохраненный набор данных и пространство признаков. Создали тестовую выборку, состоящую, как минимум, из 4ёх элементов, не входящих в обучающую выборку. Элементы должны быть такими, чтобы AE1 распознавал их как норму, а AE2 детектировал как аномалии." ] }, { "cell_type": "code", "execution_count": null, "id": "d618382f-f65a-4c17-b0d0-3d2d0c4bc50e", "metadata": { "id": "d618382f-f65a-4c17-b0d0-3d2d0c4bc50e" }, "outputs": [], "source": [ "# загрузка тестового набора\n", "data_test = np.loadtxt('data_test.txt', dtype=float)\n", "print(data_test)" ] }, { "cell_type": "markdown", "source": [ "### 10) Применили обученные автокодировщики AE1 и AE2 к тестовым данным и вывели значения ошибки реконструкции для каждого элемента тестовой выборки относительно порога на график и в консоль." ], "metadata": { "id": "3Ce8wSVMdjBj" }, "id": "3Ce8wSVMdjBj" }, { "cell_type": "code", "source": [ "# тестирование АE1\n", "predicted_labels1, ire1 = lib.predict_ae(ae1_trained, data_test, IREth1)" ], "metadata": { "id": "Hq8A0LyMcKXk" }, "id": "Hq8A0LyMcKXk", "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# тестирование АE1\n", "lib.anomaly_detection_ae(predicted_labels1, ire1, IREth1)\n", "lib.ire_plot('test', ire1, IREth1, 'AE1')" ], "metadata": { "id": "Z_v2X4HvcQD5" }, "id": "Z_v2X4HvcQD5", "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# тестирование АE2\n", "predicted_labels2, ire2 = lib.predict_ae(ae2_trained, data_test, IREth2)" ], "metadata": { "id": "fT75bpEnc7a2" }, "id": "fT75bpEnc7a2", "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# тестирование АE2\n", "lib.anomaly_detection_ae(predicted_labels2, ire2, IREth2)\n", "lib.ire_plot('test', ire2, IREth2, 'AE2')" ], "metadata": { "id": "EpGtgYZVdAen" }, "id": "EpGtgYZVdAen", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "id": "7acf3a7f-4dd8-44df-b201-509aa4caa7f0", "metadata": { "id": "7acf3a7f-4dd8-44df-b201-509aa4caa7f0" }, "source": [ "### 11) Визуализировали элементы обучающей и тестовой выборки в областях пространства признаков, распознаваемых автокодировщиками AE1 и AE2." ] }, { "cell_type": "code", "execution_count": null, "id": "a2fbf3a9-5e11-49d0-a0db-f77f3edeb7b7", "metadata": { "id": "a2fbf3a9-5e11-49d0-a0db-f77f3edeb7b7" }, "outputs": [], "source": [ "# построение областей аппроксимации и точек тестового набора\n", "lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test)" ] }, { "cell_type": "markdown", "id": "bd63edf4-3452-41db-8080-d8a2ff4f09a4", "metadata": { "id": "bd63edf4-3452-41db-8080-d8a2ff4f09a4" }, "source": [ "### 12) Результаты исследования занесли в таблицу:\n", "Табл. 1 Результаты задания №1" ] }, { "cell_type": "markdown", "source": [ "| | Количество
скрытых слоев | Количество
нейронов в скрытых слоях | Количество
эпох обучения | Ошибка
MSE_stop | Порог ошибки
реконструкции | Значение показателя
Excess | Значение показателя
Approx | Количество обнаруженных
аномалий |\n", "|-----:|------------------------------|----------------------------------------|-----------------------------|--------------------|-------------------------------|-------------------------------|--------------------------------|-------------------------------------|\n", "| AE1 | 1 | 1 | 1000 | 19.5568 | 6.53 | 12.67 | 0.073 | 0 |\n", "| AE2 | 5 | 3,2,1,2,3 | 3000 | 0.0108 | 0.4 | 0.33 | 0.750 | 4 |\n" ], "metadata": { "id": "df2BIryKfkpk" }, "id": "df2BIryKfkpk" }, { "cell_type": "markdown", "id": "b8e54861-e2c2-4755-a2d8-5d4b6cace481", "metadata": { "id": "b8e54861-e2c2-4755-a2d8-5d4b6cace481" }, "source": [ "### 13) Сделали выводы о требованиях к:\n", "- данным для обучения,\n", "- архитектуре автокодировщика,\n", "- количеству эпох обучения,\n", "- ошибке MSE_stop, приемлемой для останова обучения,\n", "- ошибке реконструкции обучающей выборки (порогу обнаружения\n", "аномалий),\n", "- характеристикам качества обучения EDCA одноклассового\n", "классификатора\n", "\n", "для качественного обнаружения аномалий в данных." ] }, { "cell_type": "markdown", "source": [ "1) Данные для обучения должны быть без аномалий, чтобы автокодировщик смог рассчитать верное пороговое значение\n", "2) Архитектура автокодировщика должна постепенно сужатся к бутылочному горлышку,а затем постепенно возвращатся к исходным выходным размерам, кол-во скрытых слоев 3-5\n", "3) В рамках данного набора данных оптимальное кол-во эпох 3000 с patience 300 эпох\n", "4) Оптимальная ошибка MSE-stop в районе 0.01, желательно не меньше для предотвращения переобучения\n", "5) Значение порога в районе 0.4\n", "6) Значение Excess не больше 0.5, значение Deficit равное 0, значение Coating равное 1, значение Approx не меньше 0.7" ], "metadata": { "id": "1s5_ye8vkleI" }, "id": "1s5_ye8vkleI" }, { "cell_type": "markdown", "source": [ "## Задание 2" ], "metadata": { "id": "rqdVflKXo6Bo" }, "id": "rqdVflKXo6Bo" }, { "cell_type": "markdown", "source": [ "### 1) Изучить описание своего набора реальных данных, что он из себя представляет" ], "metadata": { "id": "rSvJtTReo928" }, "id": "rSvJtTReo928" }, { "cell_type": "markdown", "source": [ "Бригада 6 => набор данных Cardio. Это реальный набор данных, который состоит из измерений частоты сердечных сокращений плода и\n", "сокращений матки на кардиотокограммах, классифицированных экспертами\n", "акушерами. Исходный набор данных предназначен для классификации. В нем\n", "представлено 3 класса: «норма», «подозрение» и «патология». Для обнаружения\n", "аномалий класс «норма» принимается за норму, класс «патология» принимается за\n", "аномалии, а класс «подозрение» был отброшен.\n", "\n", "| Количество
признаков | Количество
примеров | Количество
нормальных примеров | Количество
аномальных примеров |\n", "|-------------------------:|-----------------------:|----------------------------------:|-----------------------------------:|\n", "| 21 | 1764 | 1655 | 109 |\n" ], "metadata": { "id": "gf-0gJ7jqTdk" }, "id": "gf-0gJ7jqTdk" }, { "cell_type": "markdown", "source": [ "### 2) Загрузить многомерную обучающую выборку реальных данных Cardio.txt." ], "metadata": { "id": "N2Egw1pho-F_" }, "id": "N2Egw1pho-F_" }, { "cell_type": "code", "source": [ "# загрузка обчуающей выборки\n", "train = np.loadtxt('data/cardio_train.txt', dtype=float)" ], "metadata": { "id": "G8QTxAFapASY" }, "id": "G8QTxAFapASY", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### 3) Вывести полученные данные и их размерность в консоли." ], "metadata": { "id": "zj2WXPNco-Tz" }, "id": "zj2WXPNco-Tz" }, { "cell_type": "code", "source": [ "print('train:\\n', train)\n", "print('train.shape:', np.shape(train))" ], "metadata": { "id": "W6hTlfk6pAo9" }, "id": "W6hTlfk6pAo9", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### 4) Создать и обучить автокодировщик с подходящей для данных архитектурой. Выбрать необходимое количество эпох обучения." ], "metadata": { "id": "0T11A0x4o-gr" }, "id": "0T11A0x4o-gr" }, { "cell_type": "code", "source": [ "# **kwargs\n", "# verbose_every_n_epochs - отображать прогресс каждые N эпох (по умолчанию - 1000)\n", "# early_stopping_delta - дельта для ранней остановки (по умолчанию - 0.01)\n", "# early_stopping_value = значение для ранней остановки (по умолчанию - 0.0001)\n", "\n", "from time import time\n", "\n", "patience = 4000\n", "start = time()\n", "ae3_v1_trained, IRE3_v1, IREth3_v1 = lib.create_fit_save_ae(train,'out/AE3_V1.h5','out/AE3_v1_ire_th.txt',\n", "100000, False, patience, early_stopping_delta = 0.001)\n", "print(\"Время на обучение: \", time() - start)" ], "metadata": { "id": "rPwtBtdRPztp" }, "id": "rPwtBtdRPztp", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### 5) Зафиксировать ошибку MSE, на которой обучение завершилось. Построить график ошибки реконструкции обучающей выборки. Зафиксировать порог ошибки реконструкции – порог обнаружения аномалий." ], "metadata": { "id": "8ALjaY8lo-sa" }, "id": "8ALjaY8lo-sa" }, { "cell_type": "markdown", "source": [ "Скрытых слоев 7, нейроны: 46->26->14->10->14->26->48\n", "\n", "Ошибка MSE_AE3_v1 = 0.0126" ], "metadata": { "id": "b4sk_fhYY6Qb" }, "id": "b4sk_fhYY6Qb" }, { "cell_type": "code", "source": [ "# Построение графика ошибки реконструкции\n", "lib.ire_plot('training', IRE3_v1, IREth3_v1, 'AE3_v1')" ], "metadata": { "id": "a4sR3SSDpBPU" }, "id": "a4sR3SSDpBPU", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### 6) Сделать вывод о пригодности обученного автокодировщика для качественного обнаружения аномалий. Если порог ошибки реконструкции слишком велик, то подобрать подходящие параметры автокодировщика и повторить шаги (4) – (6)." ], "metadata": { "id": "DGBM9xNFo-4k" }, "id": "DGBM9xNFo-4k" }, { "cell_type": "code", "source": [ "# **kwargs\n", "# verbose_every_n_epochs - отображать прогресс каждые N эпох (по умолчанию - 1000)\n", "# early_stopping_delta - дельта для ранней остановки (по умолчанию - 0.01)\n", "# early_stopping_value = значение для ранней остановки (по умолчанию - 0.0001)\n", "\n", "from time import time\n", "\n", "patience = 4000\n", "start = time()\n", "ae3_v2_trained, IRE3_v2, IREth3_v2 = lib.create_fit_save_ae(train,'out/AE3_V2.h5','out/AE3_v2_ire_th.txt',\n", "100000, False, patience, early_stopping_delta = 0.001)\n", "print(\"Время на обучение: \", time() - start)" ], "metadata": { "id": "ZvM1VbKEgalO" }, "id": "ZvM1VbKEgalO", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Скрытых слоев 7, нейроны: 48->36->28->22->16->12->16->22->28->36->48\n", "\n", "Ошибка MSE_AE3_v1 = 0.0098" ], "metadata": { "id": "9BrPUb_8fX5R" }, "id": "9BrPUb_8fX5R" }, { "cell_type": "code", "source": [ "# Построение графика ошибки реконструкции\n", "lib.ire_plot('training', IRE3_v2, IREth3_v2, 'AE3_v2')" ], "metadata": { "id": "kh1eMtvpf6F-" }, "id": "kh1eMtvpf6F-", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### 7) Изучить и загрузить тестовую выборку Cardio.txt." ], "metadata": { "id": "vJvW1mOtpgFO" }, "id": "vJvW1mOtpgFO" }, { "cell_type": "code", "source": [ "#загрузка тестовой выборки\n", "test = np.loadtxt('data/cardio_test.txt', dtype=float)\n", "print('\\n test:\\n', test)\n", "print('test.shape:', np.shape(test))" ], "metadata": { "id": "GrXQ5YymtD2u" }, "id": "GrXQ5YymtD2u", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### 8) Подать тестовую выборку на вход обученного автокодировщика для обнаружения аномалий. Вывести график ошибки реконструкции элементов тестовой выборки относительно порога." ], "metadata": { "id": "6iqO4Yxbpgob" }, "id": "6iqO4Yxbpgob" }, { "cell_type": "code", "source": [ "# тестирование АE3\n", "predicted_labels3_v1, ire3_v1 = lib.predict_ae(ae3_v1_trained, test, IREth3_v1)" ], "metadata": { "id": "Vxj1fTAikDuU" }, "id": "Vxj1fTAikDuU", "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Построение графика ошибки реконструкции\n", "lib.ire_plot('test', ire3_v1, IREth3_v1, 'AE3_v1')" ], "metadata": { "id": "21DdnIKYtmtM" }, "id": "21DdnIKYtmtM", "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# тестирование АE3\n", "predicted_labels3_v2, ire3_v2 = lib.predict_ae(ae3_v2_trained, test, IREth3_v2)" ], "metadata": { "id": "Ql1JMAM6sf7Z" }, "id": "Ql1JMAM6sf7Z", "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Построение графика ошибки реконструкции\n", "lib.ire_plot('test', ire3_v2, IREth3_v2, 'AE3_v2')" ], "metadata": { "id": "jczBRWjTt35R" }, "id": "jczBRWjTt35R", "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# тестирование АE2\n", "lib.anomaly_detection_ae(predicted_labels3_v1, IRE3_v1, IREth3_v1)" ], "metadata": { "id": "2kF1XknIpg48" }, "id": "2kF1XknIpg48", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Для AE3_v1 точность составляет 88%" ], "metadata": { "id": "LXHt7-gxuJIy" }, "id": "LXHt7-gxuJIy" }, { "cell_type": "code", "source": [ "# тестирование АE2\n", "lib.anomaly_detection_ae(predicted_labels3_v2, IRE3_v2, IREth3_v2)" ], "metadata": { "id": "5ow1D88nsrir" }, "id": "5ow1D88nsrir", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Для AE3_v2 точность составляет 92%" ], "metadata": { "id": "LDsC5WyeuRHS" }, "id": "LDsC5WyeuRHS" }, { "cell_type": "markdown", "source": [ "### 9) Если результаты обнаружения аномалий не удовлетворительные (обнаружено менее 70% аномалий), то подобрать подходящие параметры автокодировщика и повторить шаги (4) – (9)." ], "metadata": { "id": "fPPbYwnQpqS3" }, "id": "fPPbYwnQpqS3" }, { "cell_type": "markdown", "source": [ "Результаты обнаружения аномалий удовлетворены." ], "metadata": { "id": "IVmw2aeduXml" }, "id": "IVmw2aeduXml" }, { "cell_type": "markdown", "source": [ "### 10) Параметры наилучшего автокодировщика и результаты обнаружения аномалий занести в таблицу:\n", "Табл. 2 Результаты задания №2" ], "metadata": { "id": "u3cAX_IgpvWU" }, "id": "u3cAX_IgpvWU" }, { "cell_type": "markdown", "source": [ "| Dataset name | Количество
скрытых слоев | Количество
нейронов в скрытых слоях | Количество
эпох обучения | Ошибка
MSE_stop | Порог ошибки
реконструкции | % обнаруженных
аномалий |\n", "|:-------------|:-----------------------------|:----------------------------------------|:-----------------------------|:-------------------|:-------------------------------|:---------------------------|\n", "| Cardio | 11 | 48, 36, 28, 22, 16, 10, 16, 22, 28, 36, 48 | 100000 | 0.0098 | 1.6 | 92% |\n" ], "metadata": { "id": "tryfJdjTvgU8" }, "id": "tryfJdjTvgU8" }, { "cell_type": "markdown", "source": [ "### 11) Сделать выводы о требованиях к:\n", "- данным для обучения,\n", "- архитектуре автокодировщика, \n", "- количеству эпох обучения,\n", "- ошибке MSE_stop, приемлемой для останова обучения,\n", "- ошибке реконструкции обучающей выборки (порогу обнаружения\n", "аномалий)\n", "\n", "для качественного обнаружения аномалий в случае, когда размерность\n", "пространства признаков высока." ], "metadata": { "id": "eE7IYyGJp0Vv" }, "id": "eE7IYyGJp0Vv" }, { "cell_type": "markdown", "source": [ "1) Данные для обучения должны быть без аномалий, чтобы автокодировщик смог рассчитать верное пороговое значение\n", "2) Архитектура автокодировщика должна постепенно сужатся к бутылочному горлышку,а затем постепенно возвращатся к исходным выходным размерам, кол-во скрытых слоев 7-11.\n", "3) В рамках данного набора данных оптимальное кол-во эпох 100000 с patience 4000 эпох\n", "4) Оптимальная ошибка MSE-stop в районе 0.001, желательно не меньше для предотвращения переобучения\n", "5) Значение порога не больше 1.6" ], "metadata": { "id": "67p7AeSWwVXE" }, "id": "67p7AeSWwVXE" } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 5 }