LoginSignup
5
5

More than 5 years have passed since last update.

Rでシーケンス クラスタリング

Posted at

Rでシーケンスなクラスタリングをする必要がでてきたので勉強して、まとめておく。
用途としては状態があり、時間によって遷移するものをクラスタリング出来る。例としては、天気予報(前日に晴れ、今日は曇り)でいろんな地域をクラスタリングしたいといった用途やwebページの人の訪れをクラスタリング(LP→カテゴリー1→広告)に行くパターン等々・・・。

・使うパッケージTraMineR・cluser

sample.R
library(TraMineR)
library(cluster)

# データの読み込み
data("mvad")

# 状態の定義
mvad_alphab <- c("employment", "FE", "HE", "joblessness","school", "training")
# パターンフォーマット変換
mvad_seq <- seqdef(mvad, 17:86, xtstep = 6, alphabet = mvad_alphab)

# パターンの上位にある頻度を計算
seqtab(mvad_seq, idxs = 1:10)

# 遷移行列
mvad_trate <- seqtrate(mvad_seq)
round(mvad_trate, 2)

# 状態のクラスタリング作成
mvad_om <- seqdist(mvad_seq, method = "OM", indel = 1, sm = "TRATE")
clusterward <- agnes(mvad_om, diss = TRUE, method = "ward")
mvad_cl4 <- cutree(clusterward, k = 4)
cl4_lab <- factor(mvad_cl4, labels = paste("Cluster", 1:4))

# 各クラスターの可視化
seqdplot(mvad_seq, group = cl4_lab, border = NA)

# デンドログラムの可視化
plot(clusterward, which.plots = 2, labels = FALSE)

サンプルデータでは人が働いているか、無職、学校、トレーニングにいっているかといった事をクラスタリングしている。特に面白いのは人の行動パターンのクラスタリングの可視化である。seqdplotをすると以下のようなグラフが得られる。

キャプチャ.PNG

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5