マーケットバスケット分析とは?

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

Christopher Bruffaerts

Statistician

スーパーの複数バスケット

店内の商品

all_products_emoticons

バスケット1: {"Bread", "Cheese"}

バスケット2: {"Bread", "Wine" , "Cheese"}

複数のバスケット

100人がスーパーに来たとき、同時に現れるアイテムの関係を見つけられますか?

: Bread と Cheese

bread_cheese

結果: 「もし〜なら、〜」

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

マーケットバスケットの応用

複数バスケットから学ぶ

バスケット

多様な応用例

  • Eコマース: 「この商品を買った人はこれも購入」
  • 小売: 「一緒に販売・陳列」される商品
  • ソーシャル: 友人・つながりの推薦
  • 動画・映画の推薦
Rで学ぶマーケットバスケット分析

Rでの複数バスケット

複数バスケットのデータセットを作成しましょう!

my_baskets = data.frame(
  "Basket" = c(1,1,1,1, 2,2,2, 3,3, 4,4,4, 5,5, 6,6, 7,7),
  "Product" = c("Bread", "Cheese", "Cheese", "Cheese",
                "Bread", "Butter", "Wine",
                "Butter", "Butter",
                "Butter", "Wine", "Wine",
                "Butter", "Cheese",
                "Cheese", "Wine",
                "Wine", "Wine")
)

バスケットの中身を確認

head(my_baskets)
  Basket Product
1      1   Bread
2      1  Cheese
3      1  Cheese
4      1  Cheese
5      2   Bread
6      2  Butter
Rで学ぶマーケットバスケット分析

バスケットの中身は?

質問

  • 異なるアイテムはいくつありますか?
n_distinct(my_baskets$Product)
[1] 4
  • バスケットはいくつありますか?
n_distinct(my_baskets$Basket)
[1] 7
  • 各バスケットのアイテム数は?
df_basket =
  my_baskets %>%
  group_by(Basket) %>%
  summarize(
    n_total = n(),
    n_items = n_distinct(Product))
  Basket n_total n_items
   <dbl>   <int>   <int>
1      1       4       2
2      2       3       3
Rで学ぶマーケットバスケット分析

バスケットはどれくらい大きい?

平均バスケットサイズ

basket_size %>% 
  summarize(
    avg_total_items = mean(n_total), 
    avg_dist_items = mean(n_items))
# A tibble: 1 x 2
  avg_total_items avg_dist_items
            <dbl>          <dbl>
1            2.57           1.86

バスケットサイズの分布

# 重複なしアイテム数の分布
ggplot(df_basket, aes(n_items)) +
  geom_bar()

分布_バスケット

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

特定商品の分析

どのアイテムを見ますか?

  • そのアイテムは全バスケットで何回出現しますか?

  • そのアイテムを含むバスケットはいくつですか?

:

チーズ

Rでチーズを抽出

# チーズを含むバスケット数
my_baskets %>%
  filter(Product == "Cheese")  %>%
  summarize(
    n_tot_items = n(),
    n_basket_item = n_distinct(Basket))
  n_tot_items n_basket_item
1           5             3
Rで学ぶマーケットバスケット分析

アソシエーションルールマイニング

アソシエーションルールマイニング: アイテム集合間の頻出共起関係を見つける手法。

絵文字_矢印

ルール抽出の例:

  • {Bread} $\rightarrow$ {Butter}
  • {Bread, Cheese} $\rightarrow$ {Wine}
Rで学ぶマーケットバスケット分析

次は何を学ぶ?

この後のアジェンダ:

  • 第2章: マーケットバスケット分析の指標と手法
  • 第3章: 可視化
  • 第4章: 事例研究: MovieLensでの映画推薦

movie_lens_logo

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

バスケットで遊んでみましょう!

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

Preparing Video For Download...