Class TriangularDiscriminationDistance

  • All Implemented Interfaces:
    Distance<NumberVector>, NumberVectorDistance<NumberVector>, PrimitiveDistance<NumberVector>, SpatialPrimitiveDistance<NumberVector>
    Direct Known Subclasses:
    TriangularDistance

    @Reference(authors="F. Tops\u00f8e",
               title="Some inequalities for information divergence and related measures of discrimination",
               booktitle="IEEE Transactions on information theory, 46(4)",
               url="https://doi.org/10.1109/18.850703",
               bibkey="DBLP:journals/tit/Topsoe00")
    public class TriangularDiscriminationDistance
    extends AbstractNumberVectorDistance
    implements SpatialPrimitiveDistance<NumberVector>
    Triangular Discrimination has relatively tight upper and lower bounds to the Jensen-Shannon divergence, but is much less expensive.

    Triangular-Discrimination(x,y):=i|xiyi|2xi+yi

    This distance function is meant for distribution vectors that sum to 1, and does not work on negative values.

    See also TriangularDistance for a metric version.

    Reference:

    F. Topsøe
    Some inequalities for information divergence and related measures of discrimination
    IEEE Transactions on information theory, 46(4).

    TODO: support sparse vectors, varying length

    Since:
    0.7.5
    Author:
    Erich Schubert
    • Constructor Detail

      • TriangularDiscriminationDistance

        @Deprecated
        public TriangularDiscriminationDistance()
        Deprecated.
        Use static instance!
        Constructor for the Triangular Discrimination - use STATIC instead.
    • Method Detail

      • isSquared

        public boolean isSquared()
        Description copied from interface: Distance
        Squared distances, that would become metric after square root.

        E.g. squared Euclidean.

        Specified by:
        isSquared in interface Distance<NumberVector>
        Returns:
        true when squared.
      • toString

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

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object