Anomalizer - это инструмент для анализа временных рядов и выявления аномалий с использованием метода межквартильного размаха (IQR). Проект разработан с использованием библиотеки Streamlit для создания интерактивного веб-приложения, которое позволяет пользователям загружать свои данные, настраивать параметры анализа и визуализировать результаты.
С функциональными возможностями приложения можно ознакомиться по этой ссылке, а тестовые наборы данных вы можете скачать из папки files_datasets
.
- Загрузка данных: Поддержка загрузки файлов Excel с данными.
- Выбор столбцов: Возможность выбора столбца с датой для оси X и числового столбца для анализа.
- Группировка данных: Поддержка выбора категориальных признаков для группировки данных.
- Настройка порогов: Возможность настройки нижнего и верхнего порогов для обнаружения аномалий.
- Визуализация: Построение графиков с использованием Plotly для визуализации аномалий.
- Скачивание результатов: Возможность скачивания результатов анализа в формате Excel.
- Поиск аномалий по каждому столбцу: Возможность поиска аномалий по каждому столбцу в датасете и отображение результатов в таблице.
Рекомендуется использовать conda
для управления зависимостями и создания изолированной среды. Следуйте этим шагам для настройки проекта:
-
Клонируйте репозиторий:
git clone https://github.com/yourusername/anomalizer.git
-
Перейдите в директорию проекта:
cd anomalizer
-
Создайте и активируйте новую среду:
conda create --name anomalizer-env python=3.8 conda activate anomalizer-env
-
Установите зависимости:
pip install -r requirements.txt
- Запустите приложение Streamlit:
streamlit run app5.py
- Откройте браузер и перейдите по адресу
http://localhost:8501
. - Следуйте инструкциям на экране для загрузки данных и настройки параметров анализа.
- Загрузите файл Excel с временными рядами.
- Выберите столбец с датой для оси X и числовой столбец для анализа.
- Выберите категориальные признаки для группировки данных.
- Настройте нижний и верхний пороги для обнаружения аномалий.
- Нажмите кнопку "Обнаружить аномалии".
- Просмотрите результаты и визуализацию.
- Загрузите файл Excel с данными, содержащими категориальные признаки.
- Выберите столбец с датой для оси X (если доступно) и числовой столбец для анализа.
- Нажмите кнопку "Обработать файл и найти аномалии по каждому столбцу".
- Просмотрите результаты.
Anomalizer - это универсальный инструмент, который помогает находить аномалии в любых данных, будь то финансовые, логистические или физические показатели, передаваемые с датчиков АСУ ТП. Выявление аномалий может помочь в:
- Снижении затрат: Обнаружение и устранение аномалий может предотвратить финансовые потери.
- Повышении эффективности: Идентификация проблемных областей позволяет оптимизировать процессы.
- Улучшении качества данных: Выявление и исправление аномалий улучшает точность и надежность данных.
- Принятии обоснованных решений: Анализ данных без аномалий позволяет принимать более точные и обоснованные решения.
Межквартильный размах (IQR) - это статистическая мера разброса данных, которая используется для выявления выбросов в наборе данных. Этот метод устойчив к экстремальным значениям и эффективен для несимметричных распределений.
-
Сортировка данных
- Упорядочиваем все значения по возрастанию.
-
Нахождение квартилей
- Q1 (первый квартиль): 25-й процентиль
- Q2 (медиана): 50-й процентиль
- Q3 (третий квартиль): 75-й процентиль
-
Расчет межквартильного размаха (IQR)
- IQR = Q3 - Q1
-
Определение границ выбросов
- Нижняя граница = Q1 - (множитель * IQR)
- Верхняя граница = Q3 + (множитель * IQR)
- Стандартный множитель: 1.5
-
Выявление выбросов
- Любые значения, выходящие за пределы этих границ, считаются выбросами.
Представим, что у нас есть следующие веса 20 яблок (в граммах), уже отсортированные по возрастанию: 82, 85, 88, 90, 92, 95, 98, 100, 103, 105, 108, 110, 112, 115, 118, 120, 123, 125, 128, 130
Теперь выполним расчет:
-
Разделим наши яблоки на 4 группы (по 5 яблок в каждой):
- Группа 1: 82, 85, 88, 90, 92
- Группа 2: 95, 98, 100, 103, 105
- Группа 3: 108, 110, 112, 115, 118
- Группа 4: 120, 123, 125, 128, 130
-
Определим значения Q1 и Q3:
- Q1 (граница между 1-й и 2-й группой) = 92 г
- Q3 (граница между 3-й и 4-й группой) = 120 г
-
Вычислим межквартильный размах:
- Межквартильный размах = Q3 - Q1 = 120 г - 92 г = 28 г
Таким образом, межквартильный размах для нашего набора яблок составляет 28 граммов. Это означает, что разница в весе между 25% и 75% наших яблок (то есть, "средние" 50% яблок) составляет 28 граммов. Этот показатель дает нам представление о разбросе весов большинства яблок, исключая самые легкие и самые тяжелые, которые могли бы исказить общую картину.
- Увеличение множителя делает метод менее чувствительным (меньше значений определяется как выбросы).
- Уменьшение множителя делает метод более чувствительным (больше значений определяется как выбросы).
Выбор множителя зависит от специфики данных и целей анализа. Стандартное значение 1.5 подходит для многих случаев, но может быть скорректировано в зависимости от требуемой строгости выявления аномалий.
Этот метод эффективен для первичного анализа данных и выявления потенциальных аномалий, но следует учитывать контекст данных при интерпретации результатов.
Этот проект лицензирован под лицензией GNU General Public License v3.0. Подробности см. в файле LICENSE.