Проект по предиктивной аналитике для источников бесперебойного питания (ИБП). Позволяет заранее выявлять оборудование с высоким риском отказа и планировать обслуживание.
Разработана система предсказания отказов ИБП за 7 дней до потенциального отказа на основе машинного обучения. Проект включает генерацию синтетических данных, исследовательский анализ, обучение модели и интерактивный дашборд для мониторинга.
- Предотвращение 80% отказов — модель находит 4 из 5 отказов до их возникновения
- Минимум ложных тревог — точность 98% (только 2% проверок будут напрасными)
- Оптимизация обслуживания — переход от планового к обслуживанию по состоянию
- Экономия ресурсов — отслеживание всего 3 ключевых параметров вместо десятков
| Характеристика | Значение |
|---|---|
| Период | 2024-2025 (2 года) |
| Частота | Почасовая |
| ИБП | 20 устройств |
| Всего записей | 350 880 |
| Отказы | 840 (0.24%) |
| Зона риска | ИБП | Доля |
|---|---|---|
| 🟢 Норма (<30%) | 11 | 55% |
| 🟡 Под угрозой (30-70%) | 4 | 20% |
| 🔴 Критично (>70%) | 5 | 25% |
| Признак | Корреляция с отказами |
|---|---|
| Время работы от батарей | -0.36 |
| Входное напряжение | -0.17 |
| Температура | +0.11 |
Главный вывод: падение времени работы от батарей — самый сильный сигнал приближающегося отказа.
| № | Признак | Важность |
|---|---|---|
| 1 | battery_runtime_minutes | 38% |
| 2 | voltage_std_3d (нестабильность) | 17% |
| 3 | temperature | 12% |
| 4 | load_percent | 10% |
| 5 | voltage_in | 8% |
Топ-5 признаков дают 85% предсказательной силы!
| Метрика | Значение | Интерпретация |
|---|---|---|
| Precision | 97.8% | Если модель сказала "отказ" — она права в 98% случаев |
| Recall | 78.6% | Модель находит 4 из 5 реальных отказов |
| F1-score | 87.1% | Отличный баланс точности и полноты |
| ROC-AUC | 99.98% | Модель почти идеально разделяет классы |
- Пропущено отказов: 72 (22%)
- Ложных тревог: 6 (менее 0.01%)
Гистограммы показывают, что в данных присутствуют две группы оборудования: новые ИБП с низкой температурой, низкой нагрузкой и большим временем работы от батарей, и старые ИБП с высокой температурой, высокой нагрузкой и малым временем работы. Это создает хороший контраст для обучения модели.
Ящики с усами по каждому ИБП подтверждают разделение на группы:
- IBP-09, IBP-02, IBP-14 работают в критическом температурном диапазоне
- IBP-01, IBP-04, IBP-08 — в нормальном Это визуализирует разнообразие состояний оборудования
На примере одного ИБП видна деградация параметров во времени. За 2 месяца температура выросла на 4.5°C, нагрузка на 20%, что характерно для стареющего оборудования. Такие тренды позволяют предсказывать отказы.
Корреляционный анализ показал:
- Главный предиктор отказа — время работы от батарей (-0.36). Когда батареи изнашиваются, это время сокращается.
- Температура и возраст сильно коррелируют с нагрузкой (0.9), что ожидаемо — старые ИБП под нагрузкой греются сильнее.
- Напряжение имеет слабую отрицательную связь с отказами — возможно, просадки напряжения предшествуют проблемам.
Интересно, что количество циклов заряда почти не влияет на отказы — важнее именно календарный возраст и условия эксплуатации.
Матрица ошибок показывает отличную специфичность 99.7% — модель почти никогда не ошибается на нормальных данных.
- 72 пропущенных отказа (FN) — это 0.07% от всех нормальных состояний, что приемлемо для бизнеса.
- 6 ложных срабатываний (FP) означают, что модель будет иногда беспокоить инженеров, но лучше проверить 6 лишних раз, чем пропустить реальный отказ.
Мы создали дополнительные признаки, отражающие динамику процессов:
- temp_trend_7d показывает, растет ли температура (признак деградации)
- voltage_std_3d отражает нестабильность питания
- load_change_7d фиксирует моменты, когда на ИБП вешают новое оборудование
- battery_health (отношение времени работы к возрасту) — интегральный показатель состояния
Эти признаки помогают модели улавливать не только текущее состояние, но и тренды.
Модель Random Forest показала, что самый важный фактор предсказания отказа ИБП — текущее время работы от батарей (важность 38%). Это логично: когда батареи деградируют, они теряют емкость, и время работы падает. На втором месте — нестабильность напряжения (17%): скачки напряжения создают нагрузку на электронику. Интересно, что возраст батарей сам по себе не так важен (6%), как их реальное состояние (runtime). Это подтверждает, что важнее не то, сколько устройству лет, а как его эксплуатировали. Созданные динамические признаки (тренд температуры, изменение нагрузки) добавили около 5% к общей важности, но уступают текущим показателям.
Для мониторинга парка ИБП достаточно отслеживать всего 3 параметра:
- Время работы от батарей (главный индикатор)
- Волатильность напряжения
- Температуру
Это позволит предсказывать 80% отказов за 1-2 недели и оптимизировать графики обслуживания.
Функционал:
- Общий мониторинг всех ИБП с цветовой индикацией
- Детальный просмотр параметров по каждому устройству
- Графики за последние 30 дней
- Рекомендации по обслуживанию
| Инструмент | Назначение |
|---|---|
| Python | Генерация данных, анализ, моделирование |
| pandas, numpy | Обработка данных |
| scikit-learn | Random Forest, метрики |
| matplotlib, seaborn | Визуализация |
| Jupyter Notebook | EDA |
| Streamlit | Интерактивный дашборд |
| Cursor AI | Ускорение разработки |
- Клонировать репозиторий
git clone https://github.com/Nimos95/ibp-predictive-maintenance.git cd ibp-predictive-maintenance - Установить зависимости
pip install -r requirements.txt
- Сгенерировать данные (опционально)
cd data python generate_data.py - Запустить Jupyter Notebook
jupyter notebook notebooks/01_ibp_analysis.ipynb
- Запустить Streamlit-дашборд
cd streamlit_app streamlit run app.py
- Подключение к реальным ИБП через SNMP
- Добавление сезонности и внешних факторов
- Увеличение Recall через SMOTE
- Telegram-бот для алертов
- XGBoost/CatBoost для сравнения





