|
|
|||||||||||||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.lmu.ifi.dbs.elki.logging.AbstractLoggable
de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizable
de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm<V,Clustering<Model>>
de.lmu.ifi.dbs.elki.algorithm.clustering.subspace.ProjectedClustering<V>
de.lmu.ifi.dbs.elki.algorithm.clustering.subspace.PROCLUS<V>
V
- the type of Realvector handled by this Algorithmpublic class PROCLUS<V extends RealVector<V,?>>
Provides the PROCLUS algorithm, an algorithm to find subspace clusters in high dimensional spaces. Reference:
Nested Class Summary | |
---|---|
private class |
PROCLUS.PROCLUSCluster
Encapsulates the attributes of a cluster. |
Field Summary | |
---|---|
private int |
m_i
Holds the value of M_I_PARAM . |
static OptionID |
M_I_ID
OptionID for M_I_PARAM |
private IntParameter |
M_I_PARAM
Parameter to specify the multiplier for the initial number of medoids, must be an integer greater than 0. |
Fields inherited from class de.lmu.ifi.dbs.elki.algorithm.clustering.subspace.ProjectedClustering |
---|
K_I_ID, K_ID, L_ID |
Fields inherited from class de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizable |
---|
optionHandler |
Fields inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable |
---|
debug, logger |
Constructor Summary | |
---|---|
PROCLUS()
Provides the PROCLUS algorithm, adding parameter M_I_PARAM
to the option handler additionally to parameters of super class. |
Method Summary | |
---|---|
private Map<Integer,PROCLUS.PROCLUSCluster> |
assignPoints(Map<Integer,Set<Integer>> dimensions,
Database<V> database)
Assigns the objects to the clusters. |
private double |
avgDistance(V centroid,
Set<Integer> objectIDs,
Database<V> database,
int dimension)
Computes the average distance of the objects to the centroid along the specified dimension. |
private Set<Integer> |
computeBadMedoids(Map<Integer,PROCLUS.PROCLUSCluster> clusters,
int threshold)
Computes the bad medoids, where the medoid of a cluster with less than the specified threshold of objects is bad. |
private Set<Integer> |
computeM_current(Set<Integer> m,
Set<Integer> m_best,
Set<Integer> m_bad)
Computes the set of medoids in current iteration. |
private double |
evaluateClusters(Map<Integer,PROCLUS.PROCLUSCluster> clusters,
Map<Integer,Set<Integer>> dimensions,
Database<V> database)
Evaluates the quality of the clusters. |
private Map<Integer,Set<Integer>> |
findDimensions(Set<Integer> medoids,
Database<V> database)
Determines the set of correlated dimensions for each medoid in the specified medoid set. |
Description |
getDescription()
Returns a description of the algorithm. |
private Map<Integer,List<DistanceResultPair<DoubleDistance>>> |
getLocalities(Set<Integer> m_c,
Database<V> database)
Computes the localities of the specified medoids. |
private Set<Integer> |
greedy(Set<Integer> sampleSet,
int m)
Returns a piercing set of k medoids from the specified sample set. |
private Set<Integer> |
initialSet(Set<Integer> sampleSet,
int k)
Returns a set of k elements from the specified sample set. |
private double |
manhattanSegmentalDistance(V o1,
V o2,
Set<Integer> dimensions)
Returns the Manhattan segmental distance between o1 and o2 realtive to the specified dimensions. |
protected Clustering<Model> |
runInTime(Database<V> database)
Performs the PROCLUS algorithm on the given database. |
List<String> |
setParameters(List<String> args)
Calls the super method and sets additionally the value of the parameter M_I_PARAM . |
Methods inherited from class de.lmu.ifi.dbs.elki.algorithm.clustering.subspace.ProjectedClustering |
---|
getDistanceFunction, getK_i, getK, getL, getResult, setResult |
Methods inherited from class de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm |
---|
isTime, isVerbose, run, setTime, setVerbose |
Methods inherited from class de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizable |
---|
addOption, addParameterizable, addParameterizable, checkGlobalParameterConstraints, collectOptions, getAttributeSettings, getParameters, rememberParametersExcept, removeOption, removeParameterizable, shortDescription |
Methods inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable |
---|
debugFine, debugFiner, debugFinest, exception, progress, verbose, warning |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface de.lmu.ifi.dbs.elki.algorithm.clustering.ClusteringAlgorithm |
---|
run |
Methods inherited from interface de.lmu.ifi.dbs.elki.algorithm.Algorithm |
---|
setTime, setVerbose |
Methods inherited from interface de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable |
---|
checkGlobalParameterConstraints, collectOptions, getParameters, shortDescription |
Field Detail |
---|
public static final OptionID M_I_ID
M_I_PARAM
private final IntParameter M_I_PARAM
Default value: 10
Key: -proclus.mi
private int m_i
M_I_PARAM
.
Constructor Detail |
---|
public PROCLUS()
M_I_PARAM
to the option handler additionally to parameters of super class.
Method Detail |
---|
protected Clustering<Model> runInTime(Database<V> database) throws IllegalStateException
runInTime
in class AbstractAlgorithm<V extends RealVector<V,?>,Clustering<Model>>
database
- the database to run the algorithm on
IllegalStateException
- if the algorithm has not been initialized
properly (e.g. the setParameters(String[]) method has been failed
to be called).public Description getDescription()
Algorithm
public List<String> setParameters(List<String> args) throws ParameterException
M_I_PARAM
.
setParameters
in interface Parameterizable
setParameters
in class ProjectedClustering<V extends RealVector<V,?>>
args
- parameters to set the attributes accordingly to
ParameterException
- in case of wrong parameter-settingprivate Set<Integer> greedy(Set<Integer> sampleSet, int m)
sampleSet
- the sample setm
- the number of medoids to be returned
private Set<Integer> initialSet(Set<Integer> sampleSet, int k)
sampleSet
- the sample setk
- the number of samples to be returned
private Set<Integer> computeM_current(Set<Integer> m, Set<Integer> m_best, Set<Integer> m_bad)
m
- the medoidsm_best
- the best set of medoids found so farm_bad
- the bad medoids
private Map<Integer,List<DistanceResultPair<DoubleDistance>>> getLocalities(Set<Integer> m_c, Database<V> database)
m_c
- the ids of the medoidsdatabase
- the database holding the objects
private Map<Integer,Set<Integer>> findDimensions(Set<Integer> medoids, Database<V> database)
medoids
- the set of medoidsdatabase
- the database containing the objects
private Map<Integer,PROCLUS.PROCLUSCluster> assignPoints(Map<Integer,Set<Integer>> dimensions, Database<V> database)
dimensions
- set of correlated dimensions for each medoid of the clusterdatabase
- the database containing the objects
private double manhattanSegmentalDistance(V o1, V o2, Set<Integer> dimensions)
o1
- the first objecto2
- the second objectdimensions
- the dimensions to be considered
private double evaluateClusters(Map<Integer,PROCLUS.PROCLUSCluster> clusters, Map<Integer,Set<Integer>> dimensions, Database<V> database)
clusters
- the clusters to be evaluateddimensions
- the dimensions associated with each clusterdatabase
- the database holding the objects
private double avgDistance(V centroid, Set<Integer> objectIDs, Database<V> database, int dimension)
centroid
- the centroidobjectIDs
- the set of objects idsdatabase
- the database holding the objectsdimension
- the dimension for which the average distance is computed
private Set<Integer> computeBadMedoids(Map<Integer,PROCLUS.PROCLUSCluster> clusters, int threshold)
clusters
- the clustersthreshold
- the threshold
|
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |