Thực hiện PCA chỉ với một ma trận khoảng cách


12

Tôi muốn phân cụm một tập dữ liệu lớn mà tôi chỉ có khoảng cách theo cặp. Tôi đã triển khai thuật toán k-medoid, nhưng nó mất quá nhiều thời gian để chạy nên tôi muốn bắt đầu bằng cách giảm kích thước của vấn đề bằng cách áp dụng PCA. Tuy nhiên, cách duy nhất tôi biết để thực hiện phương pháp này là sử dụng ma trận hiệp phương sai mà tôi không có trong tình huống của mình.

Có cách nào để áp dụng PCA chỉ biết khoảng cách theo cặp?


1
Vì vậy, bạn có một ma trận vuông lớn khoảng cách giữa các điểm bạn muốn phân cụm. (BTW có khoảng cách bao nhiêu? Euclide?) Điều gì khiến bạn nghĩ rằng đó là số lượng kích thước của các điểm này, chứ không phải số lượng điểm (cardinality), cản trở việc phân cụm?
ttnphns

1
Số lượng điểm không "rất lớn" (vài nghìn). Khoảng cách tôi đang sử dụng là mối tương quan của
quả lê

2
Nhưng câu hỏi của tôi là: bạn có thực sự muốn giảm tính chiều (và nếu có, tại sao?) Hoặc cardinality (số điểm)? Bởi vì câu hỏi của bạn không rõ ràng .
ttnphns

1
@ttnphns: Oh boy, tất nhiên tôi chỉ đơn giản là nhầm lẫn nhận xét trước đây của tôi. Để loại bỏ sự nhầm lẫn có thể xảy ra, bây giờ tôi sẽ xóa nhận xét đó và lặp lại những gì tôi đã nói ở đây với từ ngữ chính xác: "Giảm số lượng thẻ trong trường hợp này có nghĩa là làm cho ma trận khoảng cách của bạn nhỏ hơn (giảm ). thứ hạng thấp hơn, mà không thay đổi số lượng PCA về sau và không thực sự giúp với mục tiêu cũ ". N NN×NNN
amip nói phục hồi Monica

1
Tôi nghĩ rằng cách dễ nhất cho bạn là sử dụng phương pháp phân cụm (a) như vậy hoặc (b) như vậy việc thực hiện hoặc (c) máy tính mạnh (đủ RAM) như vậy sẽ lấy và phân loại 6000 đối tượng (tôi không biết tại sao chương trình medoid thấy khó khăn. 6000 là lớn, nhưng không lớn lắm.). Một số phương thức (như K-nghĩa) yêu cầu đối tượng X có dữ liệu. Bạn có thể tạo dữ liệu đó từ ma trận khoảng cách đối tượng thông qua MDS số liệu (nếu, một lần nữa, chương trình máy tính / MDS của bạn sẽ cho phép 6000 đối tượng).
ttnphns

Câu trả lời:


8

Cập nhật: Tôi đã loại bỏ hoàn toàn câu trả lời ban đầu của mình, bởi vì nó dựa trên sự nhầm lẫn giữa khoảng cách Euclide và các sản phẩm vô hướng. Đây là một phiên bản mới của câu trả lời của tôi. Lời xin lỗi.

Nếu theo khoảng cách theo cặp, bạn có nghĩa là khoảng cách Euclide, thì có, có một cách để thực hiện PCA và tìm các thành phần chính. Tôi mô tả thuật toán trong câu trả lời của mình cho câu hỏi sau: Sự khác biệt giữa phân tích thành phần chính và tỷ lệ đa chiều là gì?

Rất ngắn gọn, ma trận khoảng cách Euclide có thể được chuyển đổi thành ma trận Gram trung tâm, có thể được sử dụng trực tiếp để thực hiện PCA thông qua quá trình eigendecro. Thủ tục này được gọi là quy mô đa chiều [cổ điển] (MDS) .

Nếu khoảng cách cặp của bạn không phải là Euclide, thì bạn không thể thực hiện PCA, nhưng vẫn có thể thực hiện MDS, điều này sẽ không tương đương với PCA nữa. Tuy nhiên, trong tình huống này, MDS có thể thậm chí còn tốt hơn cho mục đích của bạn.


Khoảng cách tôi đang sử dụng là một mối tương quan (tương quan Pearson) và do đó không phải là khoảng cách Euclidian. Điều đó sẽ làm việc tương tự?
bigTree

1
@bigTree: Nếu đó không phải là khoảng cách Euclide, không có cách nào bạn có thể chạy PCA. Tuy nhiên, bạn có thể sử dụng tỷ lệ đa chiều , đây là kỹ thuật giảm kích thước sử dụng chính xác ma trận khoảng cách theo cặp (có thể là bất kỳ khoảng cách nào). Một lưu ý khác: theo các giả định nhất định về các mối tương quan điểm dữ liệu ban đầu (mà bạn không có) có thể được chuyển thành khoảng cách Euclide. Giả định là: (1) có giá trị trung bình bằng 0, (2) có giá trị cố định, ví dụ: đơn vị, chiều dài. Có bất kỳ cơ hội nào đúng với dữ liệu của bạn?
amip nói rằng Phục hồi lại

Không có gì trong số này là sự thật hay dữ liệu của tôi, nhưng tôi sẽ thử MDS cảm ơn
bigTree

1
bạn có thể sử dụng PCA kernel không? Tôi tưởng tượng rằng sẽ chỉ cần các sản phẩm chấm đôi, nhưng tôi không biết nhiều về vấn đề này, vì vậy tôi không biết liệu nó có hợp lý hay không
rep_ho

4

PCA với ma trận khoảng cách tồn tại và nó được gọi là tỷ lệ đa chiều (MDS). Bạn có thể tìm hiểu thêm trên wikipedia hoặc trong cuốn sách này .

Bạn có thể làm điều đó Rvới chức năng mds cmdscale. Đối với một mẫu x, bạn có thể kiểm tra prcomp(x)cmdscale(dist(x))đưa ra kết quả tương tự (trong prcompđó PCA và distchỉ tính khoảng cách eidianidian giữa các phần tử của x)


3

Điều này có vẻ như là một vấn đề mà cụm quang phổ có thể được áp dụng. Vì bạn có ma trận khoảng cách theo cặp, bạn có thể xác định một biểu đồ được kết nối đầy đủ trong đó mỗi nút có N kết nối, tương ứng với khoảng cách của nó với mọi nút khác trong biểu đồ. Từ đó, bạn có thể tính toán biểu đồ Laplacian (nếu điều này nghe có vẻ đáng sợ, đừng lo lắng - đó là một tính toán dễ dàng) và sau đó lấy các hàm riêng của hàm nhỏ nhấtgiá trị bản địa (đây là nơi khác với PCA). Ví dụ, nếu bạn lấy 3 hàm riêng, bạn sẽ có ma trận Nx3. Trong không gian này, các điểm nên (hy vọng) được phân tách tốt vì một số lý thuyết đồ thị gọn gàng cho thấy đây là một cách cắt tối ưu để tối đa hóa lưu lượng (hoặc khoảng cách, trong trường hợp này) giữa các cụm. Từ đó, bạn có thể sử dụng thuật toán k-mean hoặc thuật toán tương tự để phân cụm trong 3 không gian. Tôi khuyên bạn nên kiểm tra hướng dẫn tuyệt vời này để hiểu rõ hơn:

http://arxiv.org/abs/0711.0189


0

Khoảng cách cặp cũng tạo thành một ma trận vuông giống như ma trận đồng phương. PCA chỉ là SVD ( http://en.wikipedia.org/wiki/Singular_value_decysis ) được áp dụng cho ma trận đồng phương. Bạn vẫn có thể thực hiện giảm kích thước bằng cách sử dụng SVD trên dữ liệu của mình. Tôi không chắc chắn làm thế nào để giải thích đầu ra của bạn nhưng nó chắc chắn là một cái gì đó để thử. Bạn có thể sử dụng các phương pháp phân cụm như phương tiện k hoặc phân cụm theo cấp bậc. Ngoài ra hãy xem các kỹ thuật giảm kích thước khác như chia tỷ lệ đa chiều. Bạn đang cố gắng ra khỏi cụm của bạn là gì?


Câu trả lời của Andrew Cassidy thực sự hợp lệ. Nếu thước đo khoảng cách của bạn là tương quan lê, bạn chỉ là một yếu tố tiêu chuẩn hóa "quá xa" so với thực tế có ma trận hiệp phương sai. Do đó, áp dụng SVD về cơ bản giống như làm PCA.
Matthew Anthony
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.