Anomaly detection
Import packages
First, we import the required packages for this tutorial and create an
instance of
NixtlaClient
.
๐ Use an Azure AI endpoint
To use an Azure AI endpoint, set the
base_url
argument:
nixtla_client = NixtlaClient(base_url="you azure ai endpoint", api_key="your api_key")
Load dataset
Now, letโs load the dataset for this tutorial. We use the Peyton Manning dataset which tracks the visits to the Wikipedia page of Peyton Mannig.
unique_id | ds | y | |
---|---|---|---|
0 | 0 | 2007-12-10 | 9.590761 |
1 | 0 | 2007-12-11 | 8.519590 |
2 | 0 | 2007-12-12 | 8.183677 |
3 | 0 | 2007-12-13 | 8.072467 |
4 | 0 | 2007-12-14 | 7.893572 |
Anomaly detection
We now perform anomaly detection. By default, TimeGPT uses a 99% confidence interval. If a point falls outisde of that interval, it is considered to be an anomaly.
unique_id | ds | y | TimeGPT | TimeGPT-hi-99 | TimeGPT-lo-99 | anomaly | |
---|---|---|---|---|---|---|---|
0 | 0 | 2008-01-10 | 8.281724 | 8.224194 | 9.503593 | 6.944794 | False |
1 | 0 | 2008-01-11 | 8.292799 | 8.151521 | 9.430921 | 6.872121 | False |
2 | 0 | 2008-01-12 | 8.199189 | 8.127249 | 9.406649 | 6.847849 | False |
3 | 0 | 2008-01-13 | 9.996522 | 8.917255 | 10.196655 | 7.637855 | False |
4 | 0 | 2008-01-14 | 10.127071 | 9.002296 | 10.281695 | 7.722896 | False |
๐ Available models in Azure AI
If you are using an Azure AI endpoint, please be sure to set
model="azureai"
:
nixtla_client.detect_anomalies(..., model="azureai")
For the public API, we support two models:
timegpt-1
andtimegpt-1-long-horizon
.By default,
timegpt-1
is used. Please see this tutorial on how and when to usetimegpt-1-long-horizon
.
As you can see, 0 is assigned to โnormalโ values, as they fall inside the confidence interval. A label of 1 is then assigned to abnormal points.
We can also plot the anomalies using
NixtlaClient
.
Anomaly detection with exogenous features
Previously, we performed anomaly detection without using any exogenous features. Now, it is possible to create features specifically for this scnenario to inform the model in its task of anomaly detection.
Here, we create date features that can be used by the model.
This is done using the date_features
argument. We can set it to True
and it will generate all possible features from the given dates and
frequency of the data. Alternatively, we can specify a list of features
that we want. In this case, we want only features at the month and
year level.
Then, we can plot the weights of each feature to understand its impact on anomaly detection.
Modifying the confidence intervals
We can tweak the confidence intervals using the level
argument. This
takes any values between 0 and 100, including decimal numbers.
Reducing the confidence interval resutls in more anomalies being detected, while increasing it will reduce the number of anomalies.
Here, for example, we reduce the interval to 70%, and we will notice more anomalies being plotted (red dots).