ラベル itemFrequency の投稿を表示しています。 すべての投稿を表示
ラベル itemFrequency の投稿を表示しています。 すべての投稿を表示

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>
----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------