2013-06-24 38 views
7

Có gói nào để chuyển đổi ma trận khoảng cách thành tập hợp tọa độ không? Tôi đã trải qua câu hỏi dưới đây. Tôi đã hy vọng sẽ có một gói cho việc này.Tọa độ từ ma trận khoảng cách trong R

Finding the coordinates of points from distance matrix

Tôi đã xem xét Sammons chiếu này, nhưng từ những gì tôi hiểu, đó là một ưu và giúp bạn một giải pháp tối ưu. Tôi nghĩ rằng cần có một thuật toán để có được một giải pháp duy nhất cho việc này.

+1

không có một giải pháp duy nhất cho vấn đề này kể từ khi bạn có thể xoay tập dữ liệu của bạn mà không ảnh hưởng đến ma trận khoảng cách. – Backlin

Trả lời

7

đa chiều (MDS) nhằm mục đích dự án ma trận khoảng cách của dữ liệu của bạn vào một chiều hướng thấp hơn k, nơi mong muốn k = 2 trong trường hợp của bạn, trong khi cố gắng để duy trì khoảng cách giữa các điểm dữ liệu:

# 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) 

đọc thêm: https://stats.stackexchange.com/questions/14002/whats-the-difference-between-principal-components-analysis-and-multidimensional

mds projection

+0

Cảm ơn bạn đã có câu trả lời tuyệt vời. Nhưng như tôi đã bình luận ở trên, đây có phải là giải pháp chính xác hay chỉ là một trình tối ưu hóa khác? – Avinash

+1

Đây là một vấn đề về giá trị riêng biệt (như trong [câu trả lời này] (http://stackoverflow.com/a/17177833/1129973)) để nó có thể được xem là tối ưu hóa. Nếu có giải pháp chính xác, giải pháp sẽ trả về một giải pháp chính xác, và nếu không có giải pháp chính xác, giải pháp đó không thành công, nhưng đưa ra giải pháp gần đúng. –

2

Tra cứu thuật toán được gọi là Multi-Dimensional Scaling (MDS). An thực hiện trong R là cmdscale chức năng từ gói stats:

rộng đa chiều có một bộ dissimilarities và trả về một tập hợp các điểm như vậy mà khoảng cách giữa các điểm là xấp xỉ bằng với dissimilarities.

Tài liệu cũng có ví dụ về ma trận khoảng cách được chuyển thành hai vectơ là các tọa độ xy, sau đó vẽ đồ thị.

rộng
+0

Đây không phải là một tối ưu hóa khác? Thuật toán được định nghĩa trong câu hỏi khác mà tôi liên kết có ý nghĩa với tôi. MDS có làm điều tương tự không? Như nó đã được chỉ ra, không có giải pháp duy nhất nhưng nó có một giải pháp vì vậy tôi không nghĩ rằng một giải pháp gần đúng/tối ưu là cần thiết khi giải pháp chính xác có thể đạt được. Trừ khi tôi hoàn toàn hiểu lầm MDS ở đây thì xin hãy tha thứ cho sự thiếu hiểu biết của tôi. – Avinash

Các vấn đề liên quan