Розробка AI-системи прогнозування відмов обладнання

Несподівана відмова обладнання в найневідповідніший момент — це позапланові простої та серйозні фінансові втрати. Ми розробляємо AI-системи прогнозування відмов, які аналізують дані сенсорів і завчасно попереджають про проблеми. Наша команда реалізує проєкт під ключ — від збору та розмітки даних до інтеграції з вашими системами, забезпечуючи точні сповіщення та подальшу підтримку.
Часті запитання

Неочікувана відмова компресора о третій ночі — позаплановий простій, втрати мільйонів, зрив поставок. Традиційний пороговий моніторинг фіксує відхилення вже після виходу за межі, коли ремонт неминучий. Система прогнозування відмов (Failure Prediction) будує часову модель деградації та попереджає за 7–30 днів, вловлюючи приховані патерни в часових рядах сенсорів та обчислюючи залишковий ресурс (RUL).

Ми розробляємо такі системи під ключ: від збору та розмітки даних до інтеграції з CMMS та автоматичного призначення ТО. В основі — деградаційні моделі, оцінка RUL та машинне навчання з калібруванням ймовірностей, щоб алерти були точними, а не шумом.

Які проблеми вирішуємо

Дисбаланс класів. Типове співвідношення: 1 відмова на 50–200 днів нормальної роботи. Без спеціальних методів модель передбачатиме «все добре», ігноруючи рідкісні події. Ми використовуємо зважені функції втрат (scale_pos_weight у XGBoost), синтетичну аугментацію (SMOTE-Tomek) та cost-sensitive learning з матрицею, де пропуск відмови в 20 разів дорожчий за хибну тривогу.

Вибір горизонту прогнозу. Занадто короткий горизонт (1–3 дні) не дає часу на реакцію; занадто довгий (60+ днів) — висока невизначеність. Ми підбираємо горизонт за ROC-аналізом на історичних даних: зазвичай 7–30 днів — оптимум для промислового обладнання.

Калібрування ймовірностей. XGBoost та нейромережі часто видають некалібровані ймовірності. Модель може говорити «ймовірність відмови 70%», а на практиці відмова трапляється лише в 30% таких випадків. Ми застосовуємо Isotonic Regression (Platt Scaling рідше) на відкладеній вибірці — це знижує false alarm rate на 30–50%.

Як ми будуємо систему Failure Prediction

Деградаційна модель та RUL Estimator

Моделюємо процес погіршення стану через регресію на days_to_failure або аналіз виживаності. Ключовий прийом — навчати модель лише на вікні 90 днів до відмови, виключаючи тривалі періоди нормальної роботи.

import pandas as pd
import numpy as np
from sklearn.model_selection import TimeSeriesSplit
from xgboost import XGBRegressor

def train_rul_model(features_df, target_col='days_to_failure'):
    train_data = features_df[features_df[target_col] <= 90].dropna(subset=[target_col])
    X = train_data.drop(columns=[target_col, 'label', 'timestamp', 'asset_id'])
    y = np.log1p(train_data[target_col])
    tscv = TimeSeriesSplit(n_splits=5)
    model = XGBRegressor(n_estimators=300, learning_rate=0.05, max_depth=6, subsample=0.8)
    model.fit(X, y)
    return model

Для врахування цензурованих даних (актив ще працює) використовуємо Weibull AFT з бібліотеки lifelines — він коректно обробляє такі випадки та дає інтервальні прогнози.

Багатозадачна LSTM з attention

Зазначимо: коли накопичено достатньо історії (10+ циклів на актив), переходимо до LSTM. Одна модель одночасно передбачає RUL, ймовірність відмови на горизонтах 7/14/30 днів та стадію деградації (норма, початок, прогресуюча, критична). Для LSTM прогнозування відмов використовуємо архітектуру з механізмом уваги.

import torch.nn as nn

class FailurePredictionLSTM(nn.Module):
    def __init__(self, input_dim, hidden_dim=128, num_layers=2):
        super().__init__()
        self.lstm = nn.LSTM(input_dim, hidden_dim, num_layers, batch_first=True, dropout=0.2)
        self.attention = nn.MultiheadAttention(hidden_dim, num_heads=4, batch_first=True)
        self.rul_head = nn.Sequential(nn.Linear(hidden_dim, 64), nn.ReLU(), nn.Linear(64, 1))
        self.failure_head = nn.Sequential(nn.Linear(hidden_dim, 64), nn.ReLU(), nn.Linear(64, 3), nn.Sigmoid())
        self.stage_head = nn.Linear(hidden_dim, 4)

    def forward(self, x):
        lstm_out, _ = self.lstm(x)
        attn_out, _ = self.attention(lstm_out, lstm_out, lstm_out)
        pooled = attn_out.mean(dim=1)
        return {'rul': self.rul_head(pooled), 'failure_prob': self.failure_head(pooled), 'stage': self.stage_head(pooled)}

XGBoost vs LSTM: на практиці XGBoost з часовими вікнами дає Precision@7 = 0.75–0.85, LSTM — 0.80–0.90, але потребує в 3–5 разів більше даних. XGBoost швидше в 5–7 разів у навчанні, що робить його кращим для старту. LSTM впроваджуємо на другому етапі, коли накопичено достатній обсяг історії.

Чому калібрування ймовірностей критичне?

Нескориговані ймовірності ведуть до лавини хибних спрацьовувань або пропущених відмов. Нижче — підсумкове калібрування через Isotonic Regression:

from sklearn.isotonic import IsotonicRegression

def calibrate_probabilities(raw_probs, true_labels):
    calibrator = IsotonicRegression(out_of_bounds='clip')
    calibrator.fit(raw_probs, true_labels)
    return calibrator

У реальному проекті для компресорної станції калібрування знизило false alarm rate з 12 до 4 подій на актив на місяць, а coverage (частка передбачених відмов) зросла з 60% до 87%. Це принесло замовнику значну економію за рахунок скорочення позапланових простоїв. В середньому за нашими проектами економія є значною на один критичний актив.

Як обрати поріг прийняття рішень?

Враховуємо вартість помилок: пропуск відмови — 100 умовних одиниць, зайва перевірка — 5. Поріг зміщується вниз, роблячи модель більш чутливою. Оптимальний поріг знаходимо на валідації за мінімальною сумарною вартістю.

def find_optimal_threshold(probs, labels, cost_fn=100, cost_fp=5):
    thresholds = np.arange(0.05, 0.95, 0.01)
    best = 0.5
    min_cost = float('inf')
    for t in thresholds:
        preds = (probs >= t).astype(int)
        total = np.sum((preds == 0) & (labels == 1)) * cost_fn + np.sum((preds == 1) & (labels == 0)) * cost_fp
        if total < min_cost:
            min_cost = total
            best = t
    return best

Процес впровадження

  1. Аналіз даних: розмічаємо відмови, будуємо часові вікна — датасет з мітками та ознаками.
  2. Baseline: XGBoost Failure Classifier + базовий RUL — точність 70–80%.
  3. Покращення: LSTM, калібрування, оптимізація порогів — точність 85–95%.
  4. Інтеграція: Webhook у CMMS, дашборд алертів — автоматичний розклад ТО.
  5. Моніторинг: Drift detection, перенавчання — система працює стабільно.
Етап Що робимо Результат
1. Аналіз даних Розмічаємо історію відмов, будуємо часові вікна Датасет з мітками та ознаками
2. Baseline XGBoost Failure Classifier + базовий RUL Точність 70–80%
3. Покращення LSTM, калібрування, оптимізація порогів Точність 85–95%
4. Інтеграція Webhook у CMMS, дашборд алертів Автоматичний розклад ТО
5. Моніторинг Drift detection, перенавчання Система працює стабільно

Порівняння методів прогнозування

Параметр XGBoost LSTM Survival Analysis
Точність (Precision@7) 0.75–0.85 0.80–0.90 0.65–0.75
Вимоги до даних 3–6 циклів 10+ циклів 20+ циклів
Швидкість навчання 5–15 хв 1–4 год 10–30 хв
Стійкість до шуму Середня Висока Низька
Типові помилки при впровадженні
  • Використовувати всю історію 1:1 — погіршує якість. Потрібно обмежувати вікно до відмови.
  • Не враховувати цензурування — Survival Analysis замість регресії.
  • Ставити єдиний поріг для всього парку — налаштовуємо під критичність кожного активу.
  • Забувати про калібрування — веде до недовіри операторів.

Строки та що ви отримаєте

  • Failure Classifier + базовий RUL + алерти — 4–5 тижнів.
  • LSTM, аналіз виживаності, повна інтеграція з розкладом ТО — 3–4 місяці.

Зазначимо: що входить: навчена модель, API для інтеграції, веб-дашборд з алертами та метриками, документація, навчання команди, підтримка 3 місяці після запуску.

Наш досвід: 5+ років у промисловому ML, 20+ проектів з predictive maintenance, інженери з сертифікатами з MLflow та Kubernetes. Ми гарантуємо якість — кожен етап закривається чек-листом.

Зв'яжіться з нами для попереднього аналізу ваших даних — підберемо архітектуру та оцінимо потенційну економію (до 30% витрат на ремонт). Замовте консультацію, щоб дізнатися, як наш підхід працює на вашому обладнанні.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142