W lotnictwie „psucie rzeczy" nie wchodzi w grę.
Jeśli serwer się zawiesza, restartujemy go. Jeśli silnik odrzutowy odmówi posłuszeństwa w trakcie lotu, konsekwencje są katastrofalne. Dlatego przemysł lotniczy przechodzi od Konserwacji Prewencyjnej (wymiany części zgodnie z harmonogramem, niezależnie od tego, czy jest to potrzebne) do Konserwacji Predykcyjnej (PdM) (wymiany części dokładnie zanim ulegną awarii).
Dla Data Scientists jest to ultimatywny problem regresji szeregów czasowych. Celem jest obliczenie Pozostałego Okresu Użytkowania (RUL) silnika na podstawie danych z czujników (temperatura, ciśnienie, wibracje).
Tradycyjnie wymagało to złożonych modeli fizycznych lub ręcznie dostrajanych architektur Deep Learning (LSTM). Jednak ostatnio Zautomatyzowane Uczenie Maszynowe (AutoML) dojrzało do punktu, w którym może przewyższać ręczne dostrajanie.
W tym przewodniku, opartym na analizie z wykorzystaniem zbioru danych NASA C-MAPSS, zbudujemy potok do przewidywania awarii silnika za pomocą dwóch gigantów open-source: AWS AutoGluon i H2O.ai.
Nie klasyfikujemy tu tylko obrazów; mamy do czynienia z wielowymiarowymi danymi szeregów czasowych. Potok wymaga przekształcenia surowych logów z czujników w cel regresji (RUL).
Używamy słynnego zbioru danych NASA Commercial Modular Aero-Propulsion System Simulation (C-MAPSS). Zawiera on symulowane dane działania do awarii.
Zbiór danych nie podaje nam bezpośrednio RUL; podaje nam aktualny cykl. Musimy obliczyć cel.
Logika: RUL = MaksymalnyCyklSilnika - AktualnyCykl
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())
W konserwacji predykcyjnej prosta „Dokładność" nie działa. Musimy zmierzyć, jak daleko jest nasza predykcja.
Polegamy na RMSE (Root Mean Square Error - Pierwiastek Błędu Średniokwadratowego).
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)
Uwaga: Analiza podkreśla również RMSLE (Błąd Logarytmiczny). Jest to kluczowe, ponieważ niedoszacowanie okresu użytkowania (przewidywanie wcześniejszej awarii) jest bezpieczne, ale przeszacowanie (przewidywanie późniejszej awarii niż w rzeczywistości) jest niebezpieczne. RMSLE lepiej radzi sobie z błędami względnymi w różnych skalach.
Przetestowaliśmy dwa frameworki, aby sprawdzić, który lepiej poradzi sobie ze złożonymi, zaszumionymi danymi z czujników bez szerokiego ręcznego dostrajania.
AutoGluon (opracowany przez AWS) wykorzystuje strategię łączenia i zespołów wielu modeli (Sieci Neuronowe, LightGBM, CatBoost) automatycznie.
Kod:
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 to weteran w tej dziedzinie, znany ze swoich skalowalnych możliwości obliczeniowych rozproszonych.
Kod:
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()}")
Analiza ujawniła ogromną różnicę w wydajności zastosowanej do tego konkretnego zbioru danych z czujników.
| Biblioteka | Metryka | Cel: RUL | Wynik (Niższy jest lepszy) | |----|----|----|----| | AutoGluon | RMSE | RUL | 14.07 | | H2O | RMSE | RUL | 44.85 |
**Analiza: \ AutoGluon znacząco przewyższył H2O (14.07 vs 44.85). W kontekście silników odrzutowych margines błędu 14 cykli jest akceptowalny do planowania konserwacji. Margines błędu 44 cykli czyni model bezużytecznym.
Dlaczego wygrał AutoGluon?
W przypadku zastosowań przemysłowych obejmujących złożone dane wielowymiarowe, AutoML nie jest już tylko narzędziem do prototypowania—to możliwość produkcyjna.
Przechodząc od ręcznego wyboru modeli do zautomatyzowanego podejścia zespołowego takiego jak AutoGluon, programiści mogą skrócić czas inżynieryjny z tygodni do godzin, osiągając jednocześnie lepszą dokładność.
Kluczowy Wniosek dla Programistów: Budując aplikacje Industrial IoT, skup swoje wysiłki na Fazie 1 (Inżynieria Danych) czyszczeniu logów z czujników i obliczaniu prawidłowego RUL. Pozwól AutoML zająć się wyborem modelu.
\


