2018年2月25日日曜日

Deep Autoencoders

わからないまま寝かせていた AutoEncoder。

H2O の DeepLearningBooklet に、心電図の異常を検知するサンプルコード(R, Python)が入っていました。これ、シンプルでわかりやすいですね。

早速、動かしてみました。
損失関数として平均2乗誤差を用い、その値で異常を判別するようです。
結果は、後付けの3行だけきちんと誤差が大きくなっており、anomaly を検知できています。

R
Reconstruction.MSE
1          0.13085106
2          0.12570196
3          0.13255261
4          0.24606676
5          0.17121093
6          0.11661826
7          0.08483445
8          0.05173467
9          0.06877591
10         0.07171131
11         0.06153831
12         0.05756542
13         0.08888413
14         0.13048295
15         0.17475838
16         0.14830372
17         0.08939488
18         0.08795938
19         0.12276107
20         0.18216751
21         4.20185146
22        10.74289732
23         8.63992039



Python
Reconstruction.MSE
0.13300766148709225
0.1340553663250225
0.14216244835895137
0.26900527031422133
0.18108523873697785
0.1397391203015472
0.11732691621742322
0.07074293797762314
0.08611142459668913
0.08028534762964896
0.06783343065028946
0.07299167554971489
0.10603069145595591
0.14973342730955522
0.19851861019910494
0.16039747123615652
0.09621980071801449
0.1022931414569785
0.1267676964619905
0.2353023143453763
4.383158140645624
10.755036687539317
8.69490793593216


時系列データを扱えるところが強みですね。
例えば、道路の空洞調査では地中レーダの替わりに、ロードノイズを使えるかもしれません。実現すると、技術的にもコスト的にもハードルが下がりますね。

要求精度にもよりますが、時系列データから異常を検知できるツールとして、様々な分野で利用可能性を有しているように見えました。


***************************
20180228追記
以前試したデータにてリベンジを図りましたが、返り討ち。
ま、ほとんど変わらないコードでしたので当然でしょうか。
いずれ何とかしたいですね。
https://phreeqc.blogspot.jp/2017/11/autoencoder.html

0 件のコメント:

コメントを投稿