sNNclust {dbscan} | R Documentation |
Implements the shared nearest neighbor clustering algorithm by Ertoz, Steinbach and Kumar (2003).
sNNclust(x, k, eps, minPts, borderPoints = TRUE, ...)
x |
a data matrix/data.frame (Euclidean distance is used), a
precomputed dist object or a kNN object created with |
k |
Neighborhood size for nearest neighbor sparsification to create the shared NN graph. |
eps |
Two objects are only reachable from each other if they share at
least |
minPts |
minimum number of points that share at least |
borderPoints |
should border points be assigned to clusters like in DBSCAN? |
... |
additional arguments are passed on to the k nearest neighbor
search algorithm. See |
Algorithm:
Constructs a shared nearest neighbor graph for a given k. The edge
weights are the number of shared k nearest neighbors (in the range of
[0, k]
).
Find each points SNN density, i.e., the number of points which have a
similarity of eps
or greater.
Find the core points, i.e., all points that have an SNN density greater
than MinPts
.
Form clusters from the core points and assign border points (i.e.,
non-core points which share at least eps
neighbors with a core point).
Note that steps 2-4 are equivalent to the DBSCAN algorithm (see dbscan()
)
and that eps
has a different meaning than for DBSCAN. Here it is
a threshold on the number of shared neighbors (see sNN()
)
which defines a similarity.
A object of class general_clustering
with the following
components:
cluster |
A integer vector with cluster assignments. Zero indicates noise points. |
type |
name of used clustering algorithm. |
param |
list of used clustering parameters. |
Michael Hahsler
Levent Ertoz, Michael Steinbach, Vipin Kumar, Finding Clusters of Different Sizes, Shapes, and Densities in Noisy, High Dimensional Data, SIAM International Conference on Data Mining, 2003, 47-59. doi:10.1137/1.9781611972733.5
Other clustering functions:
dbscan()
,
extractFOSC()
,
hdbscan()
,
jpclust()
,
optics()
data("DS3")
# Out of k = 20 NN 7 (eps) have to be shared to create a link in the sNN graph.
# A point needs a least 16 (minPts) links in the sNN graph to be a core point.
# Noise points have cluster id 0 and are shown in black.
cl <- sNNclust(DS3, k = 20, eps = 7, minPts = 16)
plot(DS3, col = cl$cluster + 1L, cex = .5)