This operator searches for anomalies in a sequence in comparison to the learned sequences. The data input port is 0, the input port with learn data is 1.
Parameters
- interval Defines, how many standard deviations are allowed for a tuple to be different from the mean. 3.0 is the default value. Choose a smaller value to get more anomalies
- tupleCountLearnAttribute The attribute name on the learn port that gives the group count (the counter that gives each tuple in the sequence a number)
- meanLearnAttribute The attribute name on the learn port that has the mean
- standardDeviationLearnAttribute The attribute name on the learn port that has the standard deviation
- valueDataAttribute Name of the attribute which should be analysed
Example
Code Block |
---|
|
#PARSER PQL
#RUNQUERY
///
Values above 50 will be 'true' (which means that the current sequence
starts / runs) and smaller values to 'false' (means: sequence ended)
stateInfo = MAP({
expressions = ['temp', ['temp > 50', 'state']]
},
System.manual
)
/// The elements within one sequence will be counted (starts from 1 with each new sequence)
sequence = MAP({
expressions = ['temp','counter(state)']
},
stateInfo
)
///
The tuple which marks the end of the sequence (and itself is not part
of the sequence) has the counter_state_ 0 and will be filtered out
onlySequence = SELECT({PREDICATE = 'counter_state_ > 0'}, sequence)
/// Learn how a "normal" sequence is. The first 15 sequences will be learned and used as the definition of "normal"
sequenceLearn = DEVIATIONSEQUENCELEARN({
group_by = ['counter_state_'],
parameterAttribute = 'temp',
sequencesToLearn = 15
},
onlySequence
)
///
Check, if the current tuple of this sequence differes from the normal
tuples of the sequence at the specific point of the sequence
sequenceAnalysis = DEVIATIONSEQUENCEANOMALYDETECTION({
interval = 4.0,
standardDeviationLearnAttribute = 'standardDeviation',
group_by = ['group'],
meanLearnAttribute = 'mean',
valueDataAttribute = 'temp'
},
0:sequenceLearn,
1:sequenceLearn
) |