sNNclust {dbscan} | R Documentation |
Shared Nearest Neighbor Clustering
Description
Implements the shared nearest neighbor clustering algorithm by Ertoz, Steinbach and Kumar (2003).
Usage
sNNclust(x, k, eps, minPts, borderPoints = TRUE, ...)
Arguments
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 |
Details
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.
Value
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. |
Author(s)
Michael Hahsler
References
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
See Also
Other clustering functions:
dbscan()
,
extractFOSC()
,
hdbscan()
,
jpclust()
,
optics()
Examples
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)
cl
plot(DS3, col = cl$cluster + 1L, cex = .5)