2013年4月8日月曜日

kernlabパッケージのspamデータ

最近忙しくて、休みの日も仕事をする日々だったので、
記事が久しぶりになってしまいました。。。


Rのkernlabパッケージに入っているspamデータについて調べてみました。

私は、サンプルデータセットが充実している点がRの良いところの1つだと
思っているのですが、意外と日本語のページでデータそのもののことを
調べたという記事が見つからなかったので、興味のあるところだけを抜き出して
調べてみようというのが、この記事を書く発端です。

私が気になっているのは、このデータがクラス分類するにあたって
ふさわしいデータなのかどうか、ということです。

データが、1つの独立変数を選べば完璧にspam(nonspam)データだけを抽出できる
というものではクラス分類をわざわざ登場させる意味を感じませんし、
逆に全く分離できる希望を持てないような分布であっても、
サンプルとして適用するだけの価値はないようにも思えるのです。

だから、これらを足して2で割ったような感じの特性になっているのが
私はクラス分類のサンプルデータとしてふさわしいデータに思うんですね。

今回は、この視点で書いてみることにしました。
まずは、以下に置いてあるCRANのマニュアルを見てみました。
spamデータのことは、p90あたりに書いてあります。

このマニュアルから分かったことは、こんな感じ。
  •  HP研が収集したデータセットである。
  • 4601通のE-mailについて、スパムか否かを分類した。
    • spamは1813通, nonspamは2788通分である。
  • E-Mail中の単語や文字の出現頻度が示されている57の独立変数と、従属変数で構成されている。
    • 1〜48番目の独立変数は、変数名の出現頻度
    • 49〜54番目の独立変数は、記号文字の出現頻度である。
    • 55〜57番目の独立変数は、大文字の連なりの長さの平均, 最長, 合計を表す。
    • 58番目は従属変数であり、nonspam, spamのどちらかが記載されている。
  • spamは、製品やウェブサイトの広告,楽して儲けられる系のサイト,チェーンメール,アダルトなど。
  • non-spamは、仕事関係や個人のメールが対称。
    • george(データ提供者のご氏名)とかエリアコード650が含まれている単語はnonspamである。 
 
出現頻度と書いてあったので、単なるカウントかな?と思ったのですが、
実際にデータセットを見てみると、数値が小数点が入っていたり、
1以下の数値も出ていたりしました。
だから、単純なカウントではなく、何らかの正規化をかけているように見えます。


次にspamとnonspam別に独立変数別に平均と分散を見てみました。


この結果が以下の通りです。
各列の意味は、次の通りです。
  • spam Avg : spamクラスに該当するデータだけを集めて平均した結果。
  • spam Var : spamクラスに該当するデータだけを集めて分散を求めた結果。
  • nonspam Avg : nonspamクラスに該当するデータだけを集めて平均した結果。
  • nonspam Var : nonspamクラスに該当するデータだけを集めて分散を求めた結果。
  • 偏り: spam Avg / (spam Avg + nonspam Avg) の結果。
    • 0.5よりも小さいほどnonspamに偏って出現しやすい独立変数。
    • 0.5よりも大きいほどspamに偏って出現しやすい独立変数。

spam Avg spam Var nonspam Avg nonspam Var 偏り
make 0.1523 0.0965 0.0735 0.0887 0.6746
address 0.1646 0.1217 0.2445 2.6674 0.4025
all 0.4038 0.2311 0.2006 0.2530 0.6681
num3d 0.1647 4.9243 0.0009 0.0005 0.9946
our 0.5140 0.5001 0.1810 0.3776 0.7395
over 0.1749 0.1036 0.0445 0.0497 0.7970
remove 0.2754 0.3273 0.0094 0.0122 0.9671
internet 0.2081 0.2969 0.0384 0.0611 0.8442
order 0.1701 0.1259 0.0380 0.0394 0.8172
mail 0.3505 0.3986 0.1672 0.4137 0.6771
receive 0.1184 0.0630 0.0217 0.0224 0.8451
will 0.5500 0.4110 0.5363 0.9583 0.5063
people 0.1435 0.1228 0.0617 0.0671 0.6995
report 0.0836 0.1017 0.0424 0.1187 0.6634
addresses 0.1121 0.1499 0.0083 0.0089 0.9309
free 0.5184 1.0265 0.0736 0.3802 0.8757
business 0.2875 0.3922 0.0483 0.0479 0.8560
email 0.3192 0.4437 0.0973 0.1577 0.7664
you 2.2645 2.4551 1.2703 3.2171 0.6406
credit 0.2055 0.6216 0.0076 0.0093 0.9644
your 1.3804 1.5065 0.4387 1.0510 0.7588
font 0.2380 2.0757 0.0452 0.3724 0.8403
num000 0.2471 0.2695 0.0071 0.0046 0.9721
money 0.2129 0.3607 0.0171 0.0738 0.9255
hp 0.0175 0.0258 0.8955 4.2899 0.0191
hpl 0.0092 0.0099 0.4320 1.2216 0.0208
george 0.0015 0.0011 1.2653 18.0844 0.0012
num650 0.0188 0.0928 0.1938 0.4063 0.0884
lab 0.0007 0.0002 0.1628 0.5706 0.0042
labs 0.0060 0.0107 0.1659 0.3272 0.0347
telnet 0.0013 0.0013 0.1060 0.2634 0.0119
num857 0.0005 0.0002 0.0773 0.1757 0.0067
data 0.0146 0.0126 0.1510 0.4946 0.0880
num415 0.0018 0.0013 0.0778 0.1760 0.0223
num857 0.0069 0.0043 0.1695 0.4544 0.0393
technology 0.0295 0.0218 0.1417 0.2484 0.1724
num1999 0.0435 0.0721 0.1977 0.2397 0.1802
parts 0.0047 0.0025 0.0187 0.0786 0.2010
pm 0.0124 0.0080 0.1217 0.3019 0.0927
direct 0.0367 0.0231 0.0831 0.1862 0.3064
cs 0.0001 0.0000 0.0720 0.2133 0.0008
meeting 0.0024 0.0008 0.2168 0.9519 0.0111
original 0.0085 0.0025 0.0706 0.0795 0.1069
project 0.0062 0.0037 0.1266 0.6304 0.0470
re 0.1251 0.1042 0.4158 1.5883 0.2313
edu 0.0147 0.0179 0.2872 1.3292 0.0488
table 0.0012 0.0003 0.0082 0.0094 0.1295
conference 0.0021 0.0007 0.0512 0.1333 0.0394
charSemicolon 0.0206 0.0084 0.0503 0.0920 0.2904
charRoundbracket 0.1090 0.0796 0.1586 0.0679 0.4073
charSquarebracket 0.0082 0.0023 0.0227 0.0182 0.2655
charExclamation 0.5137 0.5538 0.1100 0.6738 0.8237
charDollar 0.1745 0.1299 0.0116 0.0049 0.9374
charHash 0.0789 0.3745 0.0217 0.0595 0.7841
capitalAve 9.5192 2484.6422 2.3773 26.1498 0.8002
capitalLong 104.3933 89571.4926 18.2145 1527.6210 0.8514
capitalTotal 470.6194 680758.9522 161.4709 126549.8115 0.7445


この表の 「偏り」列を見る感じですと、

num3d, remove, addresses, credit, num000, moneyがspamに、
george, lab, num857, cs, project, conference あたりはnonspamに
それぞれ出現しやすい単語?のようです。


逆に、spam, nonspamの両方に出やすいのは、
will, you, addressあたりでしょうか。

これらはクラス分類をするにあたっては
あまり意味をなさない独立変数なのかもしれませんね。


全体的には、多少出現頻度が偏っているんだけど、
必ずしもその独立変数のみではクラス分類できそうもないものばかりで、
クラス分類のし甲斐のあるデータセットになっているように思えました。



 データセットは、あともういくつか調べてみようと思います。

0 件のコメント:

コメントを投稿