Skip to content

Nimos95/ibp-predictive-maintenance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python scikit-learn Streamlit

🔋 Predictive Maintenance для парка ИБП

Проект по предиктивной аналитике для источников бесперебойного питания (ИБП). Позволяет заранее выявлять оборудование с высоким риском отказа и планировать обслуживание.

📋 О проекте

Разработана система предсказания отказов ИБП за 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

Главный вывод: падение времени работы от батарей — самый сильный сигнал приближающегося отказа.

Важность признаков (Random Forest)

Признак Важность
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), что ожидаемо — старые ИБП под нагрузкой греются сильнее.
  • Напряжение имеет слабую отрицательную связь с отказами — возможно, просадки напряжения предшествуют проблемам.

Интересно, что количество циклов заряда почти не влияет на отказы — важнее именно календарный возраст и условия эксплуатации.

Матрица ошибок

Confusion Matrix

Матрица ошибок показывает отличную специфичность 99.7% — модель почти никогда не ошибается на нормальных данных.

  • 72 пропущенных отказа (FN) — это 0.07% от всех нормальных состояний, что приемлемо для бизнеса.
  • 6 ложных срабатываний (FP) означают, что модель будет иногда беспокоить инженеров, но лучше проверить 6 лишних раз, чем пропустить реальный отказ.

Важность признаков

Feature Importance

Мы создали дополнительные признаки, отражающие динамику процессов:

  • temp_trend_7d показывает, растет ли температура (признак деградации)
  • voltage_std_3d отражает нестабильность питания
  • load_change_7d фиксирует моменты, когда на ИБП вешают новое оборудование
  • battery_health (отношение времени работы к возрасту) — интегральный показатель состояния

Эти признаки помогают модели улавливать не только текущее состояние, но и тренды.

Главный результат проекта

Модель Random Forest показала, что самый важный фактор предсказания отказа ИБП — текущее время работы от батарей (важность 38%). Это логично: когда батареи деградируют, они теряют емкость, и время работы падает. На втором месте — нестабильность напряжения (17%): скачки напряжения создают нагрузку на электронику. Интересно, что возраст батарей сам по себе не так важен (6%), как их реальное состояние (runtime). Это подтверждает, что важнее не то, сколько устройству лет, а как его эксплуатировали. Созданные динамические признаки (тренд температуры, изменение нагрузки) добавили около 5% к общей важности, но уступают текущим показателям.

Бизнес-вывод

Для мониторинга парка ИБП достаточно отслеживать всего 3 параметра:

  • Время работы от батарей (главный индикатор)
  • Волатильность напряжения
  • Температуру

Это позволит предсказывать 80% отказов за 1-2 недели и оптимизировать графики обслуживания.

🖥 Интерактивный дашборд (Streamlit)

Дашборд

Функционал:

  • Общий мониторинг всех ИБП с цветовой индикацией
  • Детальный просмотр параметров по каждому устройству
  • Графики за последние 30 дней
  • Рекомендации по обслуживанию

🛠 Технологии

Инструмент Назначение
Python Генерация данных, анализ, моделирование
pandas, numpy Обработка данных
scikit-learn Random Forest, метрики
matplotlib, seaborn Визуализация
Jupyter Notebook EDA
Streamlit Интерактивный дашборд
Cursor AI Ускорение разработки

🚀 Как запустить

  1. Клонировать репозиторий
    git clone https://github.com/Nimos95/ibp-predictive-maintenance.git
    cd ibp-predictive-maintenance
  2. Установить зависимости
    pip install -r requirements.txt
  3. Сгенерировать данные (опционально)
    cd data
    python generate_data.py
  4. Запустить Jupyter Notebook
    jupyter notebook notebooks/01_ibp_analysis.ipynb
  5. Запустить Streamlit-дашборд
    cd streamlit_app
    streamlit run app.py

🔮 Возможные улучшения

  • Подключение к реальным ИБП через SNMP
  • Добавление сезонности и внешних факторов
  • Увеличение Recall через SMOTE
  • Telegram-бот для алертов
  • XGBoost/CatBoost для сравнения

About

Система предиктивного обслуживания для источников бесперебойного питания (ИБП) с ML-моделью и дашбордом на Streamlit

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors