Dear all,
this is a question regarding the limitations of HTM as well as the optimal configuration in a certain setting, or at least a suggestion for what could give good results.
We are tracking money flow in a simulated bank and introduce anomalies (large payments) to see if HTM detects it.
Our HTM model is trained on approximately 378.000 data points before learning is disabled. The data has a clear pattern to it, but there is also some noise. The “clear pattern” is a series of large payments (e.g. invoices, large purchases), whereas the noise is simulating smaller more random payments such as groceries. Usually HTM would see inputs ranging from a couple hundred, to at most 25 000. Due to HTM’s problem with sub-second precision, the data points are always more than one second apart from each other.
HTM does reliably detect extremely large payments. If there is suddenly a payment of 1 billion, HTM detects it with an anomaly score of 1.0. However, HTM does not reliably detect 1000 instances of 10 000 being transferred (HTM score is around 0.3).
The question is, why not? Why is it not abnormal to see a long stream of 10 000? Is it because HTM considers 10 000 to be perfectly normal, since it has learned that inputs of size a couple hundred up to 25 000 is normal?
The other question is, what can be done about this?
We are using TemporalAnomaly model with the recommended single metric anomaly parameters (https://github.com/numenta/nupic/blob/master/src/nupic/frameworks/opf/common_models/anomaly_params_random_encoder/best_single_metric_anomaly_params_tm_cpp.json). The following encoders are used:
'encoders': {
u'money': {
'fieldname': u'money',
'name': u'money',
'resolution': 1000,
'seed': 42,
'type': 'RandomDistributedScalarEncoder',
},
'timestamp_timeOfDay': {
'fieldname': 'timestamp',
'name': 'timestamp',
'timeOfDay': ( 21, 9.49),
'type': 'DateEncoder'
}
}
Any guidance or suggestions are welcome.
The following topic was suggested as relevant, but after having looked at it I don’t think that it is: Not Getting Anomaly Results