Upload
haruka-ozaki
View
3.113
Download
3
Embed Size (px)
Citation preview
距離まとめ
12/02/27 尾崎遼
距離まとめ
12/02/27 尾崎遼
られませんで
した
自己紹介おざき はるか
情報生命科学専攻 M2
バイオインフォマティクス
@yuifu
R初心者
本日の内容距離行列について
距離行列をつくる関数
距離行列の使い方
多次元尺度法
クラスタリング
懇親会について
距離と類似度距離=非類似度
距離
大きいほど違う
類似度
大きいほど似てる
各行がデータを表す
各列が変数を表す
各データ同士の距離
通常、下三角行列
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
データ表
距離行列
距離を何に使うのかクラスタリング
多次元尺度法
分類
データ集合1
データ集合2
データ1 データ2
距離行列をつくる関数
dist {stats}
as.dist {stats}
daisy {cluster}
gdist {mvpart}
mahalanobis {stats}
など…
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, 実数。
ミンコフスキー距離p >= 1 (実数)
p=1 マンハッタン距離
p=2 ユークリッド距離
p→∞ チェビシェフ距離
コルモゴロフ・スミルノフ検定の検定統計量
キャンベラ距離
バイナリ距離
(片方のみが1である変数の数)/
(どちらか一方が1である変数の数)
変数がバイナリのとき
> x<-c(1,1,0,0)> y<-c(1,0,1,1)> dist(rbind(x,y), method="binary") xy 0.75
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, ...)
as.dist
dist objectでない距離行列を dist object に変換する
相関係数行列など
as.dist(m, diag = FALSE, upper = FALSE)
m: matrix 型の距離行列
距離は負の値でも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
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))
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)
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))
距離を扱う関数
hclust {stats}
cmdscale
など…
もっと色々ある
類似度
ピアソン相関係数
スピアマンの順位相関係数
ケンドールの順位相関係数
BY D.C.ATTY
d: 2つのデータ間での順位の差
分布の差
チェビシェフ距離
Jensen-Shannon divergence
d: 2つのデータ間での順位の差
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))
hclust {stats}
d: 距離行列
h: hclustオブジェクトk: クラスターの数
hclust(d, method = "complete", members=NULL)
plot(x, ...)
cutree(h, k)
hclust {stats}
d: 距離行列
h: hclustオブジェクトk: クラスターの数
hclust(d, method = "complete", members=NULL)
plot(x, ...)
cutree(h, k)
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")
時刻
遺伝子
クラスター間の距離最短距離法
最長距離法
群平均法
重心法
メディアン法
ウォード法HTTP://MICRO.MAGNET.FSU.EDU/INDEX.HTML
参考
金明哲「Rによるデータサイエンス」森北出版
http://infoshako.sk.tsukuba.ac.jp/~jgoto/wma/cluster_k-means.pdf
Wikipedia
懇親会について鍋
20:30-22:30
柏キャンパス総合研究棟
3F 364号室
終了後、三々五々移動
懇親会について鍋
20:30-22:30
柏キャンパス総合研究棟
3F 364号室
終了後、三々五々移動
参加費 約1000円 <-NEW!