今日はPAAとSAXについて調べていました。インターネット上で探しても、英語の説明しか出てこないんで結構困ります。
なので、助手のO先生に講義をしていただいて概要をつかんでみました。PAA(Piecewise Aggregate Approximation)は、ある時系列データを特定の長さに分割して、その分割した区間で1つの値を出していくというアルゴリズム。たとえば、長さが100の時系列を10個に区切るとすると、最終的には10個のPAA変換されたデータ列ができます。こういう意味で、次元の削減(Dimension Reduction)ができるってわけですね。なるほど〜。
時系列データで「次元」というと、データの数のことを指すっぽいです。今までは、ベクトルみたいに、それぞれ独立したデータ列のようなイメージだったので、今日は1つ勉強になりました。
で、SAX(Symbolic Aggregate Approximation)は、PAAで変換した値を記号に変換していく部分が付け加わります。変換する基準は、正規分布(ガウス分布)に従うとして、記号数で確率分布を分割。そこにPAA変換した値と比較して記号を割り当てます。
SAXを使えば、PAAの利点とともに、距離計算の時に利点があります。同様にSAX変換したデータと距離を計算すると、実際のデータよりも必ず小さい値が出ることが証明されています。なので、距離が離れたデータは計算から除外したい場合に、SAX表現されたデータで求めた距離でその閾値を超えているなら、明らかに計算から除外できます。ここは、なかなか使いやすそうです。
実際にSAXを使うときは、単純にPAAしてから記号を割り当てるだけでなく、データをスライディングさせながら記号を割り当てるので、次元数自体はあまり減ることないそうです。
(10/3 追記)ついでにSAXといえば、SaxophoneとThe Simple API for XMLとかがあります。 有名度だけで比較するなら、Saxophone > The Simple API for XML > Symbolic Aggregate Approximationってとこですか。いや、その人の環境にもよるんでしょうが。
コメントする