거리 매트릭스만으로 PCA 수행


12

페어 단위 거리 만있는 거대한 데이터 세트를 클러스터하고 싶습니다. k-medoids 알고리즘을 구현했지만 실행하는 데 시간이 너무 오래 걸리므로 PCA를 적용하여 문제의 차원을 줄이는 것으로 시작하고 싶습니다. 그러나이 방법을 수행하는 유일한 방법은 내 상황에없는 공분산 행렬을 사용하는 것입니다.

쌍별 거리 만 알고 PCA를 적용 할 수있는 방법이 있습니까?


1
따라서 클러스터하려는 점 사이의 거리에 대한 큰 제곱 행렬이 있습니다. (BTW 몇 거리? 유클리드?) 클러스터링을 방해하는 점 자체 (카디널리티)가 아니라이 점이 포함하는 차원의 수를 어떻게 생각하십니까?
ttnphns

1
점수는 "매우 크지"않다 (수 천). 내가 사용하고있는 거리는이 지점들 사이의 피어슨 상관 관계입니다.
bigTree

2
그러나 내 질문은 : 당신은 정말로 차원 (그리고 그렇다면, 왜?) 또는 카디널리티 (점 수 ) 를 줄이고 싶 습니까? 귀하의 질문이 명확하지 않기 때문 입니다.
ttnphns

1
@ ttnphns : 오, 물론, 나는 단순히 이전 의견을 잘못 입력했습니다. 가능한 혼란을 제거하기 위해, 지금이 댓글을 삭제하고 내가 올바른 표현으로 여기에 말을 반복 할 것이다 : "이 경우 수단이 만드는 카디 감소 작은 (감소 거리 행렬 )를 만드는 차원 수단을 감소. 변경하지 않고, 순위를 낮출 PCA는 금액. 후자 "과 전 목표로 정말 도움이되지 않습니다. ×
amoeba

1
가장 쉬운 방법은 (a) 클러스터링 방법 또는 (b) 구현 또는 (c) 6000 개의 개체를 가져와 분류 할 수있는 강력한 (충분한 RAM) 컴퓨터를 사용하는 것입니다. 메도 이드 프로그램은 어려움을 겪습니다. 6000은 크지 만 크지는 않습니다.). K- 평균과 같은 일부 방법에는 객체 X 피처 데이터가 필요합니다. 메트릭 MDS를 통해 객체 거리 매트릭스에서 이러한 데이터를 생성 할 수 있습니다 (다시 말해 컴퓨터 / MDS 프로그램에서 6000 개의 객체를 허용 할 경우).
ttnphns

답변:


8

업데이트 : 나는 유클리드 거리와 스칼라 제품 간의 혼란에 기초하여 원래의 대답을 완전히 제거했습니다. 이것은 내 답변의 새로운 버전입니다. 사과.

페어 단위 거리로 유클리드 거리를 의미한다면 PCA를 수행하고 주요 구성 요소를 찾는 방법이 있습니다. 다음 질문에 대한 대답으로 알고리즘을 설명합니다. 주성분 분석과 다차원 스케일링의 차이점은 무엇입니까?

간단히 말해, 유클리드 거리의 매트릭스는 중심 그람 매트릭스로 변환 될 수 있으며, 고유 분해를 통해 PCA를 수행하는 데 직접 사용될 수 있습니다. 이 절차를 [고전] 다차원 스케일링 (MDS)이라고 합니다.

페어 단위 거리가 유클리드가 아닌 경우 PCA를 수행 할 수 없지만 여전히 MDS를 수행 할 수 있으며 이는 더 이상 PCA와 동일하지 않습니다. 그러나이 상황에서 MDS는 귀하의 목적에 더 적합 할 것입니다.


내가 사용하는 거리는 상관 관계 (피어슨 상관 관계)이므로 유클리드 거리가 아닙니다. 비슷하게 작동합니까?
bigTree

1
@bigTree : 유클리드 거리가 아닌 경우 PCA를 실행할 수있는 방법이 없습니다. 그러나 다차원 척도법 을 사용할 수 있습니다. 이는 차원 쌍 축소 거리 행렬 (모든 거리가 될 수 있음)을 정확하게 사용하는 차원 축소 기법입니다. 또 다른 참고 사항 : 원래 데이터 포인트 (없는)에 대한 특정 가정에서 상관 관계는 유클리드 거리로 변환 될 수 있습니다. 가정은 : (1) 평균이 0이고, (2) 고정 된, 예를 들어 단위 길이를 가짐. 우연히 데이터가 사실입니까?
amoeba

이것들 중 어느 것도 사실이거나 내 데이터는 아니지만, MDS 덕분에 시도 할 것입니다
bigTree

1
커널 PCA를 사용할 수 없습니까? 나는 그 만하면 제품을 점 페어 것이라고 상상하지만, 말이 있다면 나도 몰라 그래서 나는이 문제에 대해 많이 모른다
rep_ho

4

거리 매트릭스가있는 PCA가 존재하며이를 MDS (Multi-dimensional scaling)라고합니다. 당신은 더 많은 것을 배울 수있는 위키 피 디아에 또는 이 책에서 .

당신은 Rmds 기능으로 그것을 할 수 있습니다 cmdscale. 샘플의 경우 x, 당신은을 확인할 수 있습니다 prcomp(x)cmdscale(dist(x))같은 결과를 제공 (여기서 prcompPCA가 수행하고 dist단지 X의 요소 사이의 유클리드 거리를 계산)


3

이것은 스펙트럼 클러스터링이 적용될 수있는 문제처럼 보입니다. 쌍별 거리 행렬이 있으므로 그래프의 다른 모든 노드와의 거리에 해당하는 각 노드에 N 개의 연결이있는 완전히 연결된 그래프를 정의 할 수 있습니다. (- 그것은 쉽게 계산의이 소리 무서운 경우, 걱정하지 마세요) 다음의 고유 벡터 받아이에서, 당신은 그래프 라플라시안을 계산할 수 있습니다 작은을고유 값 (PCA와 다른 곳). 예를 들어 3 개의 고유 벡터를 사용하면 Nx3 행렬이됩니다. 이 공간에서, 포인트는 (그래서) 클러스터 사이의 흐름 (또는이 경우 거리)을 최대화하기위한 최적의 컷임을 암시하는 깔끔한 그래프 이론으로 인해 잘 분리되어야합니다. 거기에서 k 공간 또는 유사한 알고리즘을 사용하여 3 공간으로 클러스터링 할 수 있습니다. 더 많은 통찰력을 얻으려면이 멋진 연습을 확인하는 것이 좋습니다.

http://arxiv.org/abs/0711.0189


0

쌍별 거리는 공분산 행렬과 마찬가지로 정사각 행렬을 형성합니다. PCA는 공분산 행렬에 적용된 SVD ( http://en.wikipedia.org/wiki/Singular_value_decomposition )입니다. 데이터에서 SVD를 사용하여 차원 축소를 계속 수행 할 수 있어야합니다. 출력을 해석하는 방법을 정확히 모르지만 반드시 시도해보십시오. k- 평균 또는 계층 적 클러스터링과 같은 클러스터링 방법을 사용할 수 있습니다. 다차원 스케일링과 같은 다른 차원 축소 기술도 살펴보십시오. 클러스터에서 무엇을 얻으려고합니까?


Andrew Cassidy의 답변은 실제로 유효합니다. 거리 측정이 피어슨 상관 관계인 경우 실제로 공분산 행렬을 갖는 것보다 "너무 멀리있는"표준화 요소 일뿐입니다. 따라서 SVD를 적용하는 것은 기본적으로 PCA를 수행하는 것과 같습니다.
Matthew Anthony
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.