28
距離まとめ 12/02/27 尾崎遼

距離まとめられませんでした

Embed Size (px)

Citation preview

Page 1: 距離まとめられませんでした

距離まとめ

12/02/27 尾崎遼

Page 2: 距離まとめられませんでした

距離まとめ

12/02/27 尾崎遼

られませんで

した

Page 3: 距離まとめられませんでした

自己紹介おざき はるか

情報生命科学専攻 M2

バイオインフォマティクス

@yuifu

R初心者

Page 4: 距離まとめられませんでした

本日の内容距離行列について

距離行列をつくる関数

距離行列の使い方

多次元尺度法

クラスタリング

懇親会について

Page 5: 距離まとめられませんでした

距離と類似度距離=非類似度

距離

大きいほど違う

類似度

大きいほど似てる

Page 6: 距離まとめられませんでした

各行がデータを表す

各列が変数を表す

各データ同士の距離

通常、下三角行列

ID 攻撃 防御 すばA 90 78 44

B 45 10 88

C 120 78 2

D 14 18 10

E 81 47 37

F 67 42 100

A B C D E F

A

B

C

D

E

F

34

23 45

21 87 17

23 98 85 99

19 32 34 11 22

データ表

距離行列

Page 7: 距離まとめられませんでした

距離を何に使うのかクラスタリング

多次元尺度法

分類

データ集合1

データ集合2

データ1 データ2

Page 8: 距離まとめられませんでした

距離行列をつくる関数

dist {stats}

as.dist {stats}

daisy {cluster}

gdist {mvpart}

mahalanobis {stats}

など…

Page 9: 距離まとめられませんでした

dist {stats}dist(x, method = "euclidean", diag = FALSE, upper = FALSE, p = 2)

x: 各行がデータを表す 数値行列method: "euclidean", "maximum", "manhattan", "canberra", "binary”, "minkowski"p: minkowski を指定した時、p を別に指定する。 p>=1, 実数。

Page 10: 距離まとめられませんでした

ミンコフスキー距離p >= 1 (実数)

p=1 マンハッタン距離

p=2 ユークリッド距離

p→∞ チェビシェフ距離

コルモゴロフ・スミルノフ検定の検定統計量

Page 11: 距離まとめられませんでした

キャンベラ距離

バイナリ距離

(片方のみが1である変数の数)/

(どちらか一方が1である変数の数)

変数がバイナリのとき

> x<-c(1,1,0,0)> y<-c(1,0,1,1)> dist(rbind(x,y), method="binary") xy 0.75

Page 12: 距離まとめられませんでした

mahalanobis {stats}

マハラノビス距離の2乗を返す

外れ値の検出に使える

x: vector or matrixcenter: mean vector of the distribution or second data vector of length p.cov: 共分散行列

mahalanobis(x, center, cov, inverted=FALSE, ...)

Page 13: 距離まとめられませんでした

as.dist

dist objectでない距離行列を dist object に変換する

相関係数行列など

as.dist(m, diag = FALSE, upper = FALSE)

m: matrix 型の距離行列

Page 14: 距離まとめられませんでした

距離は負の値でもOK?

> d <- matrix(rnorm(20,0,1),5,5)> as.dist(d) 1 2 3 42 0.79034338 3 1.98162963 1.25013985 4 -1.28975678 0.46171713 0.86106480 5 0.39608483 0.01728395 -0.63603978 0.91020976> h<-hclust(as.dist(d))> plot(h)> h<-hclust(as.dist(d)+3)> plot(h)> as.dist(d)+3 1 2 3 42 3.790343 3 4.981630 4.250140 4 1.710243 3.461717 3.861065 5 3.396085 3.017284 2.363960 3.910210

Page 15: 距離まとめられませんでした

daisy {cluster}

非類似度が行の間で計算される

gower distance

numericじゃなかったらこれ。

それぞれの変数について距離を計算し、2つのデータの距離は個々の変数の距離の合計

重みを付けられる

dissimilarity.object

x: データ行列。各列が異なるタイプの変数( numeric, factor, orderedなど)でも可。metric: “euclidean”, “manhattan”, “gower”

library(“cluster”)daisy(x, metric = c("euclidean", "manhattan", "gower"), stand = FALSE, type = list(), weights = rep.int(1, p))

Page 16: 距離まとめられませんでした

gdist {mvpart}

x: Data matirxmethod: "euclidean", "manhattan", "gower", "canberra", "bray", "kulczynski", "maximum", "binary", "chord"

‘canberra’ d[jk] = (1/NZ) sum ((x[ij]-x[ik])/(x[ij]+x[ik])) ‘bray’ d[jk] = (sum abs(x[ij]-x[ik])/(sum (x[ij]+x[ik]))‘kulczynski’ d[jk] 1 - 0.5*((sum min(x[ij],x[ik])/(sum x[ij]) + (sum min(x[ij],x[ik])/(sum x[ik]))‘binary’ d[jk] = max(abs(x[ij]>0 -x[ik]>0))‘chord’ d[jk] = sqrt((sum (x[ij]-x[ik])^2)/(sum (x[ij]+x[ik])^2))

where NZ is the number of non-zero entries.

library(“mvpart”)gdist(x, method="bray", keepdiag=FALSE, full=FALSE, sq=FALSE)

Page 17: 距離まとめられませんでした

cor {stats}

(行同士でなく)列同士を比較する

相関係数が [-1,1] なので、1-corは [0,2]

cor(x, y = NULL, use = "everything", method = c("pearson", "kendall", "spearman"))

as.dist(1-correlation.matrix)

library(“cluster”)daisy(x, metric = c("euclidean", "manhattan", "gower"), stand = FALSE, type = list(), weights = rep.int(1, p))

Page 18: 距離まとめられませんでした

距離を扱う関数

hclust {stats}

cmdscale

など…

もっと色々ある

Page 19: 距離まとめられませんでした

類似度

ピアソン相関係数

スピアマンの順位相関係数

ケンドールの順位相関係数

BY D.C.ATTY

d: 2つのデータ間での順位の差

Page 20: 距離まとめられませんでした

分布の差

チェビシェフ距離

Jensen-Shannon divergence

d: 2つのデータ間での順位の差

Page 21: 距離まとめられませんでした

cmdscale {stats}

多次元尺度法ユークリッド距離を用いると主成分分析と等価

d: 距離行列k: 次元数

cmdscale(d, k = 2, eig = FALSE, add = FALSE, x.ret = FALSE)

iris.cmd <- cmdscale(dist(iris[, -5]))plot(iris.cmd, type="n")iris.lab <- factor(c(rep("S", 50), rep("C", 50), rep("V",50)))text(iris.cmd, labels=iris.lab, col=unclass(iris.lab))

Page 22: 距離まとめられませんでした

hclust {stats}

d: 距離行列

h: hclustオブジェクトk: クラスターの数

hclust(d, method = "complete", members=NULL)

plot(x, ...)

cutree(h, k)

Page 23: 距離まとめられませんでした

hclust {stats}

d: 距離行列

h: hclustオブジェクトk: クラスターの数

hclust(d, method = "complete", members=NULL)

plot(x, ...)

cutree(h, k)

Page 24: 距離まとめられませんでした

plot(hclust(as.dist(1-cor(t(d[,2:8])))))

cl <- cutree(hclust(as.dist(1-cor(t(d[,2:8])))), k=6)d <- cbind(d,cl)

heatmap.2(as.matrix(d[d[,11]==1,2:8]), density.info="none",Colv=NA, labRow=NA, trace="none",dendrogram="none", scale="row")

時刻

遺伝子

Page 25: 距離まとめられませんでした

クラスター間の距離最短距離法

最長距離法

群平均法

重心法

メディアン法

ウォード法HTTP://MICRO.MAGNET.FSU.EDU/INDEX.HTML

Page 26: 距離まとめられませんでした

参考

金明哲「Rによるデータサイエンス」森北出版

http://infoshako.sk.tsukuba.ac.jp/~jgoto/wma/cluster_k-means.pdf

Wikipedia

Page 27: 距離まとめられませんでした

懇親会について鍋

20:30-22:30

柏キャンパス総合研究棟

3F  364号室

終了後、三々五々移動

Page 28: 距離まとめられませんでした

懇親会について鍋

20:30-22:30

柏キャンパス総合研究棟

3F  364号室

終了後、三々五々移動

参加費 約1000円 <-NEW!