是否有將距離矩陣轉換爲一組座標的包? 我經歷了以下問題。我希望能有這樣的套餐。距離矩陣R中的座標
Finding the coordinates of points from distance matrix
我已經考慮薩蒙斯投影爲此但是從我的理解,這是一個優化,並讓你的最佳解決方案。我認爲應該有一個算法來獲得這個獨特的解決方案。
是否有將距離矩陣轉換爲一組座標的包? 我經歷了以下問題。我希望能有這樣的套餐。距離矩陣R中的座標
Finding the coordinates of points from distance matrix
我已經考慮薩蒙斯投影爲此但是從我的理解,這是一個優化,並讓你的最佳解決方案。我認爲應該有一個算法來獲得這個獨特的解決方案。
多維尺度(MDS)旨在數據的距離矩陣投影到低維ķ,其中期望K = 2在你的情況下,同時試圖保持數據點之間的距離:
# Multidimensional scaling
library(MASS)
set.seed(1)
labels <- as.factor(sample(LETTERS[1:5], 100, replace=TRUE))
dat <- mvrnorm(n=100, mu = c(1:4), Sigma=matrix(1:16, ncol=4)) + as.numeric(labels)^2
#> dim(dat)
#[1] 100 4
# Euclidean distance matrix (100x100)
d <- dist(dat)
# Classical MDS for distance matrix d
# http://en.wikipedia.org/wiki/Multidimensional_scaling
mds <- cmdscale(d, k = 2)
x <- mds[,1]
y <- mds[,2]
plot(x,y, col=rainbow(5)[as.numeric(labels)], pch=16, main="MDS for object 'dat'")
legend("topright", legend=unique(labels), col=rainbow(5)[unique(as.numeric(labels))], pch=16)
感謝您的回答。但正如我上面評論的,這是一個確切的解決方案還是另一個優化器? – Avinash
這是一個特徵值問題 (如在[這個答案](http://stackoverflow.com/a/17177833/1129973)) 所以它可以被看作是一個優化。 如果有確切的解決方案,它將返回一個確切的解決方案,如果沒有確切的解決方案,它不會失敗,但會給出一個近似的解決方案。 –
查找稱爲Multi-Dimensional Scaling
(MDS)的算法。中的R的實施是從所述stats
包cmdscale
功能:
多維尺度採用一組不相似的,並返回一組點,使得所述點之間的距離是大約等於不相似的。
的文檔還具有這樣一個距離矩陣變成的x
和y
座標兩個向量的一例,然後繪圖。
這不是另一種優化嗎?在我鏈接的另一個問題中定義的算法對我來說很有意義。 MDS做同樣的事情嗎? 正如已經指出的那樣,沒有獨特的解決方案,但它有一個解決方案,所以我不認爲需要一個近似/最佳的解決方案時,可以實現精確的解決方案。除非我在這裏完全誤解了MDS,否則請原諒我的無知。 – Avinash
沒有一個獨特的解決這個問題,因爲你可以旋轉你的數據集而不影響距離矩陣。 – Backlin