R에서 노이즈 (DBSCAN) 클러스터링을 사용하는 애플리케이션의 밀도 기반 공간 클러스터링


9

이 질문은 " R에서 공간 데이터 클러스터링 "으로 시작 하여 이제 DBSCAN 질문으로 이동했습니다.

첫 번째 질문에 대한 답변이 제안한대로 DBSCAN에 대한 정보를 검색하고 관련 문서를 읽었습니다. 새로운 질문이 생겼습니다.

DBSCAN에는 몇 가지 매개 변수가 필요하며 그 중 하나는 "거리"입니다. 내 데이터가 3 차원, 경도, 위도 및 온도이므로 어떤 "거리"를 사용해야합니까? 그 거리와 관련된 치수는 무엇입니까? 온도가되어야한다고 생각합니다. R과 같은 최소 거리를 어떻게 찾습니까?

다른 매개 변수는 클러스터를 형성하기 위해 조정 된 최소 포인트 수입니다. 그 번호를 찾는 방법이 있습니까? 불행히도 나는 찾지 못했습니다.

구글 검색 내 것과 비슷한 데이터 세트에서 dbscan을 사용하는 R 예제를 찾을 수 없었습니다. 그러한 종류의 예제가있는 웹 사이트를 알고 있습니까? 그래서 나는 내 사건을 읽고 적응하려고 노력할 수 있습니다.

마지막 질문은 DBSCAN을 사용한 첫 번째 R 시도 (이전 질문에 대한 적절한 답변없이)로 인해 메모리 문제가 발생했다는 것입니다. R은 벡터를 할당 할 수 없다고 말합니다. 유효하지 않은 SST 포인트를 제거 할 때 약 300000 행 x 3 열 (위도, 경도 및 온도)로 끝나는 779191 포인트의 4km 간격 그리드로 시작합니다. 이 메모리 문제를 해결하기위한 힌트. 내 컴퓨터 또는 DBSCAN 자체에 의존합니까?

길고 지루한 메시지를 읽고 인내심을 가져 주셔서 감사합니다.


공간 분석 전용 포럼이 있습니다. 어쩌면이 게시물을 언급 할 수도 있습니다 (교차 게시라고 언급하십시오). gis.stackexchange.com
Roman Luštrik

답변:


2

나는 여전히이 문제에 갇혀있다. R 메일 링리스트 (Christian Hennig에게 감사드립니다)로부터 다음과 같은 제안을 받았습니다.

라이브러리 fpc 에서 dbscan 함수를 고려 했습니까 , 아니면 다른 기능 입니까? 이 fpc::dbscan()함수에는 "distance"매개 변수가 없지만 여러 옵션 중 하나가 메모리 문제를 해결할 수 있습니다 ( "memory"매개 변수의 문서를 참조하십시오).

수십만 개의 포인트에 거리 매트릭스를 사용하는 것은 재앙을위한 레시피입니다 (메모리 단위). 사용 한 기능이 그 기능을 수행했는지 확실하지 않지만 fpc::dbscan()피할 수 있습니다.

fpc::dbscan()사용자가 제공해야하는 조정 상수 가 필요한 것은 사실입니다 . 불행히도이 작업을 수행하는 일반적인 규칙은 없습니다. 상수의 방법과 의미를 이해하고 이것이 응용 프로그램의 요구 사항으로 어떻게 해석되는지 이해해야합니다.

몇 가지 다른 선택을 시도하고 클러스터 유효성 검사를 수행하여 작동하는 것을 볼 수 있지만 전자 메일을 통해 쉽게 일반적인 용어로 설명 할 수는 없습니다.

내 데이터로 시도했지만 성공하지 못했습니다.

"예, fpc에서 dbscan을 시도했지만 여전히 메모리 문제가 발생합니다. 답변과 관련하여 어떤 메모리 매개 변수를보아야할지 모르겠습니다. 다음은 dbscan 매개 변수로 시도한 코드입니다. 실수가 있는지 확인하십시오.

> sstdat=read.csv("sst.dat",sep=";",header=F,col.names=c("lon","lat","sst"))
> library(fpc)
> sst1=subset(sstdat, sst<50)
> sst2=subset(sst1, lon>-6)
> sst2=subset(sst2, lon<40)
> sst2=subset(sst2, lat<46)
> dbscan(sst2$sst, 0.1, MinPts = 5, scale = FALSE, method = c("hybrid"), 
         seeds = FALSE, showplot = FALSE, countmode = NULL)
Error: no se puede ubicar un vector de tamaño  858.2 Mb
> head(sst2)
             lon   lat   sst
1257 35.18 24.98 26.78
1258 35.22 24.98 26.78
1259 35.27 24.98 26.78
1260 35.31 24.98 26.78
1261 35.35 24.98 26.78
1262 35.40 24.98 26.85

이 예제에서는 dbscan()lon / lat이 아닌 온도 값 에만 적용 되므로 epsparameter는 0.1입니다. 그리드 된 데이터 세트이므로 모든 점이 8 개의 데이터 점으로 둘러싸여 있으므로 주변 점 중 5 개 이상이 도달 거리 내에 있어야한다고 생각했습니다. 그러나 온도 값만 고려하여 올바른 접근 방식을 사용하고 있는지 확실하지 않은 경우 공간 정보가 누락되었을 수 있습니다. 경도 및 위도 데이터를 어떻게 처리해야합니까?

차원 sst2: 152243 행 x 3 열 "

R과 DBSCAN에 대한 정보를 공유 할 수있는 경우를 대비하여이 메일 메시지를 공유합니다. 다시 감사합니다


어디에서 문제를 해결할 수 있습니까? 비슷한 문제가 있습니다. 당신의 생각을 공유 할 수 있습니까?
kumar

친애하는 @kumar 저는 CLARA 클러스터 메소드로 돌아 가야했습니다. DBSCAN을 사용할 수 없습니다. 죄송합니다. 도와 드릴 수 없습니다
pacomet

2

여기서 문제는 R 입니다. DBSCAN을 효과적으로 사용하려면 적절한 색인 구조 (거리와 일치해야 함)가 있어야합니다. 그러나 R은 실제로 인덱싱을 수행하지 않습니다. 또한 fpc 패키지는 DBSCAN을 최소한으로 구현하여 기능의 일부만 제공합니다.

거리 기능은 "도메인 지식"이 필요한 곳입니다. 충분히 유연한 DBSCAN 구현이있는 경우 (실제로 구현하기가 쉽지만 보다 빠르게 만드는 인덱스 가 훨씬 더 어렵습니다!) 임의의 거리에 둘 수 있어야합니다. 두 개의 거리 함수와 엡실론 값을 만들 수도 있습니다. 점은 최대 떨어져 있어야하며 온도 차이는 미만이어야합니다O(n2)10km1K.

DBSCAN에 필요한 일반 원칙은 "이웃"개념과 "핵심 점"개념 (또는 "밀도")에 대해서는 "일반화 된 DBSCAN"을 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.