予知保全(PdM)とは、部品が故障する直前に交換する手法です。目標は、エンジンの残存耐用年数(RUL)を計算することです予知保全(PdM)とは、部品が故障する直前に交換する手法です。目標は、エンジンの残存耐用年数(RUL)を計算することです

PythonとAutoMLによるジェットエンジン故障の予測

航空業界では、「故障」は許されません。

サーバーがクラッシュしたら再起動すればいいですが、飛行中にジェットエンジンが故障すれば、その結果は壊滅的です。そのため、航空業界は予防保全(必要かどうかに関わらずスケジュール通りに部品を交換する)から予知保全(PdM)(故障する直前に部品を交換する)へと移行しています。

データサイエンティストにとって、これは究極の時系列回帰問題です。目標は、センサーデータ(温度、圧力、振動)に基づいてエンジンの残存耐用年数(RUL)を計算することです。

従来、これには複雑な物理モデルや手動チューニングされたディープラーニングアーキテクチャ(LSTM)が必要でした。しかし最近、自動機械学習(AutoML)が成熟し、手動チューニングを上回るパフォーマンスを発揮できるようになりました。

本ガイドでは、NASA C-MAPSSデータセットを用いた分析に基づき、2つのオープンソースの強力なツール:AWS AutoGluonH2O.aiを使用してエンジン故障を予測するパイプラインを構築します。

PdMパイプライン

ここでは単に画像を分類するのではなく、多変量時系列データを扱います。パイプラインでは、生のセンサーログを回帰ターゲット(RUL)に変換する必要があります。

フェーズ1:データ(NASA C-MAPSS)

有名なNASA商用モジュール式航空推進システムシミュレーション(C-MAPSS)データセットを使用します。これには故障までのシミュレーションデータが含まれています。

  • 入力: 21個のセンサー(総温度、ファン入口圧力、コア速度など)。
  • ターゲット: 残存耐用年数(RUL)。

RULの計算

データセットは明示的に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())

フェーズ2:指標(なぜ精度が間違っているか)

予知保全では、単純な「精度」は機能しません。予測がどれだけ外れているかを測定する必要があります。

RMSE(二乗平均平方根誤差)に依存します。

  • エンジンに残り50日あり、45日と予測した場合、誤差は5です。
  • 100日と予測した場合、誤差は50です(大きなペナルティ)。

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は異なるスケール間で相対誤差をより適切に処理します。

フェーズ3:AutoML対決

複雑でノイズの多いセンサーデータを、大規模な手動チューニングなしでどちらがより適切に処理できるかを確認するために、2つのフレームワークをテストしました。

候補1:AutoGluon(勝者)

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

候補2:H2O AutoML

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

フェーズ4:結果

分析により、この特定のセンサーデータセットに適用した場合のパフォーマンスに大きな差があることが明らかになりました。

| ライブラリ | 指標 | ターゲット:RUL | 結果(低いほど良い) | |----|----|----|----| | AutoGluon | RMSE | RUL | 14.07 | | H2O | RMSE | RUL | 44.85 |

**分析: \ AutoGluonはH2Oを大きく上回りました(14.07対44.85)。ジェットエンジンの文脈では、14サイクルの誤差範囲はメンテナンスのスケジューリングに許容されます。44サイクルの誤差範囲ではモデルが役に立ちません。

なぜAutoGluonが勝ったのか?

  1. スタッキング: AutoGluonは多層スタッキングに優れており、ツリーベースのモデルとニューラルネットワークの長所を組み合わせます。
  2. 特徴処理: 手動のノイズ除去ステップを必要とせずに、生のセンサーノイズをより適切に処理しました。

結論:チューニングをやめてスタッキングを始めよう

複雑な多変量データを含む産業アプリケーションにおいて、AutoMLはもはやプロトタイピングツールだけではなく、本番環境の機能です。

手動モデル選択からAutoGluonのような自動アンサンブルアプローチに切り替えることで、開発者はエンジニアリング時間を数週間から数時間に削減しながら、優れた精度を達成できます。

開発者への重要なポイント:産業用IoTアプリを構築する際は、フェーズ1(データエンジニアリング)に労力を集中し、センサーログをクリーニングして正しいRULを計算してください。モデル選択はAutoMLに任せましょう。

\

市場の機会
Cyberlife ロゴ
Cyberlife価格(LIFE)
$0.0354
$0.0354$0.0354
-1.66%
USD
Cyberlife (LIFE) ライブ価格チャート
免責事項:このサイトに転載されている記事は、公開プラットフォームから引用されており、情報提供のみを目的としています。MEXCの見解を必ずしも反映するものではありません。すべての権利は原著者に帰属します。コンテンツが第三者の権利を侵害していると思われる場合は、削除を依頼するために service@support.mexc.com までご連絡ください。MEXCは、コンテンツの正確性、完全性、適時性について一切保証せず、提供された情報に基づいて行われたいかなる行動についても責任を負いません。本コンテンツは、財務、法律、その他の専門的なアドバイスを構成するものではなく、MEXCによる推奨または支持と見なされるべきではありません。