Dルートで行こう

ハック日記

書こうかどうか迷ったけど書く

前にはてなブログがつながんねええええええええ!という記事を書いた。

 

原因がはっきりしたので記しておく

 

私の環境は

Mac

Chrome

 

そしてプラグインにはadblock とcaptureなんとかとはてなブログいいね通知

の3つのプラグインがはいっている

 

最初はクロームが重いだけだと気にしていなかったがアダルトサイトを訪問しようとしたら入れなかったり、海外フォーラムにアクセスできなかったりしていた

 

明らかに重いのではなくネットワークが異常を来していると感づいた。

まあまず、疑うのはプラグインだよな。

 

プラグインを全部無効にしてみたら、今までアクセスできなかったアダルトサイトにはアクセスできた。やった!これでエロ動画三昧だ!と思って一つづつプラグインごと有効無効を繰り返していると

 

はてなブログプラグインがネットワークを遮断している原因だとわかった。

 

対処はせんでいい、もう使わんから

 

疑っている人はぜひ試しにmac環境でchromeはてなぶろぐプラグインを入れて

thisav.comにGo!接続すらできないぜ!

 

データが変なまま解析結果を出してみる4.09999

前回の記事で4.09999が続く変なデータが混ざっているといいましたが、

2/3がそのおかしいデータなことに木がつきました

 

とりあえず

 

S 1  S 2  S 3  S 4  S 5  S 6  S 7  S 8  S 9 S 10 S 11 S 12 S 13 S 14 S 15 S 16 S 17 
   7    4    4   10    6    4   10    1    8   10    8    7    8    4    1   10    9 
S 18 S 19 S 20 S 21 S 22 S 23 S 24 S 25 S 26 S 27 S 28 S 29 S 30 S 31 S 32 S 33 S 34 
   9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9 
S 35 S 36 S 37 S 38 S 39 S 40 S 41 S 42 S 43 S 44 S 45 S 46 S 47 S 48 S 49 S 50 S 51 
   9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9 
S 52 S 53 S 54 S 55 S 56 S 57 S 58 S 59 S 60 S 61 S 62 S 63 S 64 S 65 S 66 S 67 S 68 
   9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9 
S 69 S 70 S 71 S 72 S 73 S 74 S 75 S 76 S 77 S 78 S 79 S 80 S 81 S 82 S 83 S 84  N 1 
   9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    2 
 N 2  N 3  N 4  N 5  N 6  N 7  N 8  N 9 N 10 N 11 N 12 N 13 N 14 N 15 N 16 N 17 N 18 
   3    3    3    5    2    2    5    3    2    2    2    3    2    2    3    3    9 
N 19 N 20 N 21 N 22 N 23 N 24 N 25 N 26 N 27 N 28 N 29 N 30 N 31 N 32 N 33 N 34 N 35 
   9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9 
N 36 N 37 N 38 N 39 N 40 N 41 N 42 N 43 N 44 N 45 N 46 N 47 N 48 N 49 N 50 N 51 N 52 
   9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9 
N 53 N 54 N 55 N 56 N 57 N 58 N 59 N 60 N 61 N 62 N 63 N 64 N 65 N 66 N 67 N 68 N 69 
   9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9    9 
N 70 N 71 N 72 N 73 N 74 N 75 N 76 N 77 N 78 N 79 N 80 
   9    9    9    9    9    9    9    9    9    9    9 

のうち9にクラスタリングされているのがそうなので9以外のところだけ抜き出して考察してみます。

1.スパムメール/部分時系列の特徴

S 1  S 2  S 3  S 4  S 5  S 6  S 7  S 8  S 9 S 10 S 11 S 12 S 13 S 14 S 15 S 16  
   7    4    4   10    6    4   10    1    8   10    8    7    8    4    1   10  
内訳
1-2
2-0
3-0
4-4
5-0
6-1
7-2
8-3
9-なし
10-4


特徴的部分時系列 4 8 10


2.非スパムメール

N1 N 2  N 3  N 4  N 5  N 6  N 7  N 8  N 9 N 10 N 11 N 12 N 13 N 14 N 15 N 16 N 17 
 3  3    3    3    5    2    2    5    3    2    2    2    3    2    2    3    3  

1-0
2-7
3-8
4-0
5-2
6-0
7-0
8-0
9-なし
10-0


特徴的時系列 2,3



まとめ

スパムメール
特徴的部分時系列 4 8 10
スパムメール
特徴的時系列 2 3


スパムメールと、非スパムメールのスパムワード特徴的時系列はかなり違う。
スパムメールの特徴的時系列がバラバラなのはスパマースパムフィルターに引っかからないように努力しているので、アダルトや、広告、競馬などのワードの引っ掛かり具合が均等かつ散らばっているからだと思う。
あたりまえだが、非スパムメールはほぼスパムワードが含んでないので回帰直線にしたばあい横一直線の部分時系列を多く含んでいる。なので2,3に集中的に集まってしまったのだと推測できる。

残るは予測だが、こればかりはデータが揃わないと意味のない予測になってしまうので、長い長い解析を待つ次第。
あと、各クラスタをプロットして図にしようとしたが、時系列図にするにはtsでまとめ直さないといけない。
解析には必要がないコマンドがいるので、面倒なので放置。


考察としてはいくらでもできるけど、これを予測したところで意味があるのかは疑問。
例えば20点の次の時系列点を予測したところで、即座にフィルタリングできないし、

届いてからだいぶ経ってフィルタリングすることになる。役立てるとしたら他分野だと思う。

突っ込まれたら相当面倒くさそう。


とりあえずクラスター分析の結果

データが変になってて4.0999がずっと続くデータ群が混ざってた

なんでだ?もう一度、ARFFを生成する。

 

kmeans(data,10)

として、結果、9としてクラスタリングされているところがエラーデータが入っているところである。

 

 

これでは未来予測ができないため、ARFFを生成しなおすこと。

もっともこれが長すぎるんだよなー

 

V1 V2 V3 V4 V5 V6 V7 1 0.15051905 0.11111303 0.08689429 0.05814345 0.10060901 0.17355382 0.24639458 2 0.08201033 0.02942201 0.19695577 0.01397987 0.05490499 0.01971004 0.12136231 3 0.02456705 0.03583398 0.05605586 0.02563757 0.02708417 0.05024299 0.03704866 4 0.07645064 0.06725825 0.04126361 0.08251016 0.06736277 0.17527185 0.09595508 5 0.18146724 0.07986208 0.07152949 0.06638104 0.15891403 0.09573689 0.06006534 6 0.04650238 0.28669432 0.05736715 0.33123675 0.10594196 0.36084466 0.09539610 7 0.08900558 0.15440569 0.08873345 0.05621259 0.08653515 0.10619820 0.05241333 8 0.02303384 0.02832856 0.02365860 0.12135132 0.02543125 0.03986383 0.01876467 9 0.05000250 0.04990324 0.04954197 0.04959447 0.04987368 0.04963051 0.04966239 10 0.04128750 0.02179740 0.02974798 0.05098895 0.03635141 0.02202367 0.06361833 V8 V9 V10 V11 V12 V13 V14 1 0.13231054 0.04750506 0.08714557 0.06180651 0.05548781 0.13164503 0.07235220 2 0.08174984 0.08390074 0.07414785 0.12957436 0.02994856 0.28587724 0.17720921 3 0.02530756 0.03585255 0.01638955 0.01364915 0.02312442 0.02680709 0.03222984 4 0.28091759 0.05851232 0.07610346 0.12306854 0.07228057 0.13434680 0.10876372 5 0.04785498 0.05788525 0.15055373 0.11640936 0.08374332 0.09036293 0.10293018 6 0.09441708 0.03112743 0.08945908 0.10729462 0.08501702 0.09128429 0.08401826 7 0.04485617 0.07682929 0.10394430 0.08612278 0.15578934 0.06119801 0.14575737 8 0.02100057 0.04966900 0.01987728 0.03275165 0.02727507 0.02090739 0.02433058 9 0.04948593 0.04931688 0.04916071 0.05051089 0.04994231 0.04961246 0.04995482 10 0.03931518 0.05648017 0.07055847 0.03100452 0.03237505 0.04969912 0.04275162 V15 V16 V17 V18 V19 V20 1 0.19750724 0.07093081 0.04579867 0.30872945 0.09257030 0.08314851 2 0.07381282 0.35129993 0.13923400 0.09196393 0.06488544 0.09364450 3 0.03132837 0.02821265 0.03389723 0.07103236 0.03822763 0.04830432 4 0.03845073 0.07020419 0.07709490 0.06477407 0.08609315 0.07001493 5 0.10866080 0.07594976 0.10570399 0.06840152 0.15849341 0.08410885 6 0.08811700 0.00000000 0.00000000 0.26671688 0.08692366 0.33371801 7 0.29819871 0.18632273 0.10146140 0.08320844 0.04069875 0.12452295 8 0.01427214 0.02010961 0.02086475 0.01848397 0.01054493 0.04429043 9 0.04950415 0.04950689 0.05007281 0.04960761 0.04981911 0.04967756 10 0.04773774 0.06152596 0.02793576 0.02253948 0.03033455 0.01874614 Clustering vector: S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 S 9 S 10 S 11 S 12 S 13 S 14 S 15 S 16 S 17 7 5 5 4 7 5 4 2 6 4 1 7 1 5 2 4 9 S 18 S 19 S 20 S 21 S 22 S 23 S 24 S 25 S 26 S 27 S 28 S 29 S 30 S 31 S 32 S 33 S 34 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 S 35 S 36 S 37 S 38 S 39 S 40 S 41 S 42 S 43 S 44 S 45 S 46 S 47 S 48 S 49 S 50 S 51 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 S 52 S 53 S 54 S 55 S 56 S 57 S 58 S 59 S 60 S 61 S 62 S 63 S 64 S 65 S 66 S 67 S 68 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 S 69 S 70 S 71 S 72 S 73 S 74 S 75 S 76 S 77 S 78 S 79 S 80 S 81 S 82 S 83 S 84 N 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 N 2 N 3 N 4 N 5 N 6 N 7 N 8 N 9 N 10 N 11 N 12 N 13 N 14 N 15 N 16 N 17 N 18 8 3 3 10 3 3 10 9 10 10 9 3 9 3 3 8 9 N 19 N 20 N 21 N 22 N 23 N 24 N 25 N 26 N 27 N 28 N 29 N 30 N 31 N 32 N 33 N 34 N 35 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 N 36 N 37 N 38 N 39 N 40 N 41 N 42 N 43 N 44 N 45 N 46 N 47 N 48 N 49 N 50 N 51 N 52 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 N 53 N 54 N 55 N 56 N 57 N 58 N 59 N 60 N 61 N 62 N 63 N 64 N 65 N 66 N 67 N 68 N 69 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 N 70 N 71 N 72 N 73 N 74 N 75 N 76 N 77 N 78 N 79 N 80 9 9 9 9 9 9 9 9 9 9 9 Within cluster sum of squares by cluster: [1] 0.080839822 0.061849275 0.059933347 0.164888163 0.208840859 0.000000000 [7] 0.179313724 0.004250055 0.046149759 0.050307240 (between_SS / total_SS = 73.0 %) Available components: [1] "cluster" "centers" "totss" "withinss" "tot.withinss" [6] "betweenss" "size" "iter" "ifault" > km<-kmeans(All,10) > km K-means clustering with 10 clusters of sizes 2, 8, 7, 4, 2, 1, 2, 3, 131, 4 Cluster means: V1 V2 V3 V4 V5 V6 V7 1 0.08201033 0.02942201 0.19695577 0.01397987 0.05490499 0.01971004 0.12136231 2 0.03388154 0.03965144 0.03826052 0.02961422 0.01822269 0.03752737 0.05596367 3 0.03002963 0.03038537 0.04323270 0.05582029 0.03948083 0.04351478 0.01983666 4 0.18146724 0.07986208 0.07152949 0.06638104 0.15891403 0.09573689 0.06006534 5 0.06655727 0.02036388 0.03665185 0.07314046 0.06715090 0.01918982 0.06716161 6 0.08424908 0.31203602 0.01450600 0.00000000 0.07890223 0.09211053 0.06993539 7 0.09138383 0.07559052 0.12584717 0.08431888 0.09035161 0.11324204 0.04365231 8 0.11584682 0.16964012 0.07705191 0.14917455 0.10238666 0.23598410 0.19606175 9 0.04969798 0.04986930 0.04996225 0.04999109 0.04999109 0.04999109 0.04999109 10 0.07645064 0.06725825 0.04126361 0.08251016 0.06736277 0.17527185 0.09595508 V8 V9 V10 V11 V12 V13 V14 1 0.08174984 0.08390074 0.07414785 0.12957436 0.02994856 0.28587724 0.17720921 2 0.02055272 0.02874437 0.03315319 0.02496191 0.03671206 0.03888470 0.03745392 3 0.03067258 0.04254046 0.01657129 0.03376164 0.02734452 0.02431346 0.03494340 4 0.04785498 0.05788525 0.15055373 0.11640936 0.08374332 0.09036293 0.10293018 5 0.05944083 0.08229872 0.08237569 0.04983458 0.01831223 0.04796260 0.04445320 6 0.03645413 0.14325149 0.12654135 0.09180328 0.07847151 0.06990132 0.26361137 7 0.04905719 0.04361819 0.09264577 0.08328253 0.19444826 0.05684636 0.08683037 8 0.11967939 0.04204585 0.08791674 0.07696921 0.06533088 0.11819145 0.07624089 9 0.04999109 0.04999109 0.04999109 0.04999109 0.04999109 0.04999109 0.04999109 10 0.28091759 0.05851232 0.07610346 0.12306854 0.07228057 0.13434680 0.10876372 V15 V16 V17 V18 V19 V20 1 0.07381282 0.35129993 0.13923400 0.09196393 0.06488544 0.09364450 2 0.02559775 0.03332771 0.03751163 0.03514748 0.04793464 0.02563153 3 0.03005986 0.02501693 0.03168169 0.05863327 0.02019757 0.05493566 4 0.10866080 0.07594976 0.10570399 0.06840152 0.15849341 0.08410885 5 0.07802679 0.09434381 0.02887362 0.02693280 0.02121222 0.01940033 6 0.33974470 0.00000000 0.11312938 0.03775841 0.01248662 0.16614342 7 0.27742572 0.27948409 0.09562741 0.10593346 0.05480481 0.10371272 8 0.16104382 0.04728721 0.03053245 0.29472526 0.09068809 0.16667168 9 0.04999109 0.04999109 0.04999109 0.04999109 0.04999109 0.04999109 10 0.03845073 0.07020419 0.07709490 0.06477407 0.08609315 0.07001493

Clustering vector: S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 S 9 S 10 S 11 S 12 S 13 S 14 S 15 S 16 S 17 7 4 4 10 6 4 10 1 8 10 8 7 8 4 1 10 9 S 18 S 19 S 20 S 21 S 22 S 23 S 24 S 25 S 26 S 27 S 28 S 29 S 30 S 31 S 32 S 33 S 34 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 S 35 S 36 S 37 S 38 S 39 S 40 S 41 S 42 S 43 S 44 S 45 S 46 S 47 S 48 S 49 S 50 S 51 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 S 52 S 53 S 54 S 55 S 56 S 57 S 58 S 59 S 60 S 61 S 62 S 63 S 64 S 65 S 66 S 67 S 68 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 S 69 S 70 S 71 S 72 S 73 S 74 S 75 S 76 S 77 S 78 S 79 S 80 S 81 S 82 S 83 S 84 N 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 2 N 2 N 3 N 4 N 5 N 6 N 7 N 8 N 9 N 10 N 11 N 12 N 13 N 14 N 15 N 16 N 17 N 18 3 3 3 5 2 2 5 3 2 2 2 3 2 2 3 3 9 N 19 N 20 N 21 N 22 N 23 N 24 N 25 N 26 N 27 N 28 N 29 N 30 N 31 N 32 N 33 N 34 N 35 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 N 36 N 37 N 38 N 39 N 40 N 41 N 42 N 43 N 44 N 45 N 46 N 47 N 48 N 49 N 50 N 51 N 52 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 N 53 N 54 N 55 N 56 N 57 N 58 N 59 N 60 N 61 N 62 N 63 N 64 N 65 N 66 N 67 N 68 N 69 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 N 70 N 71 N 72 N 73 N 74 N 75 N 76 N 77 N 78 N 79 N 80 9 9 9 9 9 9 9 9 9 9 9

 




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を使うかもしれない。

 

 

 

滑走窓方式データ整形 Rscript

滑走窓方でなくても使えるスクリプトです。

とりあえず部分時系列を得たい方推奨です。

 

ans<-spliting(data,1,3500,20)

 

kmeans(ans,3)

 

 

 

data:時系列データ。複数行不可 

start:与えた行列のスタートしたい地点。1が推奨

end:与えた行列の終わりにしたい地点。行列最終行推奨

point:分割地点、僕の場合は20とか15とか

 

分割で余った部分は全て切り捨てられる仕組みです。

最終的にデータフレームにしています。それとラベルが好みでない方はご自分で。

 

spliting <- function(data,start,end,point){

ncolnum<-end%/%point
print(ncolnum)
kazu<-point*ncolnum

#program return this array
#moto <- matrix(start:kazu, nrow=point, ncol=ncolnum)


moto<-c()
#print(moto)

kaisu <- 1
name = c()

ma<-c()

for(ii in 1:ncolnum){


newcol<-paste("R",ii)
name <- rbind (name, newcol)



mb<-c() #初期化

for(iii in 1:point){
#moto[ii,iii]<-data[kaisu]
kaisu<-kaisu+1
mb<-c(mb, data[kaisu])
}

moto<-rbind(moto,mb)

}

rownames(moto) <- c(name) # 列の名前
# 列の名前
moto <- as.data.frame(moto)
return(moto)

}

 

 

Rscript をテストした

行のラベルを動的に配置することができるか、テスト

 

test <- function(){

 

x <- matrix(1:2, nrow=1, ncol=2) # 行列
rownames(x) <- c("up") # 行

xx <-c("unchi")
xxx <-c("unchi2")
xx <- rbind ( xx, xxx )

colnames(x) <- c(xx) # 列の名前

return(x)


}

 

> aaa<-tesya()
> aaa
   unchi unchi2
up     1      2

なるほどー

データサイエンティスト養成本を買った感想

どことは言わんが、ネットで持ち上げられているデータサイエンティストの入門書?を買ってみた。

 

期待していたより簡略で分かりやすい本であり、ネットで調べるよりも圧倒的な時間コスト削減に役立っている書籍だと思った。

 

私が前回記事に書いたARIMAモデルも取り上げられていた。

あまりにも網羅的すぎるのか、とりあえず話題な解析手法を取り上げるだけ取り上げて

なぜこのモデルが注視されているのか、そもそもこの解析手法はどんなデータにフィットしているのかといった説明が省かれているのは気にかかった。

 

ARIMAモデルはBitcoinや株、FXなど0円にはならないが和文差分で値動きするようなものに有効。そのぐらいは書いておいても損はないと思ってる。

 

スパムメールも1日から7日まで絶対1通は届くものであり、ちょっと着目してみたかっただけだよ??

 

 

とりあえずは、ネットで調べれるぐらいのものであって、その時間をケチりたいなら買って損はないと思う。

アマゾンで注文して届くまでのワクワクも楽しめて良いのだ。

DTWと基準例分割テストを明日からしてみる。

この3週間はある一定区間に区切って合計スパムメール数を予測解析検討してきたが、実際やりたいと思っているのは、決定木分析であり、時系列に並んだデータの決定木分析になる。

 

代表的なものはDTWと基準例分割テストになるがDTWのアルゴリズムは転がっているものの基準値分割テストのものはあまりうまく理解できなかった。

 

とりあえず、DTWは一時間ずつもしくは数十通にまとめた時系列データを一つとし

3000通のメールを全てグループにわける、

そのグループでわけたもののそれぞれをユーグリット距離(中学生でもわかる)をもとめいろいろすると。。。

 

そこからスパムだとかスパムじゃないとかわかるの??って思うが

やってくしかねえ!と思う。

いやー拙者学習不足でござった

前に書いた記事に横ばいのArimaモデルから生成される予測を書いたのでござるが

 

自己回帰和分平均にギザギザを求めている方がバカでござった。

改めて訓練データの分散を見てみるときれいにギザギザがなっており下りもしないが上がりもしないものであり、移動平均するとまっすぐになるのだ。

 

つまり、あのモデルは間違っておらず予測も間違っていない。

いろんなところを見回ったが、あげるか下げるかを予測できるのみっぽいので実質あまり効果ない?

一応卒論に書くつもりはいるが

Arimaモデル生成とbox検査を行った結果

This Script http://www.ec.kansai-u.ac.jp/user/arakit/documents/lbrts.pdf 
ちなみにRをものすごく網羅的に詳しく説明してあるため有用的と言える。

ここからの引用??

http://www.di.fc.ul.pt/~jpn/r/ts/index.html




>
plotForecastErrors <- function(forecasterrors) + { + # 予測誤差のヒストグラム(赤色)の作成 + mybinsize <- IQR(forecasterrors)/4 + mymin <- min(forecasterrors)*3 + mymax <- max(forecasterrors)*3 + mybins <- seq(mymin, mymax, mybinsize) + hist(forecasterrors, col="red", freq=FALSE, breaks=mybins) + # ヒストグラムの下の面積を 1 とするために,freq=FALSE とする + mysd <- sd(forecasterrors) + # 平均が 0,標準偏差が mysd の正規分布に従うデータを生成 + mynorm <- rnorm(10000, mean=0, sd=mysd) + myhist <- hist(mynorm, plot=FALSE, breaks=mybins) + # 予測誤差のヒストグラム正規分布のカーブを重ねて描く + points(myhist$mids, myhist$density, type="l", col="blue", lwd=2) + } > > plotForecastErrors(zkunren2$residuals)




>
fore<-forecast(zkunren2) > plotForecastErrors(fore$residuals)



>
Box.test(fore$residuals, lag=20, type="Ljung-Box") Box-Ljung test data: fore$residuals X-squared = 100.86, df = 20, p-value = 0.04364


とりあえず要約すると,作ったArimaモデルが本当にフィットした予測なのかどうかをBoxテストで
予測残差をしばき回している。


p値とは仮説が正しい上で検定統計量の値より大きくなる確率のことである。とりあえず、正規分布を思い出せばいい。有意水準が5%

予測誤差の平均

とりあえず予測誤差の正規分布

f:id:relorelo:20151027094459p:plain

 

めっちゃなだらか、やはりモデルが悪いんじゃないかー



スパムメールのモデルがクソすぎて悩む

varモデルを作成し、多変量変数を用いた予測をしてみた。

> st.vr<-VAR(day3,p=VARselect(day3,lag.max=365)$selection[1])

>day3
Time Series:
Start = 1 
End = 365 
Frequency = 1 

V8 V9 V10 V11 V12 1 0.35347648 0.06539085 13.358882 2 4 2 0.33842754 0.06629072 12.042468 1 6 3 0.53639067 0.11840737 16.747672 1 8 4 0.21693789 0.05858025 12.262753 1 5 5 0.24121483 0.04886615 11.363155 1 6 6 0.55621986 0.07467235 18.796804 3 7 7 0.72545002 0.08605733 23.903614 6 6 8 0.79189871 0.08418996 19.307613 3 8 9 0.83994483 0.08480301 32.862514 6 5
...
365日分のメールデータ


> abc<-(forecast(st.vr))
> plot(abc)

f:id:relorelo:20151027061116p:plain

 

 

図で見ると青い線がforecastになる、実に横ばいといったところ。

そんなのありえるはずがなく少し怒っているのだ。

 

次はweek、365日を7日、53回計測にして予測

 

 

f:id:relorelo:20151027062618p:plain

 

実際

f:id:relorelo:20151027062558p:plain

 

 

これはまずいでござる…

これはまずいでござる…

記事更新が遅れたのはhatenabogが異様に遅かったからだ

快適快適!な回線ではてなブログにいざ記事を書きに行こうと思ったら

ものすごく読み込みに時間がかかった

特にヘッダーの読み込みが遅くうんこうんこしていたわけだが

 

やっとヘッダーが読み込まれ記事を書くをくりっこしたところ

プログレスの丸いやつが回転すること10分読み込まれなかったので

日にちを変えてなんども試したところ、読み込みは不可能といったことがこの3日。

実は2週間前からヘッダー読み込みが遅く悩んでいたのだが、

記事を書くボタンが反応することはしていたのでかけていた。

たまに公開ボタンや下書き保存するボタンがなくなっていたりしたわけだが、

 

なぜか今になってかけるようになったのだ。

不思議であーる。

 

ちなみに自分の記事だけでなく、キャッシュを消した状態でほかの人の記事も覗いていたのだが、全くもって読み込みが遅かった。

 

 

作業メモ

Rでglmを実行するとこうなった。

factorでnon-spamspamの2クラスに分けていることが原因

 

> fit <- glm(spam ~ log.time, data = k, family = poisson)
Error in if (any(y < 0)) stop("negative values not allowed for the 'Poisson' family") :
missing value where TRUE/FALSE needed
In addition: Warning message:
In Ops.factor(y, 0) : ‘<’ not meaningful for factors

 

あと、ボアソン分布を少し勘違いしていたこともあって訂正することにした。

1時間区画でボアソンしたいので1時間区画ごとにメールが何通届くかカウントするプログラムを今から作成する。

1カ月、1日もカウントボアソン!ボアソン!

 

今まで目はそむけてきたけど、こういうのやっぱりやっとかないと。

作業メモ

kaiseki_data.arff から 余計なものを削除する

 

40119,1199686935,3,20498,30870,text,non-multipart,2,0.06931702,0.01223242,1,spam
40714,1201049779,0,22059,30870,text,non-multipart,2,0.07904412,0.01102941,2,spam
40712,1202712729,3,21523,30870,text,non-multipart,4,0.04087425,0.01107011,1,spam
40894,1202808349,3,21523,30870,text,non-multipart,4,0.04087425,0.01107011,1,spam
40265,1206348869,6,20405,30870,text,non-multipart,5,0.03294393,0.00981308,1.08544818,spam
40441,1206507179,3,20405,30870,text,non-multipart,5,0.03294393,0.00981308,1.08544818,spam
40892,1207483385,3,20404,30870,text,non-multipart,4,0.04645622,0.00982728,1,spam
40729,1208636873,0,20404,30870,text,non-multipart,4,0.04645622,0.00982728,1,spam