답변

0

위키 백과에 제시된 알고리즘에 따라, 점 P에 대한 지역 질의는 P'seps 내의 모든 점을 P을 포함하여 반환합니다. 여기

은 ( Wikipedia에서) 알고리즘의

핵심 포인트는 EpsMinPts, 나는 점 자체가 핵심 포인트의 여부를 결정하는 동안 계산됩니다 말할 것이 더 많은 포인트와 하나로 정의되어 있기 때문에
DBSCAN(D, eps, MinPts) 
    C = 0 
    for each unvisited point P in dataset D 
     mark P as visited 
     NeighborPts = regionQuery(P, eps) 
     if sizeof(NeighborPts) < MinPts 
     mark P as NOISE 
     else 
     C = next cluster 
     expandCluster(P, NeighborPts, C, eps, MinPts) 

expandCluster(P, NeighborPts, C, eps, MinPts) 
    add P to cluster C 
    for each point P' in NeighborPts 
     if P' is not visited 
     mark P' as visited 
     NeighborPts' = regionQuery(P', eps) 
     if sizeof(NeighborPts') >= MinPts 
      NeighborPts = NeighborPts joined with NeighborPts' 
     if P' is not yet member of any cluster 
     add P' to cluster C 

regionQuery(P, eps) 
    return all points within P's eps-neighborhood (including P) 

아닙니다.

+0

합법적 인 것 같습니다. 감사합니다. – user3628045

1

DBSCAN은 데이터베이스 컨텍스트가있는 알고리즘입니다.

좋은 성능을 얻으려면 색인을 사용하여 이러한 쿼리를 가속화 할 수있는 데이터베이스가 필요합니다. 이렇게하면 런타임이 O(n^2)에서 O(n log n)으로 줄어 듭니다. 당신이 데이터베이스의 범위 쿼리를 보낼 경우

, 그것은 질의 지점을 포함 모든 다음은이 지역 내의 개체, 를 반환합니다. 쿼리 결과를 수동으로 제거해야합니다.

또한 논리적 인 관점에서 보면 : 밀도 측정 값입니다. 밀도 추정에서 왜 쿼리 개체를 제외해야합니까? 데이터 집합의 일부이므로 다른 개체와 마찬가지로 밀도에 기여해야합니다.

각 쿼리의 데이터 집합에서 쿼리 포인트를 제거해야하는 이유는 없습니다.

+0

나는 내 질문에 대해 잘못 이해했거나 다른 질문과 혼동했다. :) – user3628045

+0

아니, 나는하지 않았다. "포인트 자체"는 일반적으로 데이터베이스 컨텍스트에서 "쿼리 포인트"라고합니다. 이 지점의 이웃에 대해 데이터베이스를 쿼리하기 때문입니다. –

+0

당신은 가장 옳았습니다. 나는 당신의 글을 조금 빨리 읽었습니다. 죄송합니다. 재생 해 주셔서 감사합니다. – user3628045