У авіації «ламати речі» — не варіант.
Якщо сервер зависає, ви його перезавантажуєте. Якщо реактивний двигун виходить з ладу в польоті, наслідки катастрофічні. Ось чому авіаційна промисловість переходить від профілактичного обслуговування (заміна деталей за графіком, незалежно від того, потрібно це чи ні) до прогнозованого обслуговування (PdM) (заміна деталей точно перед їх виходом з ладу).
Для дата-сайєнтистів це найскладніша задача регресії часових рядів. Мета — розрахувати залишковий термін експлуатації (RUL) двигуна на основі даних датчиків (температура, тиск, вібрація).
Традиційно це вимагало складних фізичних моделей або архітектур глибинного навчання з ручним налаштуванням (LSTM). Але нещодавно автоматизоване машинне навчання (AutoML) досягло рівня, коли воно може перевершити ручне налаштування.
У цьому посібнику, заснованому на аналізі з використанням набору даних NASA C-MAPSS, ми побудуємо конвеєр для прогнозування відмов двигуна за допомогою двох важливих інструментів з відкритим кодом: AWS AutoGluon та H2O.ai.
Ми не просто класифікуємо зображення; ми працюємо з багатовимірними даними часових рядів. Конвеєр вимагає перетворення необроблених журналів датчиків у цільову регресію (RUL).
Ми використовуємо відомий набір даних NASA Commercial Modular Aero-Propulsion System Simulation (C-MAPSS). Він містить змодельовані дані про роботу до відмови.
Набір даних не дає нам RUL явно; він дає поточний цикл. Ми повинні розрахувати ціль.
Логіка: RUL = Максимальнийциклдвигуна - Поточнийцикл
import pandas as pd # Load dataset (Simulated example structure) # Columns: ['unit_number', 'time_in_cycles', 'sensor_1', ... 'sensor_21'] df = pd.read_csv('train_FD001.txt', sep=" ", header=None) # 1. Calculate the maximum life of each engine unit max_life = df.groupby('unit_number')['time_in_cycles'].max().reset_index() max_life.columns = ['unit_number', 'max_life'] # 2. Merge back to original dataframe df = df.merge(max_life, on='unit_number', how='left') # 3. Calculate RUL (The Target Variable) df['RUL'] = df['max_life'] - df['time_in_cycles'] # Drop columns we don't need for training (like max_life) df = df.drop(columns=['max_life']) print(df[['unit_number', 'time_in_cycles', 'RUL']].head())
У прогнозованому обслуговуванні проста «точність» не працює. Нам потрібно виміряти, наскільки далеко наш прогноз.
Ми покладаємося на RMSE (середньоквадратична помилка).
import numpy as np def calculate_rmse(y_true, y_pred): """ y_true: The actual Remaining Useful Life y_pred: The model's prediction """ mse = np.mean((y_true - y_pred)**2) return np.sqrt(mse)
Примітка: аналіз також підкреслює RMSLE (логарифмічна помилка). Це важливо, оскільки недооцінка терміну служби (прогнозування відмови раніше) є безпечною, але переоцінка (прогнозування відмови пізніше, ніж насправді) небезпечна. RMSLE краще обробляє відносні помилки в різних масштабах.
Ми протестували два фреймворки, щоб побачити, який краще справляється зі складними, зашумленими даними датчиків без детального ручного налаштування.
AutoGluon (розроблений AWS) використовує стратегію стекінгу та ансамблювання кількох моделей (нейронні мережі, LightGBM, CatBoost) автоматично.
Код:
from autogluon.tabular import TabularPredictor # AutoGluon handles feature engineering automatically # 'RUL' is our target label calculated in Phase 1 predictor = TabularPredictor(label='RUL', eval_metric='root_mean_squared_error').fit( train_data=df_train, time_limit=600, # Train for 10 minutes presets='best_quality' ) # Inference y_pred = predictor.predict(df_test) results = predictor.evaluate(df_test) print(f"AutoGluon RMSE: {results['root_mean_squared_error']}")
H2O є ветераном у цій сфері, відомим своїми масштабованими можливостями розподілених обчислень.
Код:
import h2o from h2o.automl import H2OAutoML h2o.init() # Convert pandas df to H2O Frame hf_train = h2o.H2OFrame(df_train) hf_test = h2o.H2OFrame(df_test) # Train aml = H2OAutoML(max_models=20, seed=1) aml.train(y='RUL', training_frame=hf_train) # Inference preds = aml.predict(hf_test) perf = aml.leader.model_performance(hf_test) print(f"H2O RMSE: {perf.rmse()}")
Аналіз виявив величезну різницю в продуктивності при застосуванні до цього конкретного набору даних датчиків.
| Бібліотека | Метрика | Ціль: RUL | Результат (нижче краще) | |----|----|----|----| | AutoGluon | RMSE | RUL | 14.07 | | H2O | RMSE | RUL | 44.85 |
**Аналіз: \ AutoGluon значно перевершив H2O (14.07 проти 44.85). У контексті реактивних двигунів похибка в 14 циклів прийнятна для планування технічного обслуговування. Похибка в 44 цикли робить модель непридатною.
Чому переміг AutoGluon?
Для промислових додатків, що включають складні багатовимірні дані, AutoML більше не просто інструмент прототипування — це виробнича можливість.
Перейшовши від ручного вибору моделі до автоматизованого ансамблевого підходу, як-от AutoGluon, розробники можуть скоротити час розробки з тижнів до годин, досягаючи кращої точності.
Ключовий висновок для розробників: при створенні промислових IoT-додатків зосередьте свої зусилля на фазі 1 (інженерія даних) — очищенні журналів датчиків і розрахунку правильного RUL. Дозвольте AutoML впоратися з вибором моделі.
\


