Rでウイスキー分析(3/3) クラスター分析・多次元尺度法
の続き。ネットワーク図からはウイスキー間の相関が分かりづらいのでリンク先のようなポジショニングマップを作りたい。
フレーバーの世界|シングルモルトウイスキー フレーバーマップ
クラスター分析
上記のリンクにはウイスキーを4つに分類している。
- ライト&フローラル
- フルーティ&スパイシー
- リッチ&まろやか
- コク&スモーキー
まずは階層クラスタリングを行い、4つのクラスタに分類してみる。
# コサイン類似度の計算 w.dist <- w %>% select(-RowID, -Distillery, -Postcode, -Latitude, -Longitude) %>% dist(method="cosine") # 階層型クラスタリング w.hc <-w.dist %>% hclust(method="ward.D2") # デンドログラムを描画 library(networkD3) dendroNetwork(w.hc, width="1000", treeOrientation="vertical")
確かに4つのクラスターに分類できそうなのでクラスター番号を割り当てる。
# クラスタ番号の付与 w.cls <- w.hc %>% cutree(k = 4) %>% as.matrix() %>% as.data.frame() %>% add_rownames() %>% rename(Distillery = rowname, group = V1) w.cls %>% count(group)
group | n |
---|---|
1 | 31 |
2 | 33 |
3 | 6 |
4 | 16 |
多次元尺度法
多次元尺度法で各銘柄間の距離を2次元上に配置してみる。
w.cmd <- w.dist %>% # MDSで2次元の座標を算出 cmdscale() %>% as.data.frame() %>% add_rownames() %>% rename(Distillery = rowname, x = V1, y = V2) %>% # クラスタ番号と結合 inner_join(w.cls, by="Distillery")
rChartsでプロットしてみると以下のようになる。
library(rCharts) dP <- dPlot( y ~ x, groups = c("Distillery","group"), data = w.cmd, type = "bubble" ) dP$xAxis( type = "addMeasureAxis" ) print(dP)
軸を25度ほど回転させるとちょうど4象限に分割できそう。
deg <- 25 w.cmd2 <- w.cmd %>% mutate(x = x*cos(deg*pi/180) - y*sin(deg*pi/180), y = x*sin(deg*pi/180) + y*cos(deg*pi/180)) %>% # クラスタ番号と結合 inner_join(w.cls, by="Distillery") library(rCharts) dP <- dPlot( y ~ x, groups = c("Distillery","group"), data = w.cmd2, type = "bubble" ) dP$xAxis( type = "addMeasureAxis" ) print(dP)
クラスタ毎にレーダーチャートを描くと以下のようになる。
クラスタ1は上の図で赤色のグループ。Floral以外は全体的に高めで様々な味・香りが楽しめそう。MacallanやOldFettercairnがこのグループ。
クラスタ2は上の図で青色のグループ。Sweetnessが高いので甘口っぽい。Glenfiddichがこのグループ。
クラスタ3は上の図で黄緑色のグループ。Body, Smoky, Medicinalが飛び抜けて高くて特徴的。ArdbegやCaol Ila、Lagavulin、Laphroigなどパズドラに多く登場するのがこのグループ。
クラスタ4は上の図でオレンジ色のグループ。すべてが平均的でクセがなさそう。Highland Parkなどがこのグループ。
- ウイスキーには詳しくないのでBar doradoraで確認する。
- 日本酒や焼酎、ビールやコーヒーも同じように分析してみたい。。。