R의 빅 데이터 클러스터링 및 샘플링과 관련이 있습니까?


13

데이터 과학을 처음 사용하고 R에서 200,000 개의 행과 50 개의 열이있는 데이터 세트에서 클러스터를 찾는 데 문제가 있습니다.

데이터에는 숫자 변수와 명목 변수가 모두 있으므로 유클리드 거리 측정을 사용하는 K- 평균과 같은 방법은 적절한 선택처럼 보이지 않습니다. 따라서 거리 매트릭스를 입력으로 받아들이는 PAM, agnes 및 hclust로 전환합니다.

데이지 방법은 혼합 유형 데이터에서 작동 할 수 있지만 거리 행렬이 너무 큽니다. 200,000 x 200,000이 2 ^ 31-1보다 훨씬 큽니다 (R 3.0.0 이전의 벡터 길이 제한).

어제 출시 된 새로운 R 3.0.0은 길이가 2 ^ 31-1보다 긴 긴 벡터를 지원합니다. 그러나 200,000 x 200,000의 이중 행렬에는 16Gb보다 큰 연속 RAM이 필요하며 내 컴퓨터에서는 불가능합니다.

병렬 컴퓨팅 및 bigmemory 패키지에 대해 읽었으며 도움이 될지 확실하지 않습니다. 데이지를 사용하는 경우 어쨌든 메모리에 맞지 않는 큰 행렬을 생성합니다.

샘플링에 관한 게시물에 대해서도 읽었습니다. '빅 데이터'시점에서 샘플링이 관련이 있습니까?

내 경우에는 데이터 세트에서 샘플링을 사용하고 샘플에서 클러스터를 사용한 다음 전체 데이터 세트의 구조를 유추하는 것이 관련이 있습니까?

제발 좀 제안 해 주시겠습니까? 감사합니다!

내 컴퓨터 정보 :

R 버전 3.0.0 (2013-04-03)

플랫폼 : x86_64-w64-mingw32 / x64 (64 비트)

운영체제 : Windows 7 64bit

램 : 16.0GB


내가 알고있는 유일한 빅 데이터 클러스터링 방법 (예 : 수백만 건의 경우)은 SPSS에서 찾은 TwoStep 클러스터입니다.
ttnphns

답변:


4

아시다시피, 전 거리 매트릭스가 필요한 방법은 작동하지 않습니다. 메모리는 한 가지이지만 다른 것은 런타임입니다. 계층 적 클러스터링의 일반적인 구현은 ( ELKI 에는 단일 링크 클러스터링에 대한 알고리즘 인 SLINK 가 있음을 알고 있습니다 ). 이것은 단지 큰 데이터 세트로 확장되지 않습니다.O(n3)O(n2)

PAM 자체는 완전한 거리 행렬을 요구해서는 안되지만, 알고리즘은 스케일링이 잘못되었다고 알려져 있습니다. 알고리즘은 가장 중심적인 요소를 찾기 위해 각 반복마다 각 클러스터 내에서 모든 페어 단위 거리를 (재 계산) 계산해야하기 때문입니다. 많은 수의 클러스터가있는 경우 훨씬 적지 만 그럼에도 불구하고 상당히 비쌉니다!

대신, 가속을 위해 인덱스 구조를 사용할 수있는 방법을 조사해야합니다. 인덱스가 좋으면 이러한 클러스터링 알고리즘이 에서 실행될 수 있으며 이는 큰 데이터 세트에 훨씬 좋습니다.O(nlogn)

그러나 이러한 알고리즘의 대부분은 먼저 거리 기능이 실제로 좋은지 확인해야합니다. 그런 다음 적절한 색인을 사용하여 쿼리를 가속화하는 방법을 고려해야합니다.

또한 대부분의 경우 PAM에 적합 할 수 있습니다. 먼저 샘플에서 알고리즘을 실행 한 다음 전체 데이터 세트에서만 알고리즘을 구체화 할 수 있습니다. 표본이 대표적인 경우 k- 평균 및 PAM과 같은 알고리즘은 완전한 데이터 세트에서와 동일한 결과를 제공해야합니다.


여기에 영업 이익은 도움이되지만 경우에 다른 사람이 "중간"샘플 수있는 사람을 함께 제공하지 않음 : (참조 또한 fastcluster R에 대한이 math.stanford.edu/~muellner/fastcluster.html을 ).
SX에 불만족 cbeeites

Anony-Mousse, 인덱스 구조 가속을 사용하는 일부 알고리즘을 알려주시겠습니까? 고마워요!

예를 들어 엡실론 범위 쿼리를 지원하는 인덱스로 DBSCAN을 가속화 할 수 있습니다. 아마도 시프트 클러스터링도 의미합니다. 이러한 방식으로 가속화 할 수있는 OPTICS는보다 고급 버전의 연계 클러스터링으로 볼 수 있습니다 ( "계층 밀도 연계 클러스터링"이라고 부름)
QUIT--Anony-Mousse

2

R의 클러스터 패키지에서 CLARA 함수를 사용해보십시오. 데이터를 서브 샘플링하여 pam과 유사한 알고리즘을 구현합니다 (기본적으로 의도적으로 너무 작기 때문에 데이터에 적합한 서브 샘플 크기를 제공해야합니다). 데이터의 mediod가 전체 데이터의 작은 샘플로 표시 될 수있는 경우 (예 : 데이터 세트에 상대적으로 적은 클러스터가있는 경우) 특히 효과적입니다. 이렇게하면 작은 임의의 샘플로 효율적으로 클러스터링하고 사전 계산 된 클러스터링 솔루션에 포인트를 추가 할 수 있습니다.

http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA


안녕 zzk, 답변 주셔서 감사합니다. 나는 클라라에 대해 읽었지만 유클리드와 맨해튼 메트릭 만 제공하는 것 같습니다. 주요 문제는 내 데이터 세트에 숫자 변수와 명목 변수가 모두 있다는 것입니다. 따라서 거리 측정에 메트릭을 사용하지 않는 것이 좋습니다.

아 네, 그것은 현재 저에게도 한계입니다. 이 방법은 실제로 임의의 거리에서 수행 할 수 있다고 생각하지만 소스 코드를 살펴보고 변경 가능한지 여부는 아직 신경 쓰지 않았습니다.
zzk

0

정 성적 변수에 대해 다중 대응 분석을 적용하고 숫자 변수로 변환 할 수도 있습니다.


2
이것은 좋은 생각처럼 보이지만 조금 희박 할 수 있습니다. 이것이 무엇이고 왜 그것이 도움이 될지를 설명하기 위해 이것을 육체로 만들 수 있습니까?
gung-복직 모니카
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.