Documentation of 'smile.clustering.MEC' Java class
MEC
smile.clustering

Class MEC<T>

  • All Implemented Interfaces:
    java.io.Serializable, Clustering<T>


    public class MEC<T>
    extends PartitionClustering<T>
    implements java.io.Serializable
    Nonparametric Minimum Conditional Entropy Clustering. This method performs very well especially when the exact number of clusters is unknown. The method can also correctly reveal the structure of data and effectively identify outliers simultaneously.

    The clustering criterion is based on the conditional entropy H(C | x), where C is the cluster label and x is an observation. According to Fano's inequality, we can estimate C with a low probability of error only if the conditional entropy H(C | X) is small. MEC also generalizes the criterion by replacing Shannon's entropy with Havrda-Charvat's structural α-entropy. Interestingly, the minimum entropy criterion based on structural α-entropy is equal to the probability error of the nearest neighbor method when α = 2. To estimate p(C | x), MEC employs Parzen density estimation, a nonparametric approach.

    MEC is an iterative algorithm starting with an initial partition given by any other clustering methods, e.g. k-means, CLARNAS, hierarchical clustering, etc. Note that a random initialization is NOT appropriate.

    References

    1. Haifeng Li, Keshu Zhang, and Tao Jiang. Minimum Entropy Clustering and Applications to Gene Expression Analysis. CSB, 2004.
    See Also:
    Serialized Form
    • Constructor Detail

      • MEC

        public MEC(T[] data,
                   Distance<T> distance,
                   int k,
                   double radius)
        Constructor. Clustering the data.
        Parameters:
        data - the dataset for clustering.
        distance - the distance measure for neighborhood search.
        k - the number of clusters. Note that this is just a hint. The final number of clusters may be less.
        radius - the neighborhood radius.
      • MEC

        public MEC(T[] data,
                   Metric<T> distance,
                   int k,
                   double radius)
        Constructor. Clustering the data.
        Parameters:
        data - the dataset for clustering.
        distance - the distance measure for neighborhood search.
        k - the number of clusters. Note that this is just a hint. The final number of clusters may be less.
        radius - the neighborhood radius.
      • MEC

        public MEC(T[] data,
                   RNNSearch<T,T> nns,
                   int k,
                   double radius,
                   int[] y)
        Constructor. Clustering the data.
        Parameters:
        data - the dataset for clustering.
        nns - the neighborhood search data structure.
        k - the number of clusters. Note that this is just a hint. The final number of clusters may be less.
        radius - the neighborhood radius.
        y - the initial clustering labels, which could be produced by any other clustering methods.
    • Method Detail

      • entropy

        public double entropy()
        Returns the cluster conditional entropy.
      • getRadius

        public double getRadius()
        Returns the radius of neighborhood.
      • predict

        public int predict(T x)
        Cluster a new instance.
        Specified by:
        predict in interface Clustering<T>
        Parameters:
        x - a new instance.
        Returns:
        the cluster label. Note that it may be Clustering.OUTLIER.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object

DataMelt 3.0 © DataMelt by jWork.ORG

You see the box below because you did not login.