Dルートで行こう

ハック日記

Eメールにおいての部分時系列クラスタによる分析手法のまとめ

アホみたいに難しく書いてあるものが多いがクッソ簡単なので自分なりに分かりやすくまとめる。

 

1.部分時系列とは

(グラフは同じですが、都合よく考えてください)

時系列データを分割したデータ。例えば60分(60点)のデータがあるとする。

何分割するか、何点に分けるかはその人の手法によるが、今回は10点ずつに分割すると

60/10 = 6の部分時系列が得られる。

 

私の卒論では1年分、スパム1500、非スパム1500の3000通ほどのEメール時系列データをクラスタリングし、さらにクラスタリングしたものを予測するのだ。

その予測の正答率を求める。

 

スパム時系列

f:id:relorelo:20151101163247p:plain

非スパム時系列

f:id:relorelo:20151101164021p:plain

 

ちなみに、部分時系列を求めるプログラムは前回の記事にあげてあるのでそれを使って欲しい。

 

データの作り方についてでは

例えば5点ずつ分けるとすれば

         S1  S2  S3  S4 .....etc

P1    5     6    53   23

P2   35   33   ..etc

P3   42

P4   34

P5   343

 

グラフをどないしてクラスタリングするねん!!!ではなく、単に求めたい間隔点を

列にまとめるだけでよい。

 

 

 

2.クラスタ分析について

クラスタ分析を知らないひとはググってからにしてほしい。

今回は非階層型クラスタリングの代表格であるk-means法を使って分析する。

Rでは最初から組み込まれているのでk-meansをすぐに使うことができることもRの良い点だ。

 

kmeans(data,3)

とするとデータが3クラスに分けられる。

kmeansではDTWというデータ間の距離を求めて、クラスタリングしている。

DTWを知らない人は基本中の基本なので、ググってほしい。ものすごく考え方は簡単である。

 

今回は3クラスに分けたが、データ群が大きい場合10-30-40ぐらいにわけてクラスタリングし、それをそれぞれ予測していくことをお勧めするンゴよ

 

多変量時系列解析をしたい場合について

まだ試してはいないが、多変量部分時系列解析も簡単にできる。

 

1.2.を繰り返せば良い。私の場合はspamワードの出現度をまとめた変数spam_fとURL数をまとめたものをurl、そしてIPの出現をまとめたもの(k-meansでは数値しか扱わないので出現度をまとめたものを用意するかもしれん)などの多変量を

それぞれ1.2.の手順にぶちこんでいき、クラスタ結果を行列にして予測に進ませることもよゆーでできる。

 

3. 予測

クラスターしたものを予測していく、今ここに詰まっていて、Rのパッケージのフォレキャストがなんか変になってるのか

平面にしか予測できない。平均移動を取ってるのかもしれんが、これでは予測にならないもしかしたらWekaを使うかもしれない。