強弱と高低

Python3をメインに

経験的モード分解(Empirical Mode Decomposition)とは

経験的モード分解とは

Huangらによって提案された時系列信号を非定常・非線形な時間-周波数な空間に変換する手法のことで, 大まかな理解として, もともとの信号 x(t) を固有モード関数IMF(Intrinsic Mode Function)と残滓に分解するということを頭に入れておけば良い.

分解するということ

信号を分解する手法は従来から存在しており, FFTやウェーブレット変換がある. これは大学の授業でも扱うくらい古典的で強い手法だ. では何がEMDと違うのか.

FFTやウェーブレット変換はsin関数等の基底を仮定して周波数領域へと変換する一方, EMDは所謂ヒューリスティックな変換を行う. 基底の仮定を置かずに信号を順々に分解していき閾値でもってループの終了とする.

アルゴリズム

これはすでに様々な論文が出回っており再掲するのも忍びない.が, 引用させてもらう.

1. 入力信号 x_0(t)の全ての極値を検出する
2. 極大点と極小点をそれぞれ補間し,上側包絡線 emax(t)と下側包絡線 emin(t)を得る
3. 上側包絡線と下側包絡線の局所平均m(t) = ( emin(t) + emax(t) ) / 2 を算出する
4. 入力と局所平均の差分 y(t) = x(t) - m(t)を入力とみなして 1~4 を繰り返す。
5. 局所平均の標準偏差が閾値以下になった時点で,y(t) を IMF とみなし,ループを終了する
6. 入力信号と IMF の残差 x1(t) = x0(t) - y(t)を新たな入力信号として 1~6 を繰り返す
7. 全ての IMF を抽出したら(x_n(t)の極値が1 つになったら)終了する

出典:http://old.acoust.ias.sci.waseda.ac.jp/publications/happyou/asj/asj-yatabe-2012sep.pdf

要するになにか

暴論ではあるが, EMDは入力信号を,時間軸を中心とした信号に分解することと言って良いかもしれない. 信号の平均が0になるような信号をIMFとしているため波形全体として上下のトレンドがあるような信号は存在しない.

例えば、下のようなトレンドのある信号は, sin波のような切片が存在しない平均面積0の波形に分解できるのだろう. http://touki-tousi.com/wp-content/uploads/2015/09/943578ab5a1148ce847c2eb36745c84d.jpg

何に使うのか

主成分が出てくることから, 支配的な振動を抽出できるという仮説が成り立ち,複雑にノイズが入り込んだ信号波形から,対象の長期信号を取得するような「変調」に使うことができる.そういった考え方の一つとしてノイズ除去がある.IMFの中にホワイトノイズのようなものがあったらそれを削除すれば元々の信号からノイズを削減できたことになる.

昨今の深層学習の成果では, EMDと同じように「信号の分解を何らかの仮定をおかずに行う」ことができてきている.例えば,時間方向での畳込みは,FFTのような操作と同等と解釈することができるということだ. こうした,データに語らせる方法が使えない場合において,EMDのようなヒューリスティックな手法は試してみる価値はあるのだろうと思う.

修正履歴

[2018-06-06] 深層学習への言及を追加した