I have a problem, where I try to identify if a machine performs an activity when it is not supposed to, or performs it an unusual number of times. I am attempting to this using an anomaly detection technique.

For several days (100) I recorded the time (in seconds) and the number of times that an activity was performed (there is only one type of an activity).

The following figures shows the data I collected for two such machines. The X-axis represents the time from 0000h to 2359h. First figure Second figure In the first figure, the given machine performs that activity mostly between (22800s-24500s) and (67800s-75000s). The machine of the second figure performs its activity periodically throughout the day, but the number of instances is lower.

In the first case, we define an anomalous behavior whenever the machine performs an activity outside of the above time bands (e.g., at 40000s). In the second, performing a larger number of instances larger than the usual (e.g., 10) is an anomaly.

I can do this manually (e.g., check the time of the activity) to find an anomaly. However, what I have explained above is just an example, and I am looking for solution that collects data from a given machine for sometime (like above) and builds an anomaly detection model based on that.

My question: What is the best anomaly detection technique for this problem?


1 Answer 1


You should do some feature engineering, to present the relevant data to your anomaly detection model.

In this case it sounds like you have already identified time-of-day and number of events in time period sounds as the relevant features.

Then you can use a standard anomaly/outlier detection method, for example IsolationForest or Gaussian Mixture Model (GMM).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.