目次
Amazon Lookout for Equipment v2.0 完全ガイド(AI/ML - IoT)
初心者から実務者向けの包括的解説
Amazon Lookout for Equipment は、産業機器のセンサーデータから故障パターンを自動学習し、故障が発生する前に予知するマネージドサービスです。振動・温度・圧力などの複数センサーからの時系列データを分析して、異常パターンを検出し、計画外停止を事前に防ぎます。
⚠️ End of Support Notice: Amazon Lookout for Equipment は 2026年10月7日をもってサポート終了予定です。詳細参照。
目次
- 概要
- Lookout for Equipment が解決する課題
- 主な特徴
- アーキテクチャ
- コアコンポーネント
- 時系列異常検知アプローチ
- ワークフロー
- データ準備
- モデル学習
- 推論とリアルタイム監視
- IoT SiteWise との統合
- インサイト・分析
- 主要ユースケース
- 他サービスとの比較
- セキュリティとコンプライアンス
- コスト分析
- マイグレーション戦略
- ベストプラクティス
- トラブルシューティング
- End of Support Notice
- まとめ
概要
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.12 → 0.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日への対応
推奨移行先:
- AWS IoT SiteWise – 多変量異常検知(2025年7月新機能)
- SageMaker – カスタムモデル
- 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日 バージョン: v2.0