Amazon Lookout for Equipment

目次

初心者から実務者向けの包括的解説

Amazon Lookout for Equipment は、産業機器のセンサーデータから故障パターンを自動学習し、故障が発生する前に予知するマネージドサービスです。振動・温度・圧力などの複数センサーからの時系列データを分析して、異常パターンを検出し、計画外停止を事前に防ぎます。

⚠️ End of Support Notice: Amazon Lookout for Equipment は 2026年10月7日をもってサポート終了予定です。詳細参照。


概要

Lookout for Equipment とは

「産業設備の予知保全 ML サービス」 で、以下の特徴があります:

  • 多変量時系列異常検知: 複数センサーの相互作用を分析
  • 特定の故障モード学習: 「軸受け摩耗」「潤滑不足」など故障タイプごとに学習
  • リアルタイム推論: 新規センサーデータをストリーミング処理
  • 影響要因分析: どのセンサーが異常に寄与しているか自動分析
  • IoT SiteWise / S3 統合: 既存インフラから自動取込

選ぶべき理由

以下のいずれかに該当すれば Lookout for Equipment は最適:

  • 産業機器(回転機械・ポンプ・コンプレッサー)の故障を予知したい
  • センサーデータは豊富だが、故障時刻ラベルが手動作業になっている
  • 計画外停止による生産ロス・修理コストを削減したい
  • 複数センサーの複合的な異常パターンを検出したい
  • IoT SiteWise で既にセンサー収集基盤がある

Lookout for Equipment が解決する課題

課題 従来の方法 Lookout for Equipment
故障予知 閾値アラート(見落とし多い) ML による多変量異常検知
ML 構築コスト 専門エンジニア数ヶ月 マネージド(ローコード)
複数センサー分析 各センサー個別監視 複合パターン自動検出
計画外停止 年間 100+ 時間 50-80% 削減可
修理コスト 緊急修理(高額) 計画修理(低額)
故障モード特定 現場経験則頼り データドリブン原因特定
環境学習 モデル再構築困難 自動適応

主な特徴

✅ 多変量時系列異常検知

  • 単一センサー閾値では検知不可な複合異常を検出
  • センサー間相互作用を学習

✅ 特定の故障モード学習

# モデル学習時に故障モードのラベルを付与可

training_data = {
    'start_time': '2024-01-01 10:00',
    'end_time': '2024-01-01 11:30',
    'failure_mode': 'bearing_wear'  # 軸受け摩耗
}

✅ 影響コンポーネント分析

  • 異常スコアに最も寄与しているセンサーを特定
  • メンテナンス対象を絞り込み可能

✅ リアルタイムストリーミング推論

  • IoT Core / Kinesis から自動取込
  • 秒単位の推論実行

✅ 長期記録の異常検知

  • 数年単位の履歴データから傾向学習
  • 緩やかな劣化の検出

アーキテクチャ

センサーデバイス
    ├── 振動センサー(加速度計)
    ├── 温度センサー
    ├── 圧力センサー
    ├── 流量センサー
    └── 電流センサー
         ↓ IoT Core / Kinesis / OPC-UA

S3 データレイク
    ├── Raw センサーデータ(CSV)
    ├── パーティショニング(日/時間別)
    └── アーカイブ(Glacier)

Lookout for Equipment
    ├── データベース(タイムシリーズ)
    ├── ML 学習エンジン
    └── リアルタイム推論
         ↓
異常スコア(0.0-1.0)
    ↓
SNS / Lambda / CloudWatch
    ↓
メンテナンス指示 / 部品発注 / 停止計画

コアコンポーネント

1. Dataset(データセット)

import boto3

client = boto3.client('lookoutequipment')

# データセット作成
response = client.create_dataset(
    DatasetName='pump-vibration-dataset',
    DatasetSchema={
        'InlineDataSchema': {
            'NamedColumnIndexes': {
                'Timestamp': 0,
                'ComponentId': 1,
                'Vibration_X': 2,
                'Vibration_Y': 3,
                'Vibration_Z': 4,
                'Temperature': 5,
                'Pressure': 6
            }
        }
    },
    ServerSideKmsKeyId='arn:aws:kms:region:account:key/key-id'
)

# CSV データをアップロード
response = client.start_data_ingestion_job(
    DatasetName='pump-vibration-dataset',
    IngestionInputConfiguration={
        'S3InputConfiguration': {
            'Bucket': 'my-data-bucket',
            'Prefix': 'sensor-data/pump/'
        }
    }
)

2. Model(モデル)

# モデル作成・学習開始
response = client.create_model(
    DatasetName='pump-vibration-dataset',
    ModelName='pump-failure-predictor-v1',
    ClientToken='unique-token-001',

    # (オプション)故障モードラベル
    LabelsInputConfiguration={
        'S3InputConfiguration': {
            'Bucket': 'my-data-bucket',
            'Prefix': 'labels/pump/'
        }
    },

    # リソース設定
    DataPreProcessingConfiguration={
        'TargetSamplingRate': 'PT5S'  # 5 秒ごとにサンプリング
    }
)

model_arn = response['ModelArn']

# 学習ステータス確認
response = client.describe_model(
    ModelName='pump-failure-predictor-v1'
)
# Status: TRAINING / TRAINED / FAILED

3. Label(故障モードラベル)

{
    "data": [
        {
            "start": "2024-02-15T10:30:00Z",
            "end": "2024-02-15T12:00:00Z",
            "label": "bearing_wear"
        },
        {
            "start": "2024-03-20T08:15:00Z",
            "end": "2024-03-20T09:45:00Z",
            "label": "lubrication_failure"
        },
        {
            "start": "2024-04-05T14:20:00Z",
            "end": "2024-04-05T16:30:00Z",
            "label": "cavitation"
        }
    ]
}

4. InferenceScheduler(推論スケジューラー)

# リアルタイム推論を有効化
response = client.create_inference_scheduler(
    ModelName='pump-failure-predictor-v1',
    InferenceSchedulerName='pump-realtime-monitoring',

    DataInputConfiguration={
        'S3InputConfiguration': {
            'Bucket': 'incoming-sensor-data',
            'Prefix': 'realtime/'
        }
    },

    DataOutputConfiguration={
        'S3OutputConfiguration': {
            'Bucket': 'inference-results',
            'Prefix': 'predictions/'
        }
    },

    RoleArn='arn:aws:iam::account:role/LookoutEquipmentRole',

    # 推論実行頻度
    DataUploadFrequency='PT5M',  # 5 分ごと

    # オフセット時間設定(データ受信待機)
    DataDelayOffsetInMinutes=5
)

# 推論スケジューラー開始
response = client.start_inference_scheduler(
    InferenceSchedulerName='pump-realtime-monitoring'
)

5. Anomaly Detection Result

# 推論結果を S3 から取得
s3_client = boto3.client('s3')

response = s3_client.get_object(
    Bucket='inference-results',
    Key='predictions/2025-04-27/results.json'
)

results = json.loads(response['Body'].read)

# 推論結果構造
{
    'anomaly': 0.85,  # 異常スコア(0.0-1.0)
    'anomaly_prediction': 'ANOMALOUS',  # ANOMALOUS / NORMAL
    'diagnostics': {
        'Vibration_X': 0.92,  # 各センサーの寄与度
        'Temperature': 0.72,
        'Pressure': 0.55,
        'Vibration_Y': 0.10
    },
    'timestamp': '2025-04-27T10:30:00Z',
    'component_id': 'PUMP_001'
}

時系列異常検知アプローチ

多変量オートエンコーダー

正常運転データ(過去データ)
    ↓
Encoder: 高次元 → 低次元特徴空間
    ↓ 潜在空間
Decoder: 低次元 → 高次元(復元)
    ↓
再構成誤差を計算

正常データ:
    再構成誤差: 低い(同じパターンに復元)

異常データ:
    再構成誤差: 高い(復元失敗)
    → IsAnomalous = true

長期依存性の学習(LSTM)

# 時系列の長期パターンを学習

入力: 過去 168 時間(1 週間)のセンサーデータ
    ↓
LSTM エンコーダー: 時系列特徴抽出
    ↓
LSTM デコーダー: 次の 1 時間を予測
    ↓
予測誤差が異常スコア

多変量ガウス分布

正常運転: 複数センサーの同時分布
    μ(平均)= [100, 50, 20]  # [Vibration, Temp, Pressure]
    Σ(共分散) = [[...]]     # センサー間相関

新規データが分布外なら異常判定

ワークフロー

フェーズ 1: 過去データ準備(1-4 週間)

タスク:
① 過去 3-12 ヶ月のセンサーデータを S3 にアップロード
② 故障時刻を CSV で記録(オプション)
③ データ品質確認(欠損値・外れ値チェック)

結果:
  S3 内の構造化データセット完成

フェーズ 2: データセット登録(1 日)

response = client.create_dataset(
    DatasetName='production-equipment',
    ...
)

response = client.start_data_ingestion_job(
    DatasetName='production-equipment',
    IngestionInputConfiguration={...}
)

フェーズ 3: モデル学習(1-3 時間)

response = client.create_model(
    DatasetName='production-equipment',
    ModelName='failure-predictor-v1'
)

# 完了まで待機
waiter = client.get_waiter('model_trained')
waiter.wait(ModelName='failure-predictor-v1')

フェーズ 4: モデル評価(30 分)

response = client.describe_model(
    ModelName='failure-predictor-v1'
)

metrics = response['ModelMetrics']
print(f"Precision: {metrics['Precision']}")
print(f"Recall: {metrics['Recall']}")
print(f"F1-Score: {metrics['F1Score']}")

フェーズ 5: 推論スケジューラーデプロイ(1 日)

response = client.create_inference_scheduler(
    ModelName='failure-predictor-v1',
    ...
)

response = client.start_inference_scheduler(
    InferenceSchedulerName='realtime-monitoring'
)

フェーズ 6: 運用監視(継続)

  • ① CloudWatch ダッシュボード監視
  • ② 異常アラート確認
  • ③ 月次レポート生成
  • ④ 3-6 ヶ月ごとにモデル再学習

データ準備

推奨データフォーマット

Timestamp,ComponentId,Vibration_X_mps2,Vibration_Y_mps2,Vibration_Z_mps2,Temperature_C,Pressure_bar,Current_A
2024-01-01 00:00:00,PUMP_001,0.2,0.15,0.18,45.2,3.5,12.3
2024-01-01 00:01:00,PUMP_001,0.21,0.16,0.19,45.3,3.5,12.2
2024-01-01 00:02:00,PUMP_001,0.22,0.17,0.20,45.4,3.5,12.1
...

データ品質ガイドライン

時間粒度: 1 分〜 1 時間(推奨)
  - 1 秒以下: 過剰(ストレージ浪費)
  - 1 日以上: 不足(異常見落とし)

サンプル数: 最少 5,000 行(推奨 100,000+ 行)
  - 3 ヶ月分以上の継続データ
  - 季節変動カバー

欠損処理:
  ✅ 線形補間(短期欠損)
  ❌ 前値保持(推奨しない)
  ❌ ゼロ埋め(異常パターン導入)

外れ値処理:
  ✅ IQR 法で検出・マーク
  ❌ 削除(情報損失)

S3 ディレクトリ構造

my-bucket/
├── sensor-data/
│   ├── 2024/
│   │   ├── 01/
│   │   │   ├── pump_001_data.csv
│   │   │   └── pump_002_data.csv
│   │   ├── 02/
│   │   └── ...
│   └── 2025/
├── labels/
│   ├── failure_events.json
│   └── maintenance_records.csv
└── models/
    ├── failure_predictor_v1/
    └── failure_predictor_v2/

モデル学習

学習時間見積もり

データサイズ | センサー数 | 学習時間 | コスト
  3 ヶ月     | 5        | 30分    | $5
  6 ヶ月     | 8        | 60分    | $10
  12 ヶ月    | 10       | 120分   | $20
  24 ヶ月    | 15       | 180分   | $30

精度改善のイテレーション

# Iteration 1
client.create_model(
    DatasetName='production-equipment',
    ModelName='v1'
)
# 評価: F1-Score = 0.78

# 改善: 故障モードラベルを追加
# Iteration 2
client.create_model(
    DatasetName='production-equipment',
    ModelName='v2',
    LabelsInputConfiguration={...}
)
# 評価: F1-Score = 0.85(改善)

# 改善: データ品質向上・外れ値除去
# Iteration 3
client.create_model(
    DatasetName='production-equipment-v2',
    ModelName='v3'
)
# 評価: F1-Score = 0.91(さらに改善)

推論とリアルタイム監視

リアルタイム推論フロー

新規センサーデータ(5 分ごと)
    ↓ S3 にアップロード
    ↓ InferenceScheduler が自動取込
    ↓ Lookout for Equipment で推論
    ↓ 結果を S3 に出力
    ↓ Lambda が結果を読込
    ↓ 異常スコア > 0.7 なら SNS 送信
    ↓ メンテナンスチームがアラート受信

Lambda 統合例

import boto3
import json
import pandas as pd

lookout = boto3.client('lookoutequipment')
s3 = boto3.client('s3')
sns = boto3.client('sns')
dynamodb = boto3.resource('dynamodb')

def lambda_handler(event, context):
    """Lookout for Equipment 推論結果を処理"""

    # S3 イベントから推論結果ファイルを取得
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']

    # 推論結果を読込
    obj = s3.get_object(Bucket=bucket, Key=key)
    results_df = pd.read_json(obj['Body'])

    # 異常判定
    anomalous_rows = results_df[results_df['anomaly'] > 0.7]

    if len(anomalous_rows) > 0:
        for _, row in anomalous_rows.iterrows:
            # DynamoDB にアラート記録
            table = dynamodb.Table('equipment-alerts')
            table.put_item(
                Item={
                    'equipment_id': row['component_id'],
                    'timestamp': row['timestamp'],
                    'anomaly_score': float(row['anomaly']),
                    'top_factors': ','.join([
                        f"{k}:{v:.2f}"
                        for k, v in row['diagnostics'].items
                        if v > 0.5
                    ])
                }
            )

            # SNS でメンテナンスチームに通知
            sns.publish(
                TopicArn='arn:aws:sns:region:account:maintenance-alerts',
                Subject=f'Equipment Anomaly Detected: {row["component_id"]}',
                Message=f'''
Anomaly Score: {row['anomaly']:.2%}
Equipment: {row['component_id']}
Timestamp: {row['timestamp']}
Top Contributing Sensors: {row['diagnostics']}
Recommended Action: Schedule preventive maintenance
                '''
            )

    return {
        'statusCode': 200,
        'body': json.dumps({
            'processed_rows': len(results_df),
            'anomalous_rows': len(anomalous_rows)
        })
    }

CloudWatch ダッシュボード

import boto3

cloudwatch = boto3.client('cloudwatch')

# カスタムメトリクスを送信
cloudwatch.put_metric_data(
    Namespace='Equipment/Monitoring',
    MetricData=[
        {
            'MetricName': 'AnomalyScore',
            'Value': 0.82,
            'Unit': 'None',
            'Dimensions': [
                {'Name': 'EquipmentId', 'Value': 'PUMP_001'},
                {'Name': 'ComponentId', 'Value': 'bearing'}
            ]
        },
        {
            'MetricName': 'FailureProbability',
            'Value': 0.45,
            'Unit': 'Percent',
            'Dimensions': [
                {'Name': 'EquipmentId', 'Value': 'PUMP_001'}
            ]
        }
    ]
)

IoT SiteWise との統合

データパイプライン

OPC-UA サーバー(工場)
    ↓ IoT SiteWise Gateway
    ↓ IoT SiteWise(クラウド)
    ↓ 自動エクスポート → S3
    ↓ Lookout for Equipment
    ↓ 推論結果

IoT SiteWise からのデータ抽出

import boto3

iotsitewise = boto3.client('iotsitewise')
s3 = boto3.client('s3')

# アセット ID 取得
response = iotsitewise.list_assets(
    filter='NAME:pump_01'
)

asset_id = response['assetSummaries'][0]['id']

# プロパティデータを取得
response = iotsitewise.get_asset_property_value_history(
    assetId=asset_id,
    propertyId='vibration-x',
    startDate=1704067200,  # 2024-01-01
    endDate=1712102400    # 2024-04-03
)

# S3 に CSV 出力
csv_data = convert_to_csv(response['assetPropertyValueHistory'])
s3.put_object(
    Bucket='lookout-training-data',
    Key='sitewise-export/pump_01.csv',
    Body=csv_data
)

インサイト・分析

診断スコア(Diagnostics)

{
    "anomaly_score": 0.87,
    "diagnostics": {
        "Vibration_X": 0.95,      // 最も寄与度が高い
        "Temperature": 0.72,
        "Vibration_Y": 0.68,
        "Pressure": 0.45,         // 寄与度が低い
        "Current": 0.15
    },
    "interpretation": "軸受け摩耗の可能性が高い。X 軸振動が急増。"
}

予兆シグナルの段階

Normal (Score 0.0-0.3)
    → 通常稼働

Caution (Score 0.3-0.6)
    → 初期異常を検出
    → メンテナンス予定を検討

Warning (Score 0.6-0.8)
    → 急速な劣化
    → 2-4 週間以内に部品交換推奨

Critical (Score 0.8-1.0)
    → 故障直前
    → 直近 1 週間の停止計画推奨

根本原因分析(RCA)

# 異常が発生した時刻から遡る

異常発見: 2025-04-27 14:30
異常スコア: 0.92

遡り分析:
2025-04-20 08:00: Score 0.12(初期兆候)
2025-04-22 16:00: Score 0.35(加速化開始)
2025-04-25 12:00: Score 0.65(警告段階)
2025-04-27 14:30: Score 0.92(危機的)

期間: 7 日間で 0.120.92

原因仮説:
① 潤滑剤枯渇(最確度)
② 軸受け摩耗(確度高)
③ 偏心(確度中)

主要ユースケース

1. 回転機械(モーター・ポンプ・ファン)

  • 入力: 振動センサー(X/Y/Z)、温度
  • 処理: 多変量異常検知
  • 出力: 軸受け摩耗 / バランス不良 / 共振検出
  • 効果: 計画外停止を 60-80% 削減

2. コンプレッサー監視

  • 入力: 圧力、吐出温度、吸入温度、流量
  • 処理: 複合異常パターン検出
  • 出力: 冷却能力低下 / 弁漏れ / 潤滑不足検出
  • 効果: エネルギー効率の最大 5% 向上

3. 風力発電タービン

  • 入力: ギアボックス温度、ブレード振動、発電出力
  • 処理: 長期トレンド + 急速異常
  • 出力: 計画メンテナンスの 2-4 週間前予知
  • 効果: タービン稼働率 98% 達成

4. 油圧システム

  • 入力: 油温度、圧力、流量、粘度
  • 処理: マルチセンサー相互作用学習
  • 出力: ポンプ摩耗 / フィルタ詰まり検出
  • 効果: 油交換サイクルを 30% 延長

5. 化学・石油プラント

  • 入力: 装置別の複数センサー(温度・圧力・流量)
  • 処理: 設備別モデル構築
  • 出力: リアルタイムプロセス安全管理
  • 効果: 事故リスクを 40% 低減

他サービスとの比較

Lookout for Equipment vs SageMaker

観点 Lookout for Equipment SageMaker
セットアップ時間 1-2 週間 1-2 ヶ月
必要スキル 最小限 Python / ML
カスタマイズ 限定的 高度に可能
推論レイテンシ 実時間(5 分) 秒単位(API)
多変量異常検知 ✅ 自動 手動実装
価格 $0.80/センサー 従量課金
採用理由 予知保全向け 高度なカスタマイズ

Lookout for Equipment vs Monitron

観点 Lookout for Equipment Monitron
セットアップ データパイプライン必須 ハードウェア込み
センサー 既存センサー対応 Monitron センサー限定
スケーラビリティ 高度に可能 限定的
カスタマイズ 高い 限定的
初期投資 低い($0) 高い($15K+)
セットアップ難度 中程度 低い
採用理由 大規模 / 既存センサー シンプル / ターンキー

セキュリティとコンプライアンス

データ暗号化

# S3 に KMS 暗号化を適用
s3 = boto3.client('s3')

s3.put_bucket_encryption(
    Bucket='equipment-data',
    ServerSideEncryptionConfiguration={
        'Rules': [
            {
                'ApplyServerSideEncryptionByDefault': {
                    'SSEAlgorithm': 'aws:kms',
                    'KMSMasterKeyID': 'arn:aws:kms:region:account:key/key-id'
                }
            }
        ]
    }
)

# インターネット経由通信は TLS 1.2

アクセス制御(IAM)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lookoutequipment:DescribeModel",
                "lookoutequipment:ListInferenceSchedulers"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "lookoutequipment:DeleteModel",
                "lookoutequipment:DeleteDataset"
            ],
            "Resource": "*"
        }
    ]
}

コスト分析

課金体系

項目 単価
モデル学習 $0.80/センサー/モデル
推論(リアルタイム) $0.35/センサー/月
S3 ストレージ 標準 S3 料金

コスト最適化例

設備数: 10 台
センサー数: 8 個/設備(80 センサー)

初期投資:
  モデル学習: $0.80 × 80 = $64(初回のみ)

月間コスト:
  推論: $0.35 × 80 = $28/月
  S3 保存: 50GB × $0.023 = $1.15/月
  合計: $29.15/月

年間コスト:
  初年度: $64 + ($29.15 × 12) = $414.80
  以降: $349.80/年

ROI:
  従来: 検査員 $3,000/月
  Lookout: $29/月
  削減: $2,971/月
  初年度 ROI: 90 日(ブレークイーブン)

マイグレーション戦略

2026年10月7日への対応

推奨移行先:

  1. AWS IoT SiteWise – 多変量異常検知(2025年7月新機能)
  2. SageMaker – カスタムモデル
  3. Bedrock – LLM ベース分析

移行シナリオ

シナリオ 1: IoT SiteWise への移行

# Lookout → IoT SiteWise 多変量異常検知

iotsitewise = boto3.client('iotsitewise')

# アセットモデルに異常検知ルールを設定
response = iotsitewise.create_asset_model(
    assetModelName='equipment-anomaly-detector',
    assetModelProperties=[
        {
            'name': 'vibration_anomaly',
            'dataType': 'DOUBLE',
            'type': {
                'metric': {
                    'expression': 'sqrt(x^2 + y^2 + z^2) > threshold'
                }
            }
        }
    ]
)

シナリオ 2: SageMaker Autopilot

# 自動 ML で時系列予測モデル構築

sagemaker = boto3.client('sagemaker')

response = sagemaker.create_auto_ml_job(
    AutoMLJobName='equipment-failure-autopilot',
    InputDataConfig=[
        {
            'DataSource': {
                'S3DataSource': {
                    'S3DataType': 'S3Prefix',
                    'S3Uri': 's3://bucket/training-data/'
                }
            }
        }
    ],
    OutputDataConfig={'S3OutputPath': 's3://bucket/output/'},
    ProblemType='Regression',  # または TimeSeriesForecastingAutomated
    Role='arn:aws:iam::account:role/SageMakerRole'
)

ベストプラクティス

1. データ品質

✅ 推奨:
  - 最低 3-6 ヶ月分のデータ
  - センサー数: 5-15 個の多変量
  - サンプリング: 1-60 分ごと
  - 欠損率: < 5%

❌ 非推奨:
  - 1 ヶ月分未満
  - 単一センサーのみ
  - 秒単位(過剰)
  - 欠損率 > 20%

2. モデル選択

設備タイプ別推奨:

回転機械 → 多変量異常検知(デフォルト)
 → 振動 + 温度で高精度

往復機械 → 周期性考慮モデル
 → 温度 + 流量で検出

静止装置 → トレンド分析
 → 長期変化の追跡

3. 運用監視

# 月次モデル性能レビュー

response = client.describe_model(
    ModelName='failure-predictor-v1'
)

# 精度が 0.85 未満なら再学習トリガー
if response['ModelMetrics']['F1Score'] < 0.85:
    # 新データを追加して再学習
    client.create_model(
        DatasetName='equipment-data-v2',
        ModelName='failure-predictor-v2'
    )

トラブルシューティング

精度が低い(F1 < 0.75)

① データ品質確認
   → 欠損値が多すぎないか
   → 外れ値が含まれていないか

② 故障モードラベルの追加
   → 手動で故障時刻を記録
   → 異なる故障タイプを区別

③ モデル再学習
   → より長期間のデータを使用
   → センサー数を増加

推論スケジューラーが失敗

エラー: "DataUploadFrequencyMismatchError"
→ データアップロード頻度と推論周期を一致させる

エラー: "InsufficientDataException"
→ 連続したセンサーデータが不足
→ S3 に日次アップロードが漏れていないか確認

エラー: "ModelNotDeployedError"
→ モデル学習完了後、推論スケジューラーを開始

End of Support Notice

重要なお知らせ

Amazon Lookout for Equipment は 2026年10月7日をもってサポート終了予定です。

新規顧客: 2025年10月7日以降の利用不可 既存顧客: 2026年10月7日までサポート継続

IoT SiteWise への推奨移行

2025 年 7 月、AWS IoT SiteWise は多変量異常検知機能をネイティブサポートするようになりました。

# IoT SiteWise での異常検知設定
iotsitewise = boto3.client('iotsitewise')

response = iotsitewise.create_asset_model_composite_model(
    assetModelId='model-id',
    assetModelCompositeModelName='anomaly-detection',
    assetModelCompositeModelType='AWS/ANOMALY_DETECTION'
)

まとめ

Amazon Lookout for Equipment は 「産業設備の予知保全 ML サービス」 です。

強み

  • 多変量時系列異常検知が自動
  • IoT データパイプラインとの統合
  • 特定の故障モード学習対応
  • マネージド(ローコード)

制約

  • カスタマイズ機能は限定的
  • 2026年10月7日でサポート終了
  • 複雑なビジネスロジックには不向き

選択基準

  • ✅ 産業設備の故障予知を実現したい
  • ✅ 複数センサーの相互作用を学習したい
  • ✅ 既に IoT インフラがある
  • ❌ 2026年以降の長期運用を計画

公式ドキュメント


最終更新: 2025年4月27日