製造業、医療、金融、IT運用など、異常検知が重要な分野では、よく次のように言われます。
異常データは少ない。だから正常データを学習し、そこからの逸脱を異常として検知する。
これは合理的な考え方です。
重大な故障や事故、医療上のインシデント、不正アクセスなどは、日常的にはそれほど多く発生しません。異常データだけを十分に集めて学習することは、現実には容易ではありません。
そこで、日常的に蓄積される「正常なログ」を基準にし、通常状態から外れたデータを異常として捉えます。
異常そのものを大量に集められなくても、正常からの逸脱を検知することで、インシデントの兆候を捉えるわけです。
正規分布から外れれば異常なのか
最も分かりやすい考え方が、正規分布を基準にする方法です。
日常データが平均値の周辺に集まり、左右に一定のばらつきを持つと仮定します。平均から標準偏差の何倍離れているかを示すZ-scoreなどを使えば、通常範囲から大きく外れた値を検出できます。
例えば、
- 温度が通常より極端に高い
- 振動が平均的な範囲を超えた
- 検査値が過去の分布から大きく逸脱した
- 通信量が通常時とは異なる水準に達した
といった変化です。
ただし、現実のデータが常に正規分布になるとは限りません。
分布が歪んでいる場合もあれば、裾が長い場合もあります。正常状態そのものが複数の群に分かれ、二峰性や多峰性を持つこともあります。
例えば、昼間と夜間、稼働時と待機時、熟練者と非熟練者では、それぞれ異なる「正常」が存在するかもしれません。
一つの平均値と標準偏差だけで正常を定義すると、正常な状態を異常と誤判定したり、逆に重要な構造変化を見逃したりする可能性があります。
実際に使われている異常検知手法
異常検知には、さまざまな手法があります。
代表的なものには、
- Z-score
- Hotelling’s T²
- One-Class SVM
- LOF
- Isolation Forest
- AutoEncoder
- CUSUM
- Change Finder
などがあります。
方法は異なりますが、多くは、
通常の分布、境界、密度、再現可能なパターン、または時系列の安定状態を学習し、そこからの逸脱を検出する
という考え方に基づいています。
これらは、異常を見つけるための優れた手法です。
しかし、現場ではその先に別の問題が残ります。
異常を検知できても、異常を理解できるとは限らない
例えば、製造ラインで振動が通常範囲を外れたとします。
異常検知システムは、
「これまでの正常状態とは異なる」
と教えてくれます。
しかし、それだけでは次の問いには答えられません。
- なぜ振動が増えたのか
- どの部品や工程に関係しているのか
- 一時的な変動なのか
- 故障の前兆なのか
- 次に何を確認すべきなのか
医療AIでも同じです。
AIの出力や医師の判断に大きなばらつきが生じたとしても、
- どの症例で判断が割れるのか
- どの画像特徴が不一致と関係するのか
- 画像品質の問題なのか
- 境界症例だからなのか
- モデル固有の限界なのか
までは、単純な外れ値検知だけでは分かりません。
つまり、
異常を見つけることと、異常が生まれる構造を理解することは、別の問題です。
相関が分かっても、原因が分かるとは限らない
異常を検知した後には、関連する変数を調べます。
例えば、
- 温度が上がると振動も増える
- 画像品質が低い症例ほど医師間の判断が割れる
- 稼働時間が長い設備ほど異常スコアが高い
- 通信量の増加とシステム障害が同時に発生する
といった相関です。
相関分析は非常に重要です。どの変数が異常と関連しているかを絞り込む手掛かりになります。
しかし、相関だけでは原因は確定できません。
温度が振動を増加させたのかもしれません。反対に、部品の摩耗が温度と振動の両方を増加させたのかもしれません。あるいは、負荷量という第三の要因が両方に影響している可能性もあります。
医療データでも、症例の重症度が高いほど、ある画像特徴と診断結果の両方が変化することがあります。
この場合、二つの変数に相関があっても、一方が他方の原因とは限りません。
したがって、
外れ値は異常の場所を示し、相関は関連する変数を示します。しかし、それだけで因果経路が明らかになるわけではありません。
DSA+DAGは、既存の異常検知を置き換えない
ここで重要なのは、DSA+DAGを既存の異常検知手法の代替と考えないことです。
Hotelling’s T²、Isolation Forest、AutoEncoderなどは、異常を検知するための優れた手法です。
DSA+DAGが目指しているのは、その検知結果の先です。
整理すると、次のようになります。
Detection
正常分布や通常パターンからの逸脱を検知する
↓
Interpretation
分布や判断の構造が、どのように変化したかを捉える
↓
Explanation
関連する変数と因果候補を区別し、異常が生じる経路を検討する
↓
Decision Support
追加確認、予防保全、再学習、専門家判断などにつなげる
DSAは、単に平均から離れた点を探すのではありません。
一つの症例や一つの運転状態の中で、
- どれだけ判断が揺れているか
- 単一の中心に集約できるか
- 判断が複数の群に分裂しているか
- 通常時と異なる分布構造になっていないか
を捉えます。
さらに、複数の症例や運転条件をまたいで、
どのような特徴を持つ対象で、一致や安定性が崩れるのか
という症例横断・条件横断のパターンを解析します。
これが、私たちが「Decision Structure」と呼んでいるものです。
そしてDAGを用いて、
- どの要因が先行しているのか
- 第三の要因が存在しないか
- どの経路で異常状態につながる可能性があるのか
- どこに介入すれば連鎖を止められるのか
を明示的に整理します。
相関を原因と決めつけるのではなく、因果仮説、前提条件、未確認部分を区別して表現することが重要です。
日常データは「何も起きていないデータ」ではない
正常データは、単にインシデントが発生していない記録ではありません。
そこには、
- 通常時の分布
- 状態ごとの正常範囲
- 変数間の相関
- 人やAIの判断が一致する条件
- 判断が不安定になり始める条件
- システムが破綻する前の小さな構造変化
が含まれています。
日常ログの価値は、正常範囲を決めることだけではありません。
長期間の正常データを分析することで、
普段はどのような関係性によって安定が維持されているのか
を捉えられる可能性があります。
その関係性が崩れたとき、まだ大きな事故が起きていなくても、インシデントの前兆として検知できるかもしれません。
重要なのは、単に数値が正常範囲を外れたかどうかではありません。
どの分布が変わったのか。どの相関が崩れたのか。どの判断構造が分裂したのか。
そこまで見る必要があります。
DSA+DAGで目指すもの
DSA+DAGは、既存の異常検知の後段に置く、解釈・監査レイヤーとして考えています。
Observation
日常ログ、画像、センサー値、AI出力、人の判断
↓
Distribution
平均、ばらつき、分布形状、モーダル状態
↓
Decision Structure
どの条件で一致、不一致、分裂が生じるか
↓
Causal Explanation
相関と因果を区別しながら、原因候補と影響経路を整理する
↓
Decision Support
追加測定、予防保全、モデル更新、専門家へのエスカレーションにつなげる
もちろん、すべての領域でこの枠組みが実証済みというわけではありません。
現在は医療AIを中心に研究を進めています。
だからこそ、次に必要なのは理論を語り続けることではなく、実データによる検証です。
実証試験で明らかにすべき課題
- 異常検知はできているが、原因を説明できない
- 正規分布を前提にしてよいのか判断できない
- 正常状態が複数あり、閾値の設定が難しい
- 相関する変数は分かるが、原因と結果を整理できない
- アラートが多く、対応の優先順位を付けられない
- 人やAIの判断が割れる条件を知りたい
- インシデントの予兆を構造的に捉えたい
- 既存の異常検知システムに解釈機能を加えたい
既存の異常検知に、分布構造の理解と因果仮説の監査レイヤーを加える。
それが、DSA+DAGの基本的な考え方です。
異常を見つけるだけではなく、
異常が生まれる構造を理解し、
次の意思決定につなげる。
このテーマに関心をお持ちの企業・研究機関・大学の皆様と、実証試験をご一緒できればと考えています。
