2015年5月30日土曜日

つまずかないR言語入門(実際のアソシエーションルール当てはめ)

前回まで、アソシエーションルールに関するパッケージや
ツールについて、自分なりに理解が出来た。
前2回は、自分で勝手に作成したデータなので。
とても実態を反映しているとはいえない。
そこで、ここ1週間ほど、リアルなデータで実証して
みたく、いろいろ悩んでいたところ、あるデータを
入手することができた。
得意先名などを特定できない、災害避難用品の購入データ
を入手出来たので、これで実証実験を行ってみた。

ところが、データを見ると、商品名の入力のバラつきが
大きく、aprioriを当てはめても、明確なルールが得られないことが
わかった。
一例を上げると、「乾パン」と「カンパン」、「乾パン20箱」などは
全て、別物として扱われるため、相関ルールとして
うまく当てはめが出来ないことがわかった。
このような場合、一般には、商品コードか中分類に立ち返って
再度ルールを適用するのだろうが、残念ながら今回はその
ようなデータがない。
仕方がないので、csvファイルを、出来るだけ製品のもつ
性格を変えないように名称を修正して実行した結果が
次のようなものになった。
データとしては23行、最大17アイテム、最小7アイテムがバスケットに
入っているとお考えください。
以下手順。
> library(arules)
要求されたパッケージ Matrix をロード中です

次のパッケージを付け加えます: ‘arules’

The following objects are masked from ‘package:base’:

%in%, write
> bs.bas<-read.transactions(file="saigai.csv",sep=",",
+ format="basket",rm.duplicate=TRUE)
distribution of transactions with duplicates:
items
1 2 4 7 8 9 10 11 12
1 1 1 2 1 11 3 1 1

参考にさせていただいているJIN'S PAGEに従って
「データを処理する際には、まずデータの概観を把握することが重要である。
パッケージarulesには、トランザクションデータのアイテムの頻度の棒グラフを
作成する関数itemFrequencyがある。」
となっていたので、納得して実行した結果は次の通り。


何が何だかわからないが、データを手作業で修正しても、このような
アイテム数なので、真の意味のビッグデータを扱うことの難しさを実感した。

それはさておき、aprioriを実行すると、
> bs2.ap<-apriori(bs.bas)

Parameter specification:
confidence minval smax arem aval originalSupport support minlen
0.8 0.1 1 none FALSE TRUE 0.1 1
maxlen target ext
10 rules FALSE

Algorithmic control:
filter tree heap memopt load sort verbose
0.1 TRUE TRUE FALSE TRUE 2 TRUE

apriori - find association rules with the apriori algorithm
version 4.21 (2004.05.09) (c) 1996-2004 Christian Borgelt
set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[97 item(s), 23 transaction(s)] done [0.00s].
sorting and recoding items ... [18 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 4 done [0.00s].
writing ... [57 rule(s)] done [0.00s].
creating S4 object ... done [0.00s].
となり、
> inspect(head(sort(bs2.ap,by="confidence"),n=5))
lhs rhs support confidence lift
1 {保存用醤油せんべい} => {} 0.1304348 1 1.150000
2 {防災セット} => {乾パン} 0.1304348 1 1.642857
3 {防災セット} => {} 0.1304348 1 1.150000
4 {携帯AMラジオ} => {} 0.1304348 1 1.150000
5 {携帯充電器} => {} 0.1739130 1 1.150000

なんとなく、防災セットを買うひとは乾パンも買うのだろうと、
ごく自然なルールが導出されて、納得。

たまたま、本日2015年5月30日20時23分に小笠原沖で
マグニチュード8.5の巨大地震が起きて、筆者の地域も震度4で
かなり怖い思いをした。
たまたまデータをみて、改めて防災用品と備蓄食料を用意しなくては
ならないと、実感した。

support、confidence、liftについて触れようと思ったが、次の機会に
いたします。
p>
----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

0 件のコメント:

コメントを投稿