class %DeepSee.extensions.clusters.PAM
extends AbstractModel
This class provides an implemantation of Partitioning Around Medoids (PAM) algorithm, a.k.a. K-Medoids
(do not mix with K-Means).
The PAM algorithm was developed by Leonard Kaufman and Peter J. Rousseeuw,
and this algorithm is very similar to K-means, mostly because both are partitional algorithms,
in other words, both break the datasets into groups, and both works trying to minimize the error,
but PAM works with Medoids, that are an entity of the dataset that represent the group in which
it is inserted, and K-means works with Centroids, that are artificially created entity that represent its cluster.
The PAM algorithm partitionates a dataset of n objects into a number k of clusters,
where both the dataset and the number k is an input of the algorithm.
This algorithm works with a matrix of dissimilarity, where its goal is to
minimize the overall dissimilarity between the representants of each cluster and its members.
Pure PAM algorithm only works when a dataset is well partitioned by its nature.
It first generates a random solution and then uses the steepest descent to optimize it. Therefore it
is prone to falling into local minimum. Two modifications implemented by subclasses PAMSA
(PAM with Simulated Annealing) and CLARA (Clustering for Large Applications) try to
alleviate this deficiency.
See Wikipedia article
for more information.
property K
as %Integer;
The number of clusters to create
method ClusterCost(k As %Integer)
as %Double
method CurrentTotalCost()
method Execute()
as %Status
method IsPrepared()
as %Boolean
Checks whether the model is ready for an analysis to be executed. This is dependent on a
specific algorithm and therefore this method is overriden by subclasses.
classmethod New(dsName As %String, Output sc As %Status)
as PAM
classmethod Open(dsName As %String, Output sc As %Status)
as PAM
method Prepare()
as %Status
method TotalCost()