Slide 1

Slide 1 text

コサイン類似度を用いた クラスタリング @bob3bob3 Tokyo.R #54 2016/06/19

Slide 2

Slide 2 text

お伝えしたいこと ● いわゆるビッグデータによくあるスパース な行列のクラスタリングにはコサイン類似 度を使うといい感じだよ。 ● コサイン類似度を用いたクラスタリングは skmeansパッケージで実行できるよ。 ● このLTの内容は『マーケティング・サイエ ンスのトップランナーたち』の第2章「商 品市場を細分化するビッグデータ適合型ク ラスター分析の活用」がネタ元だよ。

Slide 3

Slide 3 text

同じような購買傾向の消費者を グループ化したい ケース1 ビール ワイン 日本酒 焼酎 ウイスキー Aさん 1 1 Bさん 1 ケース2 ビール ワイン 日本酒 焼酎 ウイスキー Cさん 1 1 1 Dさん 1 1 1 1 この二人は別々のグループにしたい この二人は同じグループにしたい

Slide 4

Slide 4 text

K-means法で使用される ユークリッド距離だと ケース1 ビール ワイン 日本酒 焼酎 ウイスキー Aさん 1 1 Bさん 1 ケース1 ビール ワイン 日本酒 焼酎 ウイスキー Aさん 1 1 1 Bさん 1 1 1 1 ユークリッド距離:1.732 ユークリッド距離:1.732

Slide 5

Slide 5 text

1-コサイン類似度だと ケース1 ビール ワイン 日本酒 焼酎 ウイスキー Aさん 1 1 Bさん 1 ケース1 ビール ワイン 日本酒 焼酎 ウイスキー Aさん 1 1 1 Bさん 1 1 1 1 1−コサイン類似度:1.000 1−コサイン類似度:0.423

Slide 6

Slide 6 text

skmeansパッケージを使ってみる # 関連規則のパッケージに入っているサンプルデータを使う library(arules) # transactions形式のサンプルデータ data(Groceries) # スパースなデータを扱いやすくするパッケージ。圧倒的に処理が早い。 library(slam) # transactions形式からmatrix形式に Groceries.mat <- as(Groceries,"matrix") # 真偽値を0/1に変換 Groceries.mat <- ifelse(Groceries.mat==TRUE,1,0) # matrix形式からstm形式へ Groceries.stm <- as.simple_triplet_matrix(Groceries.mat)

Slide 7

Slide 7 text

skmeansパッケージを使ってみる # コサイン距離を使ったkmeans library(skmeans) set.seed(1234) #再現性のための乱数種設定 res <- skmeans(Groceries.stm, k=05) table(res$cluster) #各クラスタのサイズ aggregate(Groceries.mat, by=list(res$cluster), mean)

Slide 8

Slide 8 text

Enjoy!