アソシエーションルールの抽出

Rで学ぶマーケットバスケット分析

Christopher Bruffaerts

Statistician

aprioriで頻出アイテム集合

最小サイズ2の頻出アイテム集合を抽出

# 最も頻出するアイテム集合を抽出
itemsets_freq2 = 
  apriori(Groceries,
          parameter = list(supp = 0.01, 
                           minlen = 2,
                           target = 'frequent'
                         ))

頻出アイテム集合のソートと確認

inspect(head(sort(itemsets_freq2, by="support")))
   items                              support    count
[1] {other vegetables,whole milk}      0.07483477 736  
[2] {whole milk,rolls/buns}            0.05663447 557  
[3] {whole milk,yogurt}                0.05602440 551  
[4] {root vegetables,whole milk}       0.04890696 481  
[5] {root vegetables,other vegetables} 0.04738180 466  
[6] {other vegetables,yogurt}          0.04341637 427
Rで学ぶマーケットバスケット分析

aprioriでルール抽出

rules = apriori(Groceries, parameter = list(supp=.001,
                                            conf=.5,
                                            minlen=2,
                                            target='rules'
                 ))
inspect(head(sort(rules, by="confidence")))
   lhs                                           rhs                support     confidence lift     count
[1] {rice,sugar}                               => {whole milk}       0.001220132 1          3.913649 12   
[2] {canned fish,hygiene articles}             => {whole milk}       0.001118454 1          3.913649 11   
[3] {root vegetables,butter,rice}              => {whole milk}       0.001016777 1          3.913649 10   
[4] {root vegetables,whipped/sour cream,flour} => {whole milk}       0.001728521 1          3.913649 17   
[5] {butter,soft cheese,domestic eggs}         => {whole milk}       0.001016777 1          3.913649 10   
[6] {citrus fruit,root vegetables,soft cheese} => {other vegetables} 0.001016777 1          5.168156 10
Rで学ぶマーケットバスケット分析

arulesのパラメータを選ぶ

異なる信頼度をループで試す

# 信頼度の集合
confidenceLevels = seq(from=0.1, to=0.9, by =0.1)

# 空ベクトルを作成
rules_sup0005 = NULL

# サポート0.5%でのApriori
for (i in 1:length(confidenceLevels)) {
  rules_sup0005[i] = 
    length(apriori(Groceries, 
                   parameter=list(supp=0.005,
                                  conf=confidenceLevels[i],
                                  target="rules")))
}

library(ggplot2)
# サポート0.5%で見つかったルール数
qplot(confidenceLevels, rules_sup0005, 
      geom=c("point", "line"),xlab="Confidence level",
      ylab="Number of rules found") +
  theme_bw()

nb_rules_groceries

Rで学ぶマーケットバスケット分析

ルールのサブセット化

# ルールのサブセット化
inspect(subset(rules, subset = 
               items %in% c("soft cheese","whole milk") &
               confidence >.95))
     lhs                                                             rhs                support     confidence lift     count
[1]  {rice,sugar}                                                 => {whole milk}       0.001220132 1          3.913649 12   
[2]  {canned fish,hygiene articles}                               => {whole milk}       0.001118454 1          3.913649 11   
[3]  {root vegetables,butter,rice}                                => {whole milk}       0.001016777 1          3.913649 10

サブセット化の柔軟性

inspect(subset(rules, subset=items %ain% c("soft cheese","whole milk") & confidence >.95))
inspect(subset(rules, subset=rhs %in% "whole milk" & lift >3 & confidence >0.95))
Rで学ぶマーケットバスケット分析

映画データセットを掘り下げよう!

Rで学ぶマーケットバスケット分析

Preparing Video For Download...