Trong ngành hàng không, "phá vỡ mọi thứ" không phải là một lựa chọn.
Nếu một máy chủ gặp sự cố, bạn khởi động lại nó. Nếu động cơ phản lực bị hỏng giữa chuyến bay, hậu quả sẽ thảm khốc. Đây là lý do tại sao ngành hàng không đang chuyển từ Bảo trì Phòng ngừa (thay thế các bộ phận theo lịch trình bất kể chúng có cần hay không) sang Bảo trì Dự đoán (PdM) (thay thế các bộ phận chính xác trước khi chúng hỏng).
Đối với các Nhà khoa học Dữ liệu, đây là bài toán hồi quy Chuỗi Thời gian tối thượng. Mục tiêu là tính toán Tuổi thọ Còn lại Hữu ích (RUL) của động cơ dựa trên dữ liệu cảm biến (nhiệt độ, áp suất, rung động).
Theo truyền thống, điều này đòi hỏi các mô hình vật lý phức tạp hoặc kiến trúc Học Sâu được điều chỉnh thủ công (LSTM). Nhưng gần đây, Học Máy Tự động (AutoML) đã trưởng thành đến mức có thể vượt trội hơn việc điều chỉnh thủ công.
Trong hướng dẫn này, dựa trên phân tích sử dụng bộ dữ liệu NASA C-MAPSS, chúng ta sẽ xây dựng một pipeline để dự đoán hỏng hóc động cơ bằng hai công cụ mã nguồn mở hàng đầu: AWS AutoGluon và H2O.ai.
Chúng ta không chỉ phân loại hình ảnh ở đây; chúng ta đang xử lý dữ liệu chuỗi thời gian đa biến. Pipeline yêu cầu chuyển đổi nhật ký cảm biến thô thành mục tiêu hồi quy (RUL).
Chúng ta đang sử dụng bộ dữ liệu nổi tiếng NASA Commercial Modular Aero-Propulsion System Simulation (C-MAPSS). Nó chứa dữ liệu mô phỏng chạy đến khi hỏng.
Bộ dữ liệu không cung cấp rõ ràng cho chúng ta RUL; nó cung cấp cho chúng ta chu kỳ hiện tại. Chúng ta phải tính toán mục tiêu.
Logic: RUL = ChukỳTốiđacủaĐộngcơ - ChukỳHiệntại
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())
Trong bảo trì dự đoán, "Độ chính xác" đơn giản không hoạt động. Chúng ta cần đo lường dự đoán của chúng ta sai lệch bao nhiêu.
Chúng ta dựa vào RMSE (Căn bậc hai của Sai số Bình phương Trung bình).
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)
Lưu ý: Phân tích cũng nhấn mạnh RMSLE (Sai số Logarit). Điều này rất quan trọng vì dự đoán tuổi thọ thấp hơn (dự đoán hỏng sớm hơn) là an toàn, nhưng dự đoán cao hơn (dự đoán hỏng muộn hơn thực tế) là nguy hiểm. RMSLE xử lý sai số tương đối tốt hơn trên các quy mô khác nhau.
Chúng tôi đã thử nghiệm hai framework để xem cái nào có thể xử lý dữ liệu cảm biến phức tạp, nhiễu tốt hơn mà không cần điều chỉnh thủ công rộng rãi.
AutoGluon (do AWS phát triển) sử dụng chiến lược xếp chồng và kết hợp nhiều mô hình (Mạng Neural, LightGBM, CatBoost) tự động.
Mã code:
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 là một cựu chiến binh trong lĩnh vực này, nổi tiếng với khả năng tính toán phân tán có khả năng mở rộng.
Mã code:
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()}")
Phân tích tiết lộ sự chênh lệch lớn về hiệu suất khi áp dụng cho bộ dữ liệu cảm biến cụ thể này.
| Thư viện | Chỉ số | Mục tiêu: RUL | Kết quả (Thấp hơn là Tốt hơn) | |----|----|----|----| | AutoGluon | RMSE | RUL | 14.07 | | H2O | RMSE | RUL | 44.85 |
**Phân tích: \ AutoGluon vượt trội hơn H2O đáng kể (14.07 so với 44.85). Trong bối cảnh động cơ phản lực, biên độ sai số 14 chu kỳ là chấp nhận được để lên lịch bảo trì. Biên độ sai số 44 chu kỳ khiến mô hình trở nên vô dụng.
Tại sao AutoGluon thắng?
Đối với các ứng dụng công nghiệp liên quan đến dữ liệu đa biến phức tạp, AutoML không còn chỉ là công cụ tạo mẫu—nó là khả năng sản xuất.
Bằng cách chuyển từ lựa chọn mô hình thủ công sang phương pháp kết hợp tự động như AutoGluon, nhà phát triển có thể giảm thời gian kỹ thuật từ hàng tuần xuống hàng giờ trong khi đạt được độ chính xác vượt trội.
Bài học chính cho Nhà phát triển: Khi xây dựng ứng dụng IoT Công nghiệp, hãy tập trung nỗ lực vào Giai đoạn 1 (Kỹ thuật Dữ liệu) làm sạch nhật ký cảm biến và tính toán RUL chính xác. Để AutoML xử lý việc lựa chọn mô hình.
\


