Dalam penerbangan, "merosakkan sesuatu" bukanlah pilihan.
Jika pelayan ranap, anda boleh memulakan semula. Jika enjin jet gagal semasa penerbangan, akibatnya adalah malapetaka. Inilah sebabnya industri penerbangan beralih daripada Penyelenggaraan Pencegahan (mengganti bahagian mengikut jadual sama ada ia memerlukannya atau tidak) kepada Penyelenggaraan Ramalan (PdM) (mengganti bahagian tepat sebelum ia rosak).
Bagi Saintis Data, ini adalah masalah regresi Siri Masa yang utama. Matlamatnya adalah untuk mengira Baki Hayat Berguna (RUL) sesebuah enjin berdasarkan data penderia (suhu, tekanan, getaran).
Secara tradisinya, ini memerlukan model fizik yang kompleks atau seni bina Pembelajaran Mendalam yang ditala secara manual (LSTM). Tetapi baru-baru ini, Pembelajaran Mesin Automatik (AutoML) telah matang sehingga ke tahap di mana ia boleh mengatasi penalaan manual.
Dalam panduan ini, berdasarkan analisis menggunakan set data NASA C-MAPSS, kami akan membina saluran paip untuk meramalkan kegagalan enjin menggunakan dua gergasi sumber terbuka: AWS AutoGluon dan H2O.ai.
Kami bukan sekadar mengklasifikasikan imej di sini; kami berurusan dengan data siri masa pelbagai pembolehubah. Saluran paip memerlukan transformasi log penderia mentah kepada sasaran regresi (RUL).
Kami menggunakan set data NASA Commercial Modular Aero-Propulsion System Simulation (C-MAPSS) yang terkenal. Ia mengandungi data simulasi berjalan-hingga-gagal.
Set data tidak memberikan RUL secara eksplisit; ia memberi kami kitaran semasa. Kami perlu mengira sasaran.
Logiknya: RUL = KitaranMaksimumEnjin - KitaranSemasa
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())
Dalam penyelenggaraan ramalan, "Ketepatan" mudah tidak berfungsi. Kami perlu mengukur sejauh mana meleset ramalan kami.
Kami bergantung pada RMSE (Root Mean Square Error).
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)
Nota: Analisis juga menyerlahkan RMSLE (Ralat Logaritma). Ini penting kerana meramal-rendah hayat (meramalkan gagal lebih awal) adalah selamat, tetapi meramal-berlebihan (meramalkan gagal lebih lewat daripada realiti) adalah berbahaya. RMSLE mengendalikan ralat relatif dengan lebih baik merentasi skala yang berbeza.
Kami menguji dua rangka kerja untuk melihat yang mana boleh mengendalikan data penderia yang kompleks dan bising dengan lebih baik tanpa penalaan manual yang meluas.
AutoGluon (dibangunkan oleh AWS) menggunakan strategi penyusunan dan pengumpulan berbilang model (Neural Nets, LightGBM, CatBoost) secara automatik.
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 adalah veteran dalam bidang ini, terkenal dengan keupayaan pengkomputeran teragih yang berskala.
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()}")
Analisis mendedahkan jurang prestasi yang besar apabila digunakan pada set data penderia khusus ini.
| Perpustakaan | Metrik | Sasaran: RUL | Keputusan (Lebih Rendah Lebih Baik) | |----|----|----|----| | AutoGluon | RMSE | RUL | 14.07 | | H2O | RMSE | RUL | 44.85 |
**Analisis: \ AutoGluon mengatasi H2O dengan ketara (14.07 vs 44.85). Dalam konteks enjin jet, margin ralat sebanyak 14 kitaran boleh diterima untuk penjadualan penyelenggaraan. Margin ralat sebanyak 44 kitaran menyebabkan model tidak berguna.
Mengapa AutoGluon menang?
Untuk aplikasi perindustrian yang melibatkan data pelbagai pembolehubah yang kompleks, AutoML bukan lagi sekadar alat prototaip—ia adalah keupayaan pengeluaran.
Dengan beralih daripada pemilihan model manual kepada pendekatan ensemble automatik seperti AutoGluon, pembangun boleh mengurangkan masa kejuruteraan daripada minggu kepada jam sambil mencapai ketepatan yang unggul.
Pengajaran Utama untuk Pembangun: Apabila membina aplikasi IoT Perindustrian, fokuskan usaha anda pada Fasa 1 (Kejuruteraan Data) membersihkan log penderia dan mengira RUL yang betul. Biarkan AutoML mengendalikan pemilihan model.
\


