マハラノビス距離を用いた
異常値検知
Anomaly detection using Mahalanobis distance
公立はこだて未来大学 森雄斗
1
概要
教師なし学習により、データのパターンを学習させ、パ
ターンから外れたデータを異常値として検出する。
検出方法は、マハラノビス距離(Mahalanobis Distance)を
利用する。
2
様々な距離測定
 ユークリッド距離
 マンハッタン距離
 マハラノビス距離
 チェビシェフ距離
 ミンコフスキー距離
 …
3
マハラノビス距離とは
データの各方向への散らばり具合まで
考慮した「データ群からの距離」
データに相関関係が強いほど等距離線
が楕円になる
http://sky.geocities.jp/rdhdf849/maharanobis.htm
4
ユークリッド距離と
マハラノビス距離
ユークリッド距離=等距離線が円
マハラノビス距離=等距離線が楕円
右図のAとCはユークリッド距離を用いると等距
離だが、マハラノビス距離を用いると等距離で
ない。
人間から見ても、マハラノビス距離が一番離れ
ている点Aが外れ値だと判断できる。
→マハラノビス距離が大きいほど異常度が高い
5
実験環境
 Python 3.6.0
Pandas, Matplotlib, Numpy, Scipy, Axes3D
 実際のデータ(全てが正常値)
MachineA.csv → 22673個 × 3 (X軸, Y軸, Z軸)
MachineB.csv → 18703個 × 3 (X軸, Y軸, Z軸)
6
データ入力(MachineA, X軸)7
データ入力(MachineA, Y軸)8
データ入力(MachineA, Z軸)9
データ入力(MachineA)
特徴
• Y軸は-0.25~0.35と範囲が狭い
• Z軸は0以上
• 時系列における定まった分布
(振動など)が存在しない
10
MachineAの相関関係(X-Y)11
MachineAの相関関係(X-Z)12
MachineAの相関関係(Y-Z)13
MachineAの相関関係
特徴
• X-Zグラフは負の相関が強い
• 重心に点が集中している
14
MachineAのマハラノビス距離15
正確性の吟味
 閾値を0.92に設定
↓
 Mahalanobis Distance > 0.92
が成り立つ値を異常値と仮定する
 右図の赤点が異常値
16
 基準に近い閾値を0.03に設定
↓
 Mahalanobis Distance < 0.03
が成り立つ値を基準に近い標本と仮定する
 右図の緑点が基準に近い標本
正確性の吟味
赤:異常値
緑:基準に近い標本
17
正確性の吟味(相関)18
赤:異常値
緑:基準に近い標本
正確性の吟味
 疑問
Y軸の値はあまり重要視されてない..?
 推測
X軸の範囲とZ軸の範囲に対して, Y軸の範囲
が狭い(X: 1.0, Y: 0.6, Z: 2.0)
19
同様の処理をMachineBに
20
データ入力(MachineB, X軸)21
データ入力(MachineB, Y軸)22
データ入力(MachineB, Z軸)23
データ入力(MachineB)
特徴
• X軸は-0.4~0.4と範囲が狭い
• X軸のばらつきが大きい
• Z軸は0以上
24
MachineBの相関関係(X-Y)25
MachineBの相関関係(X-Z)26
MachineBの相関関係(Y-Z)27
MachineBの相関関係
特徴
• X-Yグラフは負の相関が強い
• Y-Zグラフは正の相関が強い
• X-Zグラフはばらつきが大きい
28
MachineBのマハラノビス距離29
正確性の吟味
 閾値を1.12に設定
↓
 Mahalanobis Distance > 1.12
が成り立つ値を異常値と仮定する
 右図の赤点が異常値
30
 基準に近い閾値を0.09に設定
↓
 Mahalanobis Distance < 0.09
が成り立つ値を基準に近い標本と仮定する
 右図の緑点が基準に近い標本
正確性の吟味31
赤:異常値
緑:基準に近い標本
正確性の吟味(相関)32
赤:異常値
緑:基準に近い標本
正確性の吟味
 結果
MachineAよりも正しく判断されている
 推測
X, Y, Zそれぞれに強い相関関係があるから
33
3D plot(MachineA)34
3D plot(MachineA)35
3D plot(MachineA)+Mahalanobis36
外れ値: Mahalanobis Distance > 0.87
基準に近い標本: Mahalanobis Distance < 0.04
3D plot(MachineA)+Mahalanobis37
外れ値: Mahalanobis Distance > 0.87
基準に近い標本: Mahalanobis Distance < 0.04
MD>0.87, MD<0.04 のみ描写38
外れ値: Mahalanobis Distance > 0.87
基準に近い標本: Mahalanobis Distance < 0.04
MD=Mahalanobis Distance
3D plot(MachineB)39
3D plot(MachineB)40
3D plot(MachineB)+Mahalanobis41
外れ値: Mahalanobis Distance > 1.00
基準に近い標本: Mahalanobis Distance < 0.13
3D plot(MachineB)+Mahalanobis42
外れ値: Mahalanobis Distance > 1.00
基準に近い標本: Mahalanobis Distance < 0.13
MD>1.00, MD<0.13 のみ描写43
外れ値: Mahalanobis Distance > 1.00
基準に近い標本: Mahalanobis Distance < 0.13
ダミーを追加する (成功例)44
MachineAにDummyを追加する。
Dummy(-0.72, 0.52, 0.52) → Mahalanobis Distance: 1.06281239
異常値をMahalanobis Distance >1.06に設定
Dummy
ダミーを追加する (失敗例)45
MachineAにDummyを追加する。
Dummy(-0.62, 0.52, 0.52) → Mahalanobis Distance: 0.99120379
異常値をMahalanobis Distance >1.10に設定
Dummy
2つとも実際の正常データ
まとめ
 実際のデータをグラフにして特徴を調べた
 X, Y, Z軸のデータをマハラノビス距離に変換して正確性を確かめた
実際のデータからマハラノビス距離を視覚化できた
 ダミーを追加して異常値として検出するかを確かめた
著しく離れたデータの検出は可能だが、正常値を異常値にする場合がある
46

マハラノビス距離を用いた異常値検知