DBSCAN 밑바닥부터 구현하기: 밀도 기반 클러스터링 (노이즈 포함)
요약
K-Means와 달리 클러스터 개수를 지정할 필요가 없는 밀도 기반 클러스터링 알고리즘 DBSCAN의 원리를 설명합니다. 핵심 점, 경계 점, 노이즈의 개념을 통해 임의의 형태를 가진 데이터를 효과적으로 분류하는 방법을 다룹니다.
핵심 포인트
- eps(반경)와 minPts(최소 이웃 수) 파라미터로 동작
- 클러스터 개수를 사전에 지정할 필요 없음
- 초승달 모양 등 임의의 형태를 가진 데이터 클러스터링 가능
- 밀도가 낮은 점을 노이즈(이상치)로 분류 가능
- 공간 데이터 및 이상 탐지에 유용함
K-Means는 클러스터의 개수를 직접 선택해야 하며, 오직 둥근 형태의 덩어리(blobs)만 찾아냅니다. DBSCAN은 이 두 가지를 모두 하지 않습니다. 밀도가 높은 영역으로부터 클러스터를 확장하며, 클러스터 개수를 스스로 찾아내고, 이상치(outliers)를 노이즈로 표시합니다. 여기 K-Means가 절대 분리할 수 없었던 두 개의 초승달 모양(two moons)을 클러스터링하는 예시가 있습니다.
🌌 직접 해보기 (eps + minPts 조절): https://dev48v.infy.uk/ml/day16-dbscan.html
두 개의 노브(knobs), K는 없음
- eps — 이웃 반경 (neighborhood radius).
- minPts — 한 점이 "밀집(dense)"되었다고 간주되기 위해 필요한 이웃의 수 (eps 범위 내).
그게 전부입니다. 클러스터가 몇 개인지 말할 필요가 없습니다.
세 가지 종류의 점
- Core (핵심 점) — eps 내에 minPts 이상의 이웃을 가짐 (밀집 영역에 위치).
- Border (경계 점) — 핵심 점의 eps 범위 내에 있지만, 스스로는 밀집되지 않음.
- Noise (노이즈) — 둘 다 아님. 외톨이들. DBSCAN은 이들을 클러스터에 강제로 포함시키는 대신 이상치(outliers)로 레이블링합니다.
클러스터가 형성되는 방식
방문하지 않은 점을 선택합니다. 만약 그 점이 핵심 점(core point)이라면, 클러스터를 시작하고 밀도 연결된(density-connected) 핵심 점들을 통해 밖으로 확장하며(BFS 방식), 그들의 경계 점들을 휩쓸어 담습니다. 이를 반복합니다. 클러스터가 밀도를 통해 사슬처럼 연결되기 때문에, DBSCAN은 초승달, 고리, 덩어리 등 **임의의 형태 (arbitrary shapes)**를 찾아낼 수 있으며, 클러스터의 개수는 데이터로부터 자연스럽게 나타납니다.
언제 사용하는가
공간/지리 데이터(spatial/geo data) 및 이상 탐지(anomaly detection, 노이즈 = 이상치)에 매우 유용합니다. 클러스터들의 밀도가 매우 다르거나 고차원(high dimensions) 데이터인 경우에는 취약합니다.
🔨 페이지에서 밑바닥부터 구현됨 (지역 쿼리(region query) → 핵심/경계/노이즈 → BFS 확장): https://dev48v.infy.uk/ml/day16-dbscan.html
MachineLearningFromZero의 일부입니다. 🌐 https://dev48v.infy.uk
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기