読者です 読者をやめる 読者になる 読者になる

INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

Rでウイスキー分析(3/3) クラスター分析・多次元尺度法

R

estrellita.hatenablog.com

の続き。ネットワーク図からはウイスキー間の相関が分かりづらいのでリンク先のようなポジショニングマップを作りたい。

フレーバーの世界|シングルモルトウイスキー フレーバーマップ


クラスター分析

上記のリンクにはウイスキーを4つに分類している。

  1. ライト&フローラル
  2. フルーティ&スパイシー
  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")

f:id:tak95:20160415183758p:plain


確かに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)

f:id:tak95:20160415190759p:plain

軸を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)

f:id:tak95:20160415190148p:plain


クラスタ毎にレーダーチャートを描くと以下のようになる。

f:id:tak95:20160418085557p:plain

クラスタ1は上の図で赤色のグループ。Floral以外は全体的に高めで様々な味・香りが楽しめそう。MacallanやOldFettercairnがこのグループ。


f:id:tak95:20160418085604p:plain

クラスタ2は上の図で青色のグループ。Sweetnessが高いので甘口っぽい。Glenfiddichがこのグループ。


f:id:tak95:20160418085613p:plain

クラスタ3は上の図で黄緑色のグループ。Body, Smoky, Medicinalが飛び抜けて高くて特徴的。ArdbegやCaol Ila、Lagavulin、Laphroigなどパズドラに多く登場するのがこのグループ。


f:id:tak95:20160418085618p:plain

クラスタ4は上の図でオレンジ色のグループ。すべてが平均的でクセがなさそう。Highland Parkなどがこのグループ。