Given a table with at least two columns, one of dates/timestamps and one of delimited values, this algorithm detects bursts in each value. A burst is a period of increased activity, determined by minimizing a cost function that assumes a set of possible states (not bursting and various degrees of burstiness) with increasing event frequencies, where it is expensive to go up a level and cheap (free) to decrease a level.
The algorithm takes 8 parameters.
- Gamma is the value that state transition costs are proportional to.
- General Ratio determines how much 'more bursty' each level is beyond the previous one.
- First Ratio determines how much 'more bursty' the first bursting state is beyond the non-bursting state.
- Bursting States determines how many bursting states there will be, beyond the non-bursting state.
- Date Column is the name of the column with date/time values in it for all the value-events in that column.
- Date Format specifies how the date column will be interpreted as a date/time. See http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html for details.
- Text Column is the name of the column with delimited values to be bursted on.
- Text Separator delimits the values in the text column. When constructing your tables, do not use a separator that is used as a whole or part of any value.
Usually you will only need to change Date Column, Date Format, Text Column, and Text Separator when using Burst Detection.
Pros & Cons
Because of the by-value state machine approach, values are bursted on independently of each other. This makes this algorithm suitable primarily when the changes in patterns of individual value usage are the area of interest. Cross-value comparisons of bursts are possible, because burst 'strength' is calculated.
Burst detection is particularly useful for examining the trends in collections of texts or communities of conversation. Even words that are used comparatively little, but that change in frequency of usage over time, stand out, unlike in burst detection algorithms based on thresholds.
This algorithm provides all options for the original C program that had any effect.
Note that the values in the Text Column must be a list of textual tokens. You can use Lowercase, Tokenize, Stem, and Stopword Text to normalize free-form text into this shape.
The defaults are typically good choices, but more sophisticated models can be fitted by tweaking them in various ways.
J. Kleinberg. Bursty and Hierarchical Structure in Streams. Proc. 8th ACM SIGKDD Intl. Conf. on Knowledge Discovery and Data Mining, 2002.