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

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
Разработка AI-системы прогнозирования отказов оборудования
Сложный
~2-4 недели
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1348
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1247
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    949
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1183
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    642
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    921

Неожиданный отказ компрессора в три часа ночи — внеплановый простой, потери миллионов, срыв поставок. Традиционный пороговый мониторинг фиксирует отклонение уже после выхода за границы, когда ремонт неизбежен. Система прогнозирования отказов (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%. Экономия для заказчика составила 1,2 млн рублей в первый год за счёт сокращения внеплановых простоев. В среднем по нашим проектам экономия составляет около 1,5 млн рублей в год на один критический актив.

Как выбрать порог принятия решений?

Учитываем стоимость ошибок: пропуск отказа — 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% затрат на ремонт). Закажите консультацию, чтобы узнать, как наш подход работает на вашем оборудовании.

Детекция аномалий: автоэнкодеры, Isolation Forest, PyOD

Мы сталкиваемся с этой болью постоянно: мониторинг сервера показывает CPU 85%, память 91% — это норма в час пик или начало атаки? Классификатор здесь не поможет: аномалии по определению редки, разнообразны и заранее не размечены. Supervised learning требует примеров аномалий в обучающей выборке — а значит, не работает для того, о чём вы ещё не знаете. Наш опыт показывает: без unsupervised-подхода детекция превращается в гадание.

Почему детекция аномалий требует unsupervised подхода?

Главная проблема — отсутствие разметки и дисбаланс классов в экстремальной форме. Фрод-транзакции составляют 0.01–0.1% от общего объёма. Производственный дефект — 0.5–3%. При таком соотношении даже наивный классификатор «всё нормально» даст accuracy 99.9% и precision/recall для аномального класса, близкие к нулю. Supervised-модели здесь бессильны.

Вторая проблема — «нормальность» всегда контекстна. Нормально ли, что пользователь логинится в 3 часа ночи? Зависит от его истории и временной зоны. Нормально ли вибрация подшипника 2.3 мм/с? Зависит от режима работы станка и его возраста. Поэтому мы встраиваем контекст в модель через feature engineering и временные окна.

Третья — оценка качества. Нет стандартного test set, AUC-ROC считается только если есть хотя бы немного размеченных примеров. На полностью неразмеченных данных — только domain expert validation и косвенные метрики.

Как отличить аномалию от шума в реальном времени?

Ответ — адаптивные пороги и мониторинг статистик модели. В разделе кейса покажем, как это работает.

Методы и инструменты

Метод Тип данных Скорость обучения Типичное применение
Isolation Forest Табличные, категориальные Высокая Baseline для первых гипотез
Autoencoder Изображения, временные ряды, логи Средняя Неструктурированные данные
LSTM-AE Многомерные временные ряды Низкая Промышленная телеметрия
PyOD (ансамбль) Табличные Высокая Быстрое сравнение 40+ методов

Isolation Forest — стандартный baseline для табличных данных. Идея: аномалии изолируются быстрее при случайном разбиении пространства признаков. Работает хорошо при contamination 0.01–0.1, устойчив к масштабу признаков, не требует нормализации. Реализация в sklearn.ensemble.IsolationForest.

Типичная ошибка: ставить contamination='auto' без понимания данных. Auto-режим предполагает порог -0.5, что не всегда соответствует реальной доле аномалий. Лучше: оцените ожидаемый процент аномалий через domain knowledge и задайте явно. Мы гарантируем подбор contamination под ваш кейс.

PyOD (Python Outlier Detection) — библиотека с 40+ алгоритмами под единым API. Включает: OCSVM, LOF, COPOD, ECOD, DeepSVDD, AutoEncoder. Удобно для быстрого сравнения методов на одних данных.

Автоэнкодеры — основной метод для неструктурированных данных (временные ряды, изображения, логи). Идея: обучаем сеть восстанавливать нормальные данные, аномалии дают высокую ошибку реконструкции. Порог аномальности — 95-й или 99-й процентиль ошибки на validation set из нормальных данных.

Практическая проблема автоэнкодеров: переобучение на «нормальных» паттернах, которые всё равно встречаются редко. Если в train set есть хоть несколько аномалий, модель может научиться их хорошо восстанавливать. Решение: тщательная очистка training data или использование Variational Autoencoder (VAE), который лучше обобщает.

LSTMAE для временных рядов — LSTM-автоэнкодер захватывает временные зависимости лучше, чем обычный AE. Особенно эффективен для мультивариантных временных рядов (10+ сенсоров одновременно). Реализация через PyTorch, обучение с MSELoss на скользящих окнах.

Детально: детекция аномалий в промышленных временных рядах

Задача: вибрационные датчики на 12 насосах химического предприятия, 6 сенсоров на насос, частота 100 Гц. Нужно предупредить о надвигающейся поломке за 4–24 часа.

Архитектура решения:

Сырые данные → feature extraction (RMS, кэртозис, пиковый фактор, FFT-амплитуды на резонансных частотах) → нормализация по скользящему окну 24ч → LSTMAE → reconstruction error → пороговая логика + алертинг.

Размер окна LSTM: 60 секунд (6000 точек на 100 Гц). Слишком маленькое окно — не захватывает медленные паттерны. Слишком большое — теряет чувствительность к быстрым изменениям.

Порог аномальности: не фиксированный, а адаптивный. threshold = mean(errors_last_7d) + 3 * std(errors_last_7d). При дрейфе нормального состояния (плановый износ) порог адаптируется, избегая false positives.

Результат на 6-месячном пилоте: обнаружено 4 из 5 реальных предотказных состояний (recall 0.8), 2 ложных тревоги за 6 месяцев (precision 0.67). До внедрения: 3 незапланированных остановки по $40k каждая. Экономия после внедрения — $120k за полгода (отчёт о пилоте на объекте клиента).

Фрод-детекция: специфика финансовых данных

Финансовые транзакции имеют несколько особенностей, усложняющих детекцию:

  • Concept drift: паттерны фрода меняются быстрее нормального поведения. Модель, обученная полгода назад, устаревает.
  • Adversarial adaptation: продвинутые мошенники адаптируются к обнаружению — делают транзакции похожими на нормальные.
  • Временная зависимость: серия нормальных транзакций, а потом один необычный перевод — это аномалия последовательности, а не одиночной точки.

Практический стек для фрод-детекции: LightGBM с SMOTE-oversampling для supervised части (по известным фрод-кейсам) + Isolation Forest для unsupervised (новые паттерны). Оба сигнала объединяются в ансамбль, финальное решение — через пороги, настроенные на приемлемый FPR (0.1–1% от транзакций на ручную проверку).

Как оценить качество без разметки?

Когда ground truth нет, для оценки используем:

  • Synthetic anomaly injection: добавляем искусственные аномалии (spike, level shift, point outlier) и смотрим, обнаруживает ли их модель
  • Expert validation: случайная выборка топ-K аномалий от модели → review эксперта → precision
  • Business metric: снизилось ли количество пропущенных инцидентов / ложных тревог после внедрения
Техническая деталь: настройка адаптивного порога

Порог вычисляется как mean(errors) + k * std(errors) на скользящем окне 7 дней. Коэффициент k подбирается на validation set с синтетическими аномалиями для достижения FPR < 0.1%. При дрейфе признаков окно автоматически сдвигается.

Процесс работы

  1. Интервью с доменными экспертами — понимаем, что такое «нормальность» и какие инциденты уже были.
  2. EDA и подготовка данных — очистка, создание признаков, временные окна.
  3. Baseline (Isolation Forest) — быстрая валидация на известных инцидентах.
  4. Выбор и кастомизация модели — Autoencoder / LSTM-AE / ансамбль.
  5. Обучение, валидация с синтетическими аномалиями.
  6. Развёртывание в production — пайплайн на Kafka + Flink / Airflow, алертинг в Telegram/Slack, мониторинг дрифта.
  7. Post-deployment сопровождение — мониторинг метрик модели, обновление порогов.

Что входит в работу

  • Аудит текущих данных и процессов
  • Разработка и обучение моделей (Isolation Forest / Autoencoder / LSTM-AE / ансамбль)
  • Настройка адаптивных порогов и алертинга
  • Панель мониторинга аномалий (Grafana / Streamlit)
  • Документация model card и pipeline
  • Обучение вашей команды (2–3 сессии)
  • Гарантийная поддержка 3 месяца

Сроки: baseline-система с одним методом — 2–4 недели. Production-система с адаптивными порогами, алертингом и мониторингом — 2–5 месяцев. Стоимость рассчитывается индивидуально под ваш кейс.

Наша команда имеет 8+ лет опыта в промышленной аналитике и 15+ успешных проектов по детекции аномалий в телеметрии, финансах и IT-мониторинге. Получите консультацию — расскажем, как решить вашу задачу.