맨위로가기

DBSCAN

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)은 밀도 기반 클러스터링 알고리즘으로, 주어진 데이터 집합을 밀도가 높은 영역(클러스터)으로 묶고, 밀도가 낮은 영역의 데이터를 노이즈로 분류한다. 이 알고리즘은 ε(epsilon, 반경)과 minPts(클러스터를 형성하기 위한 최소 점 개수)라는 두 가지 매개변수를 사용하여 작동하며, k-평균과 달리 클러스터의 개수를 미리 지정할 필요가 없다. DBSCAN은 임의의 모양의 클러스터를 찾을 수 있고, 이상치에 강건하며, 데이터베이스 인덱스를 사용하여 쿼리 성능을 가속화할 수 있다는 장점이 있다. 하지만 밀도가 다른 클러스터를 효과적으로 분리하기 어렵고, 고차원 데이터에서는 거리 기반 척도가 유효하지 않을 수 있다는 단점도 존재한다. DBSCAN은 다양한 프로그래밍 언어와 라이브러리에서 구현되어 있으며, GDBSCAN, HDBSCAN* 등과 같은 확장 버전도 존재한다.

더 읽어볼만한 페이지

  • 클러스터 분석 알고리즘 - 기댓값 최대화 알고리즘
  • 클러스터 분석 알고리즘 - 계층적 군집화
    계층적 군집화는 데이터 개체들을 계층적인 클러스터 구조로 조직화하는 군집 분석 방법으로, 개별 객체에서 시작하여 점진적으로 클러스터를 병합하거나 전체 데이터 셋에서 시작하여 클러스터를 분할하는 방식으로 진행되며, 덴드로그램을 통해 시각적으로 표현되고 다양한 연결 기준과 알고리즘을 사용해 데이터 특성에 맞는 클러스터링 결과를 제공한다.
DBSCAN
개요
이름DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
설명밀도 기반 공간 클러스터링 알고리즘
종류데이터 클러스터링
고안자마틴 에스터
한스-페터 크리겔
요르크 잔더
샤오웨이 쉬
발표 연도1996년
수상2014년 SIGKDD "Test of Time" 상 수상
세부 사항
범주밀도 준거 클러스터링

2. 역사

1972년, 로버트 F. 링은 "k-클러스터의 이론과 구성"[7]에서 DBSCAN과 밀접하게 관련된 알고리즘을 발표했으며, 이 알고리즘은 대략 O(n³)의 실행 시간 복잡도를 가졌다.[7] DBSCAN은 최악의 경우 O(n²)의 복잡도를 가지며, DBSCAN의 데이터베이스 기반 범위 쿼리 공식은 색인 가속을 가능하게 한다. 두 알고리즘은 경계점 처리 방식에서 약간의 차이를 보인다.

3. 기본 개념

DBSCAN 알고리즘은 클러스터를 구성하기 위해, ε (epsilon, 특정 점을 중심으로 한 반경)과 minPts (minimum points, 클러스터를 형성하기 위해 필요한 최소 점의 개수)라는 두 가지 주요 매개변수를 사용한다. 이 두 매개변수를 바탕으로, 점들은 다음과 같이 분류된다.


  • 핵심점 (Core point): ε 반경 내에 minPts 개 이상의 점을 포함하는 점.
  • 경계점 (Border point): 핵심점은 아니지만, 적어도 하나의 핵심점으로부터 ε 거리 이내에 있는 점.
  • 이상치 (Outlier) 또는 노이즈 (Noise): 핵심점도, 경계점도 아닌 점.


이러한 분류를 바탕으로, 다음과 같은 개념들이 정의된다.

  • 직접 도달 가능 (Directly density-reachable): 점 q가 핵심점 p의 ε 반경 내에 있으면, q는 p로부터 직접 도달 가능하다.
  • 도달 가능 (Density-reachable): 점 p에서 점 q로 가는 경로 상의 모든 점이 핵심점이고(마지막 점 q는 제외 가능), 각 점이 이전 점으로부터 직접 도달 가능하면, q는 p로부터 도달 가능하다.
  • 밀도 연결 (Density-connected): 두 점 p와 q가 모두 어떤 점 o로부터 도달 가능하면, p와 q는 밀도 연결되어 있다. 밀도 연결성은 대칭적이다.


400px


위 그림에서 minPts = 4인 경우를 예시로 살펴보자. 점 A와 다른 빨간색 점들은 ε 반경 안에 자기 자신을 포함하여 4개 이상의 점을 가지므로 핵심점이다. 핵심점들은 서로 도달 가능하므로, 하나의 클러스터를 형성한다. 점 B와 C는 핵심점은 아니지만, 핵심점 A로부터 도달 가능하므로, 같은 클러스터에 속한다. 점 N은 핵심점도 아니고, 다른 핵심점으로부터 도달 가능하지도 않으므로 이상치, 즉 노이즈 점으로 분류된다.

DBSCAN에서 클러스터는 다음 두 가지 속성을 만족해야 한다.

1. 클러스터 내의 모든 점은 서로 밀도 연결되어 있다.

2. 어떤 점이 클러스터의 어느 점으로부터 밀도 도달 가능하다면, 그 점도 클러스터의 일부이다.[9]

4. 알고리즘

DBSCAN 알고리즘은 ε(입실론)과 밀집 영역을 형성하는 데 필요한 최소 점 수(minPts)라는 두 매개변수를 사용하여 작동한다. 알고리즘은 데이터베이스에서 아직 방문하지 않은 임의의 점 P에서 시작한다. 점 P의 ε-이웃을 검색하여, 이웃 점의 수가 minPts 이상이면 P를 핵심점(core point)으로 간주하고 새로운 클러스터를 시작한다. 그렇지 않으면 P는 노이즈 점으로 레이블된다.

핵심점 P가 발견되면, P의 ε-이웃에 있는 모든 점들도 같은 클러스터에 속하게 된다. 이웃 점들 중에서도 핵심점이 있다면, 그 핵심점의 ε-이웃 역시 클러스터에 추가된다. 이러한 방식으로, 밀도 있게 연결된 점들이 하나의 클러스터를 형성하게 된다. 이 과정은 더 이상 새로운 점을 추가할 수 없을 때까지 반복된다.

모든 점에 대해 이 과정을 반복하면, 데이터베이스 내의 모든 클러스터가 발견되거나 노이즈 점으로 분류된다.

DBSCAN은 거리 함수(distance function)를 사용하여 점 간의 거리를 계산하며, 다양한 거리 함수를 사용할 수 있다.[1][9][12]

알고리즘은 다음과 같은 의사 코드로 표현할 수 있다.[9]

```

DBSCAN(DB, distFunc, eps, minPts) {

C := 0 ''/* 클러스터 카운터 */''

'''각''' 점 P '''에 대해''' 데이터베이스 DB '''내에서''' {

'''만약''' label(P) ≠ undefined '''이라면''' '''계속''' ''/* 이전에 내부 루프에서 처리됨 */''

이웃 N := RangeQuery(DB, distFunc, P, eps) ''/* 이웃 찾기 */''

'''만약''' |N| < minPts '''이라면''' { ''/* 밀도 검사 */''

label(P) := 노이즈 ''/* 노이즈로 레이블 */''

'''계속'''

}

C := C + 1 ''/* 다음 클러스터 레이블 */''

label(P) := C ''/* 초기 점 레이블 */''

시드 집합 S := N \ {P} ''/* 확장할 이웃 */''

'''각''' 점 Q '''에 대해''' S '''내에서''' { ''/* 모든 시드 점 Q 처리 */''

'''만약''' label(Q) = 노이즈 '''라면''' label(Q) := C ''/* 노이즈를 경계점으로 변경 */''

'''만약''' label(Q) ≠ undefined '''이라면''' '''계속''' ''/* 이전에 처리됨 (예: 경계점) */''

label(Q) := C ''/* 이웃 레이블 */''

이웃 N := RangeQuery(DB, distFunc, Q, eps) ''/* 이웃 찾기 */''

'''만약''' |N| ≥ minPts '''이라면''' { ''/* 밀도 검사 (Q가 핵심점인 경우) */''

S := S ∪ N ''/* 새로운 이웃을 시드 집합에 추가 */''

}

}

}

}

RangeQuery(DB, distFunc, Q, eps) {

이웃 N := 빈 목록

'''각''' 점 P '''에 대해''' 데이터베이스 DB '''내에서''' { ''/* 데이터베이스의 모든 점 스캔 */''

'''만약''' distFunc(Q, P) ≤ eps '''이라면''' { ''/* 거리 계산 및 엡실론 확인 */''

N := N ∪ {P} ''/* 결과에 추가 */''

}

}

'''반환''' N

}

```

위 의사 코드에서 `RangeQuery` 함수는 주어진 점 Q의 ε-이웃을 찾아 반환하는 역할을 한다. 이 함수는 데이터베이스 인덱스를 사용하여 효율적으로 구현하거나, 단순하게 모든 점과의 거리를 계산하여 구현할 수 있다.

4. 1. 원본 쿼리 기반 알고리즘

DBSCAN은 두 개의 매개변수, ε (eps)와 밀집 영역을 형성하는 데 필요한 최소 점 수(minPts)를 필요로 한다.[16] 알고리즘은 아직 방문하지 않은 임의의 시작점에서 처리를 시작한다. 이 점의 ε 근방을 검색하고, 충분히 많은 점을 포함하고 있다면, 클러스터가 시작된다. 그렇지 않으면, 그 점은 노이즈 점으로 라벨링된다. 주의할 점은, 이 점은 나중에 다른 점으로부터 볼 때 임계값 이상의 점을 포함하는 ε 근방의 일부가 되어, 어떤 클러스터의 일부가 될 수 있다는 것이다.

어떤 점이 어떤 클러스터의 밀집 부분임이 판명되면, 그 ε 근방도 또한 그 클러스터의 일부이다. 그러므로, ε 근방 내에 있는 모든 점이 더해지고, 그것들이 조밀할 때는 그들 자신의 ε-근방도 마찬가지로 더해진다. 이 과정은 밀도 연결 클러스터(density-connected cluster)가 완전히 발견될 때까지 계속된다. 그리고 아직 방문되지 않은 새로운 점이 검색 및 처리되어, 추가적인 클러스터 또는 노이즈가 발견된다.

알고리즘은 다음과 같은 원래 게시된 명명법을 따르는 의사 코드로 나타낼 수 있다.[16]

```

DBSCAN(D, eps, MinPts) {

C = 0

for each point P in dataset D {

if P is visited

continue next point

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)

```

이 알고리즘은 "expandCluster" 서브루틴 (이것은 한 곳에서만 호출된다)의 인라인화 및 점별 "이미 방문한 점" 및 "클러스터 C에 소속하는" 로직을 통합함으로써 단순화할 수 있다. 이러한 단순화는 원래 게시된 버전을 반영하기 위해 위의 의사 코드에서는 생략되어 있다. 또한 regionQuery 함수는 로컬 밀도 추정으로 아직 카운트되고 있는 한, 방문해야 할 점 목록 내에서 P를 반환할 필요는 없다.

4. 2. 추상 알고리즘

DBSCAN은 ε (eps)와 최소 점의 수(minPts)라는 두 가지 매개변수를 필요로 한다.[16] 알고리즘은 아직 방문하지 않은 임의의 시작점에서 시작한다. 이 점의 ε-근방을 검색하여 충분히 많은 점을 포함하면 클러스터가 시작된다. 그렇지 않으면 해당 점은 노이즈 점으로 표시된다. 그러나 이 점은 나중에 다른 점의 ε-근방에 포함되어 특정 클러스터의 일부가 될 수 있다.

만약 어떤 점이 클러스터의 밀집 부분이라면, 그 ε-근방도 해당 클러스터의 일부가 된다. 따라서 ε-근방 내의 모든 점들이 추가되고, 그 점들이 밀집되어 있으면 그 점들의 ε-근방도 추가된다. 이 과정은 밀도 연결 클러스터가 완전히 발견될 때까지 계속된다. 그런 다음 방문하지 않은 새로운 점을 검색하고 처리하여 추가 클러스터 또는 노이즈를 발견한다.

알고리즘은 다음과 같은 의사 코드로 나타낼 수 있다.[16]

```

DBSCAN(D, eps, MinPts) {

C = 0

'''for each''' point P in dataset D {

'''if''' P is visited

'''continue''' next point

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)

```

이 알고리즘은 "expandCluster" 서브루틴의 내용을 인라인화하고, 점별 "이미 방문한 점" 및 "클러스터 C에 소속하는" 로직을 통합하여 단순화할 수 있다.

5. 장점

DBSCAN은 k-평균과 달리 데이터의 군집 개수를 미리 지정할 필요가 없다.[1] 임의의 모양을 가진 군집을 찾을 수 있으며, 심지어 다른 군집에 완전히 둘러싸여 있지만 연결되지 않은 군집도 찾을 수 있다. MinPts 매개변수 때문에 소위 단일 연결 효과(얇은 점선으로 연결된 서로 다른 군집)가 감소한다.[1] DBSCAN은 노이즈 개념을 가지고 있으며, 이상치에 강건하다.[1] DBSCAN은 단 두 개의 매개변수만 필요하며, 데이터베이스 내 점들의 순서에 거의 영향을 받지 않는다. (하지만, 서로 다른 두 군집의 경계에 있는 점들은 점의 순서가 변경되면 군집 소속이 바뀔 수 있으며, 군집 할당은 동형 사상까지 고유하다.)[1] DBSCAN은 예를 들어 R* 트리를 사용하여 영역 쿼리를 가속화할 수 있는 데이터베이스와 함께 사용하도록 설계되었다.[1] 데이터가 잘 이해되어 있다면, 도메인 전문가가 MinPts 및 ε 매개변수를 설정할 수 있다.[1]

6. 단점

DBSCAN은 다음과 같은 몇 가지 단점을 가지고 있다.


  • DBSCAN은 경계점(border point)에 대해 결정론적이지 않다. 데이터 처리 순서에 따라 하나 이상의 클러스터에서 도달 가능한 경계점은 어느 클러스터에도 속할 수 있다. 하지만 대부분의 경우 이러한 상황은 자주 발생하지 않으며, 클러스터링 결과에 큰 영향을 주지 않는다. 핵심점(core point)과 노이즈점(noise point)에 대해서는 DBSCAN이 결정론적이다. DBSCAN*[19]은 경계점을 노이즈로 처리하여 이러한 문제를 해결하고, 완전히 결정론적인 결과를 도출한다.
  • DBSCAN의 품질은 `regionQuery(P, ε)` 함수에서 사용되는 거리 함수에 따라 달라진다. 가장 일반적으로 사용되는 것은 유클리드 거리이다. 그러나 고차원 데이터에서는 "차원의 저주" 때문에 유클리드 거리가 효과적이지 않을 수 있으며, 적절한 ε 값을 찾기 어려워진다. 이러한 문제는 유클리드 거리를 사용하는 다른 알고리즘에서도 나타난다.
  • DBSCAN은 밀도가 크게 다른 데이터 집합을 클러스터링하는 데 어려움을 겪는다. 모든 클러스터에 대해 적절한 minPts-ε 조합을 선택하는 것이 불가능하기 때문이다.
  • 데이터와 스케일을 잘 이해하지 못하면 의미 있는 거리 임계값 ε을 선택하기가 어렵다.

7. 매개변수 추정


  • MinPts:
  • :* 데이터 세트의 차원(D)을 고려하여 ''minPts'' ≥ D + 1로 설정하는 것이 일반적이다. 노이즈가 많은 데이터에는 더 큰 값을 사용하는 것이 좋다. ''minPts'' = 1이면 모든 점이 핵심점이 되므로 의미가 없으며, ''minPts'' ≤ 2이면 계층적 클러스터링과 결과가 같아진다. 따라서 최소 3 이상으로 설정해야 한다. 매우 크거나 노이즈가 많거나 중복이 많은 데이터에는 더 큰 값을 선택해야 할 수 있다.[9][12]

  • ε (입실론):
  • :* k-거리 그래프를 그려서 "엘보" 지점을 찾거나, OPTICS 플롯을 활용하여 적절한 값을 찾는다. k-거리 그래프는 k = ''minPts'' - 1로 설정하고, 가장 가까운 k번째 이웃까지의 거리를 플롯하여 "엘보"가 나타나는 지점을 ε 값으로 선택한다.[1][12][9] 너무 작은 ε 값은 대부분의 데이터를 클러스터링하지 못하게 하고, 너무 큰 ε 값은 클러스터들을 병합시켜 대부분의 점이 동일한 클러스터에 속하게 만든다. 일반적으로 작은 ε 값이 선호된다.[9]

  • 거리 함수:
  • :* 데이터의 특성에 맞는 거리 함수를 선택해야 한다. 예를 들어 지리적 데이터에는 대원 거리가 적합할 수 있다. 거리 함수의 선택은 ε의 선택과 밀접하게 관련되어 결과에 큰 영향을 미치므로, 데이터 세트에 적합한 함수를 신중하게 선택해야 한다.

8. 확장

GDBSCAN (Generalized DBSCAN)[12][13][20][21]은 임의의 "이웃"과 "밀도" 술어를 사용할 수 있도록 일반화된 버전이다. ε(엡실론)과 ''minPts'' 매개변수는 원래 알고리즘에서 제거되어 술어로 이동한다. 예를 들어, 다각형 데이터의 경우 "이웃"은 교차하는 모든 다각형일 수 있으며, 밀도 술어는 객체 수 대신 다각형 면적을 사용한다.

DBSCAN 알고리즘에 대한 다양한 확장이 제안되었는데, 여기에는 병렬화, 매개변수 추정, 불확실한 데이터 지원을 위한 방법이 포함된다. 기본적인 아이디어는 OPTICS 알고리즘에 의해 계층적 클러스터링으로 확장되었다. DBSCAN은 PreDeCon 및 SUBCLU와 같은 부분 공간 클러스터링 알고리즘의 일부로도 사용된다. HDBSCAN*[5][6][19]은 OPTICS보다 빠른 DBSCAN의 계층적 버전으로, 계층에서 가장 두드러진 클러스터로 구성된 평면 분할을 추출할 수 있다.[14][22]

9. 구현

DBSCAN 알고리즘은 다양한 프로그래밍 언어와 라이브러리에서 구현되어 제공된다. 하지만 동일한 알고리즘이라도 구현 방식에 따라 성능 차이가 크게 나타날 수 있다. 테스트 데이터 세트에서 가장 빠른 구현은 1.4초가 걸린 반면, 가장 느린 구현은 13803초가 소요되었다.[15] 이러한 성능 차이는 구현 품질, 프로그래밍 언어, 컴파일러의 차이, 그리고 가속화를 위한 색인 사용 여부에 따라 발생한다.

다음은 DBSCAN 알고리즘의 주요 구현 목록이다.

프로그래밍 언어/라이브러리설명
아파치 커먼즈(Apache Commons) Math이차 시간 복잡도를 가지는 자바 구현을 제공한다.[15]
ELKIDBSCAN, GDBSCAN 및 기타 변형 알고리즘을 제공한다. 다양한 색인 구조를 사용하여 이차 시간 미만의 성능을 낼 수 있지만, 작은 데이터 세트에서는 최적화된 구현보다 느릴 수 있다.[15]
MATLABR2019a 버전부터 "통계 및 머신러닝 툴박스"에 DBSCAN 구현이 포함되었다.
mlpack이중 트리 범위 검색 기술로 가속화된 DBSCAN 구현을 제공한다.
PostGISR-tree 색인을 사용하는 2차원 DBSCAN 구현인 ST_ClusterDBSCAN 함수를 제공한다. Point, LineString, Polygon 등 모든 지오메트리 유형을 지원한다.
Rdbscan 및 fpc 패키지에서 DBSCAN 구현을 제공한다. 두 패키지 모두 거리 행렬을 통해 임의의 거리 함수를 지원하지만, fpc 패키지는 색인을 지원하지 않아 속도가 느리다. dbscan 패키지는 k-d 트리를 사용하는 빠른 C++ 구현을 제공하며, DBSCAN*, HDBSCAN*, OPTICS, OPTICSXi 등 관련 알고리즘도 포함한다.[15]
scikit-learn민코프스키 거리를 지원하는 파이썬 구현을 제공한다. k-d 트리나 볼 트리를 사용하여 가속화할 수 있지만, 최악의 경우 이차 메모리를 사용한다. scikit-learn-contrib 프로젝트에서 HDBSCAN* 알고리즘 구현을 제공한다.
pyclustering유클리드 거리를 지원하는 파이썬 및 C++ 구현과 OPTICS 알고리즘을 제공한다.
SPMF유클리드 거리를 지원하고 k-d 트리를 사용하는 DBSCAN 알고리즘의 GPL-V3 자바 구현을 제공한다.
Weka이차 시간 및 선형 메모리 사용량을 가지는 기본적인 DBSCAN 구현을 (최신 버전의 선택적 패키지로) 제공한다.
linfa러스트로 작성된 DBSCAN 구현을 제공한다.
줄리아Clustering.jl 패키지에 DBSCAN 구현이 포함되어 있다.


참조

[1] 컨퍼런스 A density-based algorithm for discovering clusters in large spatial databases with noise https://cdn.aaai.org[...] AAAI Press
[2] 웹사이트 Microsoft Academic Search: Papers http://academic.rese[...] 2010-04-18
[3] 웹사이트 2014 SIGKDD Test of Time Award http://www.kdd.org/N[...] ACM SIGKDD 2014-08-18
[4] 웹사이트 TODS Home https://dl.acm.org/j[...] Association for Computing Machinery 2020-07-16
[5] 컨퍼런스 Density-Based Clustering Based on Hierarchical Density Estimates http://link.springer[...] Springer Berlin Heidelberg 2023-08-18
[6] 저널 Hierarchical Density Estimates for Data Clustering, Visualization, and Outlier Detection
[7] 저널 On the theory and construction of k-clusters https://academic.oup[...] 1972-01-01
[8] 서적 Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining ACM 2023-08-06
[9] 저널 DBSCAN Revisited, Revisited: Why and How You Should (Still) Use DBSCAN https://www.vitavonn[...] 2017-07
[10] 저널 Density-based Clustering http://wires.wiley.c[...] 2011-12-12
[11] 컨퍼런스 The Relationship of DBSCAN to Matrix Factorization and Spectral Clustering http://ceur-ws.org/V[...] 2018
[12] 저널 Density-Based Clustering in Spatial Databases: The Algorithm GDBSCAN and Its Applications Springer-Verlag
[13] 서적 Generalized Density-Based Clustering for Spatial Data Mining Herbert Utz Verlag
[14] 저널 A framework for semi-supervised and unsupervised optimal extraction of clusters from hierarchies
[15] 저널 The (black) art of runtime evaluation: Are we comparing algorithms or implementations?
[16] 컨퍼런스 A density-based algorithm for discovering clusters in large spatial databases with noise AAAI Press
[17] 문서 http://academic.rese[...]
[18] 웹사이트 2014 SIGKDD Test of Time Award http://www.kdd.org/N[...] ACM SIGKDD 2014-08-18
[19] 저널 Hierarchical Density Estimates for Data Clustering, Visualization, and Outlier Detection
[20] 저널 Density-Based Clustering in Spatial Databases: The Algorithm GDBSCAN and Its Applications http://www.springerl[...] Springer-Verlag
[21] 서적 Generalized Density-Based Clustering for Spatial Data Mining Herbert Utz Verlag
[22] 저널 A framework for semi-supervised and unsupervised optimal extraction of clusters from hierarchies
[23] 저널 The (black) art of runtime evaluation: Are we comparing algorithms or implementations?
[24] 컨퍼런스 A density-based algorithm for discovering clusters in large spatial databases with noise https://cdn.aaai.org[...] AAAI Press
[25] 웹인용 Microsoft Academic Search: Papers http://academic.rese[...] 2010-04-18
[26] 웹인용 2014 SIGKDD Test of Time Award http://www.kdd.org/N[...] ACM SIGKDD 2016-07-27
[27] 저널 DBSCAN Revisited, Revisited: Why and How You Should (Still) Use DBSCAN https://www.vitavonn[...] 2017-07
[28] 웹인용 TODS Home https://dl.acm.org/j[...] Association for Computing Machinery 2020-07-16
[29] 컨퍼런스 Density-Based Clustering Based on Hierarchical Density Estimates http://link.springer[...] Springer Berlin Heidelberg 2023-08-18
[30] 저널 Hierarchical Density Estimates for Data Clustering, Visualization, and Outlier Detection



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com