Affinity Propagation
Affinity propagation is a clustering algorithm based on message passing between data points. Similar to K-medoids, it looks at the (dis)similarities in the data, picks one exemplar data point for each cluster, and assigns every point in the data set to the cluster with the closest exemplar.
Clustering.affinityprop
— Function.affinityprop(S::DenseMatrix; [maxiter=200], [tol=1e-6], [damp=0.5],
[display=:none])
Perform affinity propagation clustering based on a similarity matrix S
.
$S_{ij}$ ($i ≠ j$) is the similarity (or the negated distance) between the $i$-th and $j$-th points, $S_{ii}$ defines the availability of the $i$-th point as an exemplar.
Returns an instance of AffinityPropResult
.
Method parameters
damp::Real
: the dampening coefficient, $0 ≤ \mathrm{damp} < 1$. Larger values indicate slower (and probably more stable) update. $\mathrm{damp} = 0$ disables dampening.maxiter
,tol
,display
: see common options
Notes
The implementations is based on the following paper:
Brendan J. Frey and Delbert Dueck. Clustering by Passing Messages Between Data Points. Science, vol 315, pages 972-976, 2007.
Clustering.AffinityPropResult
— Type.The result of affinity propagation clustering (affinityprop
).
Fields
exemplars::Vector{Int}
: indices of exemplars (cluster centers)assignments::Vector{Int}
: cluster assignments for each data pointiterations::Int
: number of iterations executedconverged::Bool
: converged or not