Visual explainer
DBSCAN
How grouping by crowd density finds rings and chains, with core, border and noise calls shown.
Centers expect round blobs, so a ring breaks them. Every ring point sits far from both middles and the cut lands straight through the circle. You get two halves out where one ring went in.
Count Heads In Radius
Forget centers and draw a circle of radius 2 around each point. Point A holds B at 1, C at 1 and D at 1.41, four heads with itself. Four beats the bar of 3, so A counts as crowded.
Core, Border, Noise
Three fates follow from the count. A holds 4 and rules as core. F holds only itself plus E, so it borders, riding on the touching core. G stands alone with 1 and gets dismissed as noise.
Chains Fuse Crowds
Cores link through overlap: E sits 1.80 from D and 1.0 from F, both inside radius 2. So A, B, D and E fuse with border F into a single cluster. Only G stays outside the chain.
Rings Survive Intact
Run the chain around twelve ring points and the whole loop fuses into one cluster. Four strays never join a crowd and stay noise. You never guessed a cluster count; density decided everything for you.
Size Splits Or Merges
A radius of 1.5 chops one crowd into two pieces. A radius of 3 glues two crowds into one blob. You set the radius against your gap sizes, then raise minPts when dust keeps joining the party.
Where It Breaks
One global radius dies on mixed densities. It fits the tight blob spaced 0.5 yet strands the loose blob spaced 3, dumping eight sparse points as noise. Varying densities need a varying-radius method instead.
The Quick Version
- Centers slice rings into wrong halves.
- Radius 2 around A holds 4 neighbours.
- Counts 4, 2 and 1 mean core, border, noise.
- E links D and F into one chain.
- Twelve ring points fuse; 4 strays ignored.
- Small radius splits, big radius merges.
- Mixed densities defeat one global radius.