Class SigniTrendChangeDetection

  • All Implemented Interfaces:
    elki.Algorithm

    @Title("Signi-Trend: scalable detection of emerging topics in textual streams by hashed significance thresholds")
    @Reference(authors="Erich Schubert, Michael Weiler, Hans-Peter Kriegel",
               title="Signi-Trend: scalable detection of emerging topics in textual streams by hashed significance thresholds",
               booktitle="Proc. 20th ACM SIGKDD international conference on Knowledge discovery and data mining",
               url="https://doi.org/10.1145/2623330.2623740",
               bibkey="DBLP:conf/kdd/SchubertWK14")
    @Priority(200)
    public class SigniTrendChangeDetection
    extends java.lang.Object
    implements elki.Algorithm
    Signi-Trend detection algorithm applies to a single time-series.

    This is not a complete implementation of the method, but a modified (two-sided) version of the significance score use in Signi-Trend for change detection. The hashing and scalability parts of Signi-Trend are not applicable here.

    This implementation currently does not use timestamps, and thus only works for fixed-interval measurements. It could be extended to allow dynamic data windows by adjusting the alpha parameter based on time deltas.

    Reference:

    Erich Schubert, Michael Weiler, Hans-Peter Kriegel
    Signi-Trend: scalable detection of emerging topics in textual streams by hashed significance thresholds
    Proc. 20th ACM SIGKDD international conference on Knowledge discovery and data mining

    TODO: add support for dynamic time, and optimize for sparse vectors.

    Since:
    0.7.5
    Author:
    Erich Schubert
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private double alpha
      Exponential aging parameter.
      private double bias
      Bias for small values.
      private double minsigma
      Minimum sigma to report.
    • Constructor Summary

      Constructors 
      Constructor Description
      SigniTrendChangeDetection​(double halflife, double bias, double minsigma)
      Constructor
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      elki.data.type.TypeInformation[] getInputTypeRestriction()  
      ChangePoints run​(elki.database.relation.Relation<elki.data.NumberVector> relation)
      Executes Signi-Trend for given relation
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface elki.Algorithm

        autorun
    • Field Detail

      • alpha

        private double alpha
        Exponential aging parameter.
      • bias

        private double bias
        Bias for small values.
      • minsigma

        private double minsigma
        Minimum sigma to report.
    • Constructor Detail

      • SigniTrendChangeDetection

        public SigniTrendChangeDetection​(double halflife,
                                         double bias,
                                         double minsigma)
        Constructor
        Parameters:
        halflife - half-life for learning rate alpha
        bias - beta term
        minsigma - threshold for detecting a trend
    • Method Detail

      • getInputTypeRestriction

        public elki.data.type.TypeInformation[] getInputTypeRestriction()
        Specified by:
        getInputTypeRestriction in interface elki.Algorithm
      • run

        public ChangePoints run​(elki.database.relation.Relation<elki.data.NumberVector> relation)
        Executes Signi-Trend for given relation
        Parameters:
        relation - relation to process
        Returns:
        list with all the detected trends for every time series