カーネル法を利用した異常波形検知
- 6. 分布データのカーネル
分布
Histogram
Intersec/on
Kernel
χ2
Kernel
Bha6acharyya
Kernel
Jensen
Shannon
Kernel
K(p1, p2 ) = min(p1
(i)
, p2
(i)
)
i
∑
K(p1, p2 ) = exp −a
(p1
(i)
− p2
(i)
)2
p1
(i)
+ p2
(i)
i
∑
#
$
%
&
'
(
K(p1, p2 ) = p1
(i)
p2
(i)
i
∑
K(p1, p2 ) = exp(−a JS(p1 || p2 ))
Re
́nyi
Kernel
K(p1, p2 ) = exp(−a (R(p1 || p2 )+ R(p2 || p1)))
Kullback-‐Leibler
Kernel
K(p1, p2 ) = exp(−a ((KL(p1 || p2 )+ KL(p2 || p1)))
:
確率分布
:
パラメーター
p1, p2
a
- 16. 0 500 1000 1500 2000
05001500
スケーリング → 密度度推定 → サンプリング
両端のピークを検出
(ウィンドウ幅5で500を超えた
箇所を両端から探索)
伸縮率(S=1500
/
ピーク間距離)
を計算しx軸をS倍にする(座標変換)
カーネル密度推定でフィッティング
推定された密度分布からランダムサ
ンプリングして、ヒストグラムを作成
(ksパッケージを利用)
1500に固定
0 500 1000 1500 2000
05001500
Frequency
0 500 1000 1500 2000
051015
- 17. カーネルPCA & One-‐‑‒class SVM
幅を揃えた波形から
サンプリングして求めたヒストグラム
類似度度⾏行行列列
(グラム⾏行行列列)
One-‐class
SVMで分離境界を決定
→
外れ値検出
PC1
PC2
Data1
Data2
Data3
Data4
SVM
カーネルPCAで次元圧縮
→
可視化
Frequency
0 500 1000 1500 2000
051015
Frequency
0 500 1000 1500 2000
0246810
Frequency
0 500 1000 1500 2000
0246810
Frequency
0 500 1000 1500 2000
0246810
Data1
Data2
Data3
Data4
Data1
Data2
Data3
Data4
Data4Data3Data2Data1
PC1
PC2
Data1
Data2
Data3
Data4
- 20. One-‐‑‒class SVM(nu=0.2)
* 赤いところがSVMで
異常だと判定されていたもの
Plate1
Plate2
Plate3
Plate4
Plate5
Plate6
Plate7
Plate8
うまくいったり、そうでなかったり
まちまち
正解率
(50.0%)
正解率
(40%)
正解率
(4.5%)
正解率
(71.8%)
正解率
(87.5%)
正解率
(70.5%)
正解率
(0%)
正解率
(35.2%)
- 24. まとめ
• FAの異異常波形をカーネルPCA & One-‐‑‒class SVMを使って検出しようと試みた
• 結果はまちまちだった
• Ebiさんが異異常とみなしている理理由が⾊色々あって、それが各主成分に分かれて
出てくるから以外に難しい
• スパイク型は特に難しい
• その他、考えられる敗因
• プログラムのバグ、操作ミス、ラベリングミス、パラメーターの設定、外
れ値の影響、⾮非線形性をとらえられていない、Ebiʼ’s rule⾃自体...etc
• 毎回⽬目視で確認するのと、解析⼿手法作るの、どっちが⼤大変なんだろうとか途中
で思い始めた