「いまさら」といわれそうだが、データマイニングという単語が広く
知られ始めたころに、オムツとビールの話が必ずと言ってよいほど、語られた。
"「商品Aを買うと商品Bも買う」のようなルールを簡潔に、{A}⇒{B}と
表すことにする。相関ルールは、通常X⇒Yの形式で表す。ルールの「⇒」
の左辺を条件部(antecedent: left-hand-side or LHS)、右辺を結論部
(consequent: right-hand-side or RHS)と呼ぶ。最も広く知られている
相関ルールを検出するアルゴリズムはAprioriである。"
同志社大学「R、R言語、R環境・・・・・・」より引用
以来、色々な論文を読んだりしたが、「apriori」という単語が出てきて、
もともとの意味は、「あらかじめ決められた」という意味らしいが、そう
いう文脈で使われたのは理解できたが、さらに調べると、IBMが
開発した、アソシエーションルールの関数であることがわかった。
まず、「arules」というパッケージをインストールする。
いつものように身近なミラーサイト(筆者の場合、TSUKUBA)を選び、
> install.packages("arules")
を実行。
 URL 'http://cran.md.tsukuba.ac.jp/bin/windows/contrib/3.1/arules_1.1-6.zip' を試しています 
Content type 'application/zip' length 1803031 bytes (1.7 MB)
 開かれた URL 
downloaded 1.7 MB
 パッケージ ‘arules’ は無事に展開され、MD5 サムもチェックされました 
 ダウンロードされたパッケージは、以下にあります 
        C:\Users\xxxxx\AppData\Local\Temp\RtmpWs7VDR\downloaded_packages
と表示されインストール成功。
その前に、著作権に問題が起きないように、自分の日常生活でスーパーで
買いそうなアイテムを適当に作成し、basket1.csvtとして、作業フォルダーに
保存しておいた。
---2015年6月7日修正(basket1.csvのデータに空の行が入っていたためイタリック体の部分を以下修正します--
meat,potato,milk,carrot
bread,milk,jam,ham,lettuce
rice,potato,carrot,meat,milk
cheese,ham,beer,potato
 
cabbage,beef,carrot
  
juice,water,milk,potato
 
coffee,milk,bread,butter
 
beans,tomato,pasta
  
bread,meat,milk,juice
 
bread,cabbage,chicken,juice
 
> library(arules)
> b.bas<-read.transactions(file="basket1.csv",sep=",",format="basket")
 以下にエラー asMethod(object) : 
  can not coerce list with transactions with duplicated items
重複したitemsがあるとのことで、rm.duplicate=TRUEとすることした。
> b.bas<-read.transactions(file="basket1.csv",sep=",",format="basket",rm.duplicate=TRUE)
ここで「apriori」を適用すると
> b.ap<-apriori(b.bas)
Parameter specification:
 confidence minval smax arem  aval originalSupport support minlen maxlen
        0.8    0.1    1 none FALSE            TRUE     0.1      1     10
 target   ext
  rules FALSE
Algorithmic control:
 filter tree heap memopt load sort verbose
    0.1 TRUE TRUE  FALSE TRUE    2    TRUE
 apriori(b.bas) 中で警告がありました: 
  You chose a very low absolute support count of 1. You might run out of memory! Increase minimum support.
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 ...[22 item(s), 10 transaction(s)] done [0.00s].
sorting and recoding items ... [22 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 4 5 done [0.00s].
writing ... [240 rule(s)] done [0.00s].
creating S4 object  ... done [0.00s].
> inspect(head(sort(b.ap,by="support"),n=5))
   lhs          rhs       support confidence      lift
1 {meat}   => {milk}       0.3          1 1.666667
2 {carrot,
                                        
   meat}   => {potato}     0.2          1 2.500000
3 {meat,
                                          
   potato} => {carrot}     0.2          1 3.333333
4 {carrot, 
                                       
   potato} => {meat}       0.2          1 3.333333
5 {carrot,
                                       
   meat}   => {milk}       0.2          1 1.666667
という結論で、肉を買うと牛乳を買う可能性が高いという結論になった。
それぞれの意味の解釈は次のエントリーで行います。
----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------
 
 
0 件のコメント:
コメントを投稿