「昨日の異常を今日見つける」では遅すぎるケース:金融不正、 障害、IoT 故障など。Kafka / Kinesis 上でのリアルタイム異常検知のアーキテクチャを扱います。
ウィンドウ集計
- スライディングウィンドウ:直近 1 分を毎秒スライド、滑らかな統計量
- タンブリングウィンドウ:1 分ごとに区切る、効率的だが境界で粒度落ちる
- EWMA(指数加重移動平均):古いデータほど軽く、新しいデータほど重く
実装パターン
| ツール | 強み | 向くケース |
|---|---|---|
| river(Python) | オンライン学習、軽量 | 中規模ストリーム、PoC |
| Apache Flink | 高スループット、 | 本番大規模 |
| Spark Structured Streaming | Spark エコ系 | バッチと統合運用 |
| Kinesis Analytics | マネージド | AWS 寄せの会社 |
river ライブラリの例
river でオンライン異常検知
Python
from river import anomalyfrom river import preprocessingfrom river import compose
model = compose.Pipeline( preprocessing.StandardScaler(), anomaly.HalfSpaceTrees(seed=42) # オンライン版 Isolation Forest)
for x in stream: model.learn_one(x) score = model.score_one(x) # 異常度 if score > 0.7: alert(x)ふくふくの進め方
Kafka / Kinesis 上の異常検知パイプライン構築は、設計から運用まで 2〜3 ヶ月のロードマップでご支援します。
次回予告
EP.08 は異常検知の評価指標。ラベルなしの場合の評価法も。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。