预测性维护(PdM)是一种在零件损坏前及时更换的方法。其目标是根据引擎的剩余使用寿命(RUL)进行计算预测性维护(PdM)是一种在零件损坏前及时更换的方法。其目标是根据引擎的剩余使用寿命(RUL)进行计算

使用 Python 和 AutoML 预测喷气发动机故障

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.

Saluran Paip PdM

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).

Fasa 1: Data (NASA C-MAPSS)

Kami menggunakan set data NASA Commercial Modular Aero-Propulsion System Simulation (C-MAPSS) yang terkenal. Ia mengandungi data simulasi berjalan-hingga-gagal.

  • Input: 21 Penderia (Jumlah Suhu, Tekanan pada Salur Masuk Kipas, Kelajuan Teras, dll.).
  • Sasaran: Baki Hayat Berguna (RUL).

Mengira RUL

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())

Fasa 2: Metrik (Mengapa Ketepatan Adalah Salah)

Dalam penyelenggaraan ramalan, "Ketepatan" mudah tidak berfungsi. Kami perlu mengukur sejauh mana meleset ramalan kami.

Kami bergantung pada RMSE (Root Mean Square Error).

  • Jika enjin mempunyai baki 50 hari, dan kami ramalkan 45, ralat adalah 5.
  • Jika kami ramalkan 100, ralat adalah 50 (Penalti besar).

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.

Fasa 3: Pertarungan AutoML

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.

Pesaing 1: AutoGluon (Pemenang)

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']}")

Pesaing 2: H2O AutoML

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()}")

Fasa 4: Keputusan

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?

  1. Penyusunan: AutoGluon cemerlang dalam penyusunan berbilang lapisan, menggabungkan kekuatan model berasaskan pokok dan rangkaian neural.
  2. Pengendalian Ciri: Ia mengendalikan hingar penderia mentah dengan lebih baik tanpa memerlukan langkah penyahhingar manual.

Kesimpulan: Hentikan Penalaan, Mulakan Penyusunan

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.

\

市场机遇
Cyberlife 图标
Cyberlife实时价格 (LIFE)
$0.0362
$0.0362$0.0362
-4.73%
USD
Cyberlife (LIFE) 实时价格图表
免责声明: 本网站转载的文章均来源于公开平台,仅供参考。这些文章不代表 MEXC 的观点或意见。所有版权归原作者所有。如果您认为任何转载文章侵犯了第三方权利,请联系 [email protected] 以便将其删除。MEXC 不对转载文章的及时性、准确性或完整性作出任何陈述或保证,并且不对基于此类内容所采取的任何行动或决定承担责任。转载材料仅供参考,不构成任何商业、金融、法律和/或税务决策的建议、认可或依据。