Головна▸Статті▸Anomaly Detection та Predictive Maintenance

Predictive Maintenance

Побудова систем предиктивного обслуговування - аналіз сенсорних даних, survival analysis, прогнозування залишкового ресурсу та industrial deployment.

mysimulator teamОновлено 2026-01≈ 5 хв читання▶ Open the simulation

Predictive maintenance (PdM) використовує сенсорні дані та ML для прогнозування коли обладнання вийде з ладу, дозволяючи проводити обслуговування до відмови. На відміну від reactive maintenance (ремонт після поломки) або preventive maintenance (ремонт за графіком), predictive maintenance оптимізує баланс між витратами на обслуговування та витратами від простою.

Де використовується

Predictive maintenance забезпечує industrial операції:

Бізнес-вплив: Скорочення незапланованих простоїв на 30-50%, витрат на обслуговування на 10-40%.

Типи задач у Predictive Maintenance

Задача Питання Output
Failure prediction Чи вийде з ладу за N днів? Binary classification
Time-to-failure Коли вийде з ладу? Regression або survival
Remaining Useful Life (RUL) Скільки залишилось ресурсу? Regression
Anomaly detection Чи поводиться анормально? Anomaly score
Failure mode classification Який тип відмови? Multi-class

Типові дані

Аспект Типові значення
Сенсорів на машину 10 до 100+
Частота семплювання 1 Hz до 100 kHz
Машин під моніторингом 10 до 10,000+
Частота відмов 0.1% до 5% на рік
Історія 1 до 10+ років

Типи даних: - Сенсорні показники: Температура, вібрація, тиск, струм, швидкість - Операційні дані: Навантаження, цикли, години роботи - Журнали обслуговування: Історія ремонтів, заміни запчастин - Environmental: Температура оточення, вологість - Метадані: Вік машини, модель, локація

Виклики даних: - Class imbalance (відмови рідкісні) - Censored дані (машини ще працюють) - Різні operating conditions - Sensor noise та drift - Missing дані та gaps

Що робимо на практиці

  1. Зрозуміти asset - Failure modes, criticality, maintenance history
  2. Зібрати та інтегрувати дані - Sensors, logs, work orders
  3. Визначити target - Failure within window, RUL, anomaly
  4. Engineer фічі - Rolling statistics, frequency features, degradation
  5. Обробити imbalance - Sampling, weighting, або survival approach
  6. Навчити моделі - Classification, regression, або survival models
  7. Встановити alert thresholds - Balance false alarms vs missed failures
  8. Валідація з SMEs - Domain experts review predictions
  9. Deploy з integration - Підключення до maintenance systems
  10. Monitor та iterate - Track predictions vs outcomes

Baseline

import pandas as pd
from sklearn.ensemble import RandomForestClassifier

# Feature engineering: rolling statistics
def create_features(sensor_df, window='7D'):
    features = pd.DataFrame()
    for col in sensor_columns:
        rolling = sensor_df[col].rolling(window)
        features[f'{col}_mean'] = rolling.mean()
        features[f'{col}_std'] = rolling.std()
        features[f'{col}_max'] = rolling.max()
        features[f'{col}_trend'] = rolling.apply(
            lambda x: np.polyfit(range(len(x)), x, 1)[0]
        )
    return features

# Create labels: failure within 30 days
def create_labels(df, failure_dates, horizon_days=30):
    labels = []
    for date in df['timestamp']:
        next_failure = failure_dates[failure_dates > date].min()
        days_to_failure = (next_failure - date).days
        labels.append(1 if days_to_failure <= horizon_days else 0)
    return labels

# Train model
model = RandomForestClassifier(class_weight='balanced')
model.fit(X, y)

Підходи по типах задач

Binary classification (failure in N days):

from sklearn.ensemble import GradientBoostingClassifier
model = GradientBoostingClassifier()
model.fit(X_train, y_train_binary)
prob_failure = model.predict_proba(X_test)[:, 1]

Survival analysis (з censoring):

from lifelines import CoxPHFitter
cph = CoxPHFitter()
cph.fit(df, duration_col='time_to_event', event_col='failed')
survival_prob = cph.predict_survival_function(X_test)

Feature Engineering патерни

Time-domain features: - Rolling mean, std, max, min - Rate of change, trend slope - Peak counts, threshold crossings

Frequency-domain features (для вібрації):

from scipy.fft import fft
def frequency_features(signal, sampling_rate):
    freqs = fft(signal)
    # Peak frequency, spectral centroid, band energy
    return features

Degradation indicators: - Deviation from baseline - Health index (composite metric) - Anomaly scores over time

Метрики оцінки

Метрика Опис Застосування
Precision Correct failure predictions Cost of false alarms
Recall Failures caught Cost of missed failures
AUC-PR Precision-recall curve Imbalanced data
Lead time How early failures predicted Maintenance planning
MAE/RMSE RUL prediction error Regression tasks

Cost-sensitive evaluation:

cost_false_alarm = 100  # Unnecessary inspection
cost_missed_failure = 10000  # Unplanned downtime

# Find optimal threshold
for threshold in np.arange(0.1, 0.9, 0.01):
    predictions = (probabilities > threshold).astype(int)
    fp = ((predictions == 1) & (y_true == 0)).sum()
    fn = ((predictions == 0) & (y_true == 1)).sum()
    total_cost = fp * cost_false_alarm + fn * cost_missed_failure

Типові проблеми

Чекліст продакшену

Перед деплоєм: - [ ] Model validated на time-based holdout - [ ] Alert thresholds встановлені по cost analysis - [ ] Integration з maintenance system спроєктовано - [ ] Domain expert validation predictions - [ ] Latency requirements met

Після деплою: - [ ] Prediction accuracy tracked - [ ] False alarm rate моніториться - [ ] Lead time distribution analyzed - [ ] Feedback loop from actual failures - [ ] Periodic retraining scheduled

Інструменти

Категорія Інструменти
Data collection IoT platforms, historians, SCADA
Feature engineering tsfresh, Featuretools, pandas
ML models scikit-learn, XGBoost, LightGBM
Survival analysis lifelines, scikit-survival
Deep learning TensorFlow, PyTorch
Streaming Apache Kafka, Spark Streaming

Приклад міні-кейсу

Сценарій: Оператор вітрової ферми потребує прогнозування відмов gearbox на 100 турбінах.

Дані: - 50 сенсорів на турбіну (вібрація, температура, потужність) - 5 років історії - 45 історичних відмов gearbox

Результати:

Метрика Значення
Precision 0.72
Recall 0.85
Average lead time 18 днів
False alarm rate 3 на турбіну/рік

Бізнес-вплив: - Попереджено 8 з 10 відмов (80% catch rate) - Скорочення незапланованих простоїв на 65% - Економія на обслуговуванні: $2.1M/рік - ROI: 4.2x в перший рік

Пов'язані сторінки

Додаткове читання

Спробуйте наживо

Дослідіть пов'язану модель на практиці: відкрийте Predictive Maintenance Lab — A Single-Sensor Anomaly Case Study і змінюйте параметри під час роботи. Усе лишається у вашому браузері.

▶ Відкрити симуляцію Predictive Maintenance Lab — A Single-Sensor Anomaly Case Study

Що ви знайшли?

Додати кроки відтворення (опційно)