Close Menu
    Trending
    • Three OpenClaw Mistakes to Avoid and How to Fix Them
    • I Stole a Wall Street Trick to Solve a Google Trends Data Problem
    • How AI is turning the Iran conflict into theater
    • Why Your AI Search Evaluation Is Probably Wrong (And How to Fix It)
    • Machine Learning at Scale: Managing More Than One Model in Production
    • Improving AI models’ ability to explain their predictions | MIT News
    • Write C Code Without Learning C: The Magic of PythoC
    • LatentVLA: Latent Reasoning Models for Autonomous Driving
    ProfitlyAI
    • Home
    • Latest News
    • AI Technology
    • Latest AI Innovations
    • AI Tools & Technologies
    • Artificial Intelligence
    ProfitlyAI
    Home » A Practical Toolkit for Time Series Anomaly Detection, Using Python
    Artificial Intelligence

    A Practical Toolkit for Time Series Anomaly Detection, Using Python

    ProfitlyAIBy ProfitlyAIDecember 17, 2025No Comments9 Mins Read
    Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Telegram Email
    Share
    Facebook Twitter LinkedIn Pinterest Email


    fascinating facets of time sequence is the intrinsic complexity of such an apparently easy type of information.

    On the finish of the day, in time sequence, you could have an x axis that often represents time (t), and a y axis that represents the amount of curiosity (inventory worth, temperature, visitors, clicks, and so on…). That is considerably less complicated than a video, for instance, the place you might need hundreds of pictures, and every picture is a tensor of width, top, and three channels (RGB).

    Nevertheless, the evolution of the amount of curiosity (y axis) over time (x axis) is the place the complexity is hidden. Does this evolution current a pattern? Does it have any information factors that clearly deflect from the anticipated sign? Is it secure or unpredictable? Is the typical worth of the amount bigger than what we’d anticipate? These can all in some way be outlined as anomalies.

    This text is a group of a number of anomaly detection methods. The purpose is that, given a dataset of a number of time sequence, we are able to detect which time sequence is anomalous and why.

    These are the 4 time sequence anomalies we’re going to detect:

    1. We’re going to detect any pattern in our time sequence (pattern anomaly)
    2. We’re going to consider how unstable the time sequence is (volatility anomaly).
    3. We’re going to detect the purpose anomalies inside the time sequence (single-point anomaly).
    4. We’re going to detect the anomalies inside our financial institution of indicators, to grasp what sign behaves otherwise from our set of indicators (dataset-level anomaly).
    Picture made by writer

    We’re going to theoretically describe every anomaly detection technique from this assortment, and we’re going to present the Python implementation. The entire code I used for this weblog publish is included within the PieroPaialungaAI/timeseriesanomaly GitHub folder

    0. The dataset

    As a way to construct the anomaly collector, we have to have a dataset the place we all know precisely what anomaly we’re trying to find, in order that we all know if our anomaly detector is working or not. As a way to try this, I’ve created a data.py script. The script comprises a DataGenerator object that:

    1. Reads the configuration of our dataset from a config.json* file.
    2. Creates a dataset of anomalies
    3. Provides you the flexibility to simply retailer the information and plot them.

    That is the code snippet:

    Picture made by writer

    So we are able to see that now we have:

    1. A shared time axis, from 0 to 100
    2. A number of time sequence that kind a time sequence dataset
    3. Every time sequence presents one or many anomalies.

    The anomalies are, as anticipated:

    1. The pattern conduct, the place the time sequence have a linear or polynomial diploma conduct
    2. The volatility, the place the time sequence is extra unstable and altering than regular
    3. The extent shift, the place the time sequence has a better common than regular
    4. A degree anomaly, the place the time sequence has one anomalous level.

    Now our purpose shall be to have a toolbox that may establish every one among these anomalies for the entire dataset.

    *The config.json file lets you modify all of the parameters of our dataset, such because the variety of time sequence, the time sequence axis and the type of anomalies. That is the way it appears like:

    1. Development Anomaly Identification

    1.1 Idea

    Once we say “a pattern anomaly”, we’re in search of a structural conduct: the sequence strikes upward or downward over time, or it bends in a constant manner. This issues in actual information as a result of drift usually means sensor degradation, altering consumer conduct, mannequin/information pipeline points, or one other underlying phenomenon to be investigated in your dataset.

    We take into account two sorts of developments:

    • Linear regression: we match the time sequence with a linear pattern
    • Polynomial regression: we match the time sequence with a low-degree polynomial.

    In observe, we measure the error of the Linear Regression mannequin. Whether it is too giant, we match the Polynomial Regression one. We take into account a pattern to be “vital” when the p worth is decrease than a set threshold (generally p < 0.05).

    1.2 Code

    The AnomalyDetector object in anomaly_detector.py will run the code described above utilizing the next features:

    • The detector, which is able to load the information now we have generated in DataGenerator.
    • detect_trend_anomaly and detect_all_trends detect the (eventual) pattern for a single time sequence and for the entire dataset, respectively
    • get_series_with_trend returns the indices which have a big pattern.

    We are able to use plot_trend_anomalies to show the time sequence and see how we’re doing:

    Picture made by writer

    Good! So we’re capable of retrieve the “fashionable” time sequence in our dataset with none bugs. Let’s transfer on!

    2. Volatility Anomaly Identification

    2.1 Idea

    Now that now we have a world pattern, we are able to concentrate on volatility. What I imply by volatility is, in plain English, how everywhere is our time sequence? In additional exact phrases, how does the variance of the time sequence evaluate to the typical one among our dataset?

    That is how we’re going to check this anomaly:

    1. We’re going to take away the pattern from the timeseries dataset.
    2. We’re going to discover the statistics of the variance.
    3. We’re going to discover the outliers of those statistics

    Fairly easy, proper? Let’s dive in with the code!

    2.2 Code

    Equally to what now we have completed for the developments, now we have:

    • detect_volatility_anomaly, which checks if a given time sequence has a volatility anomaly or not.
    • detect_all_volatilities, and get_series_with_high_volatility, which examine the entire time sequence datasets for volatility anomaly and return the anomalous indices, respectively.

    That is how we show the outcomes:

    Picture made by writer

    3. Single-point Anomaly

    3.1 Idea

    Okay, now let’s ignore all the opposite time sequence of the dataset and let’s concentrate on every time sequence at a time. For our time sequence of curiosity, we need to see if now we have one level that’s clearly anomalous. There are numerous methods to do this; we are able to leverage Transformers, 1D CNN, LSTM, Encoder-Decoder, and so on. For the sake of simplicity, let’s use a quite simple algorithm:

    1. We’re going to undertake a rolling window strategy, the place a hard and fast sized window will transfer from left to proper
    2. For every level, we compute the imply and customary deviation of its surrounding window (excluding the purpose itself)
    3. We calculate how many customary deviations the purpose is away from its native neighborhood utilizing the Z-score

    We outline a degree as anomalous when it exceeds a hard and fast Z-score worth. We’re going to use Z-score = 3 which suggests 3 occasions the usual deviations.

    3.2 Code

    Equally to what now we have completed for the developments and volatility, now we have:

    • detect_point_anomaly, which checks if a given time sequence has any single-point anomalies utilizing the rolling window Z-score technique.
    • detect_all_point_anomalies and get_series_with_point_anomalies, which examine the complete time sequence dataset for level anomalies and return the indices of sequence that comprise at least one anomalous level, respectively.

    And that is how it’s performing:

    Picture made by writer

    4. Dataset-level Anomaly

    4.1 Idea

    This half is deliberately easy. Right here we’re not in search of bizarre time limits, we’re in search of bizarre indicators within the financial institution. What we need to reply is:

    Is there any time sequence whose total magnitude is considerably bigger (or smaller) than what we anticipate given the remainder of the dataset?

    To do this, we compress every time sequence right into a single “baseline” quantity (a typical degree), after which we evaluate these baselines throughout the entire financial institution. The comparability shall be completed when it comes to the median and Z rating.

    4.2 Code

    That is how we do the dataset-level anomaly:

    1. detect_dataset_level_anomalies(), finds the dataset-level anomaly throughout the entire dataset.
    2. get_dataset_level_anomalies(), finds the indices that current a dataset-level anomaly.
    3. plot_dataset_level_anomalies(), shows a pattern of time sequence that current anomalies.

    That is the code to take action:

    5. All collectively!

    Okay, it’s time to place all of it collectively. We’ll use detector.detect_all_anomalies() and we are going to consider anomalies for the entire dataset based mostly on pattern, volatility, single-point and dataset-level anomalies. The script to do that could be very easy:

    The df offers you the anomaly for every time sequence. That is the way it appears like:

    If we use the next operate we are able to see that in motion:

    Picture made by writer

    Fairly spectacular proper? We did it. 🙂

    6. Conclusions

    Thanks for spending time with us, it means lots. ❤️ Right here’s what now we have completed collectively:

    • Constructed a small anomaly detection toolkit for a financial institution of time sequence.
    • Detected pattern anomalies utilizing linear regression, and polynomial regression when the linear match is just not sufficient.
    • Detected volatility anomalies by detrending first after which evaluating variance throughout the dataset.
    • Detected single-point anomalies with a rolling window Z-score (easy, quick, and surprisingly efficient).
    • Detected dataset-level anomalies by compressing every sequence right into a baseline (median) and flagging indicators that dwell on a special magnitude scale.
    • Put the whole lot collectively in a single pipeline that returns a clear abstract desk we are able to examine or plot.

    In lots of actual tasks, a toolbox just like the one we constructed right here will get you very far, as a result of:

    • It offers you explainable indicators (pattern, volatility, baseline shift, native outliers).
    • It offers you a powerful baseline earlier than you progress to heavier fashions.
    • It scales effectively when you could have many indicators, which is the place anomaly detection often turns into painful.

    Remember the fact that the baseline is easy on goal, and it makes use of quite simple statistics. Nevertheless, the modularity of the code lets you simply add complexity by simply including the performance within the anomaly_detector_utils.py and anomaly_detector.py.

    7. Earlier than you head out!

    Thanks once more in your time. It means lots ❤️

    My identify is Piero Paialunga, and I’m this man right here:

    Picture made by writer

    I’m initially from Italy, maintain a Ph.D. from the College of Cincinnati, and work as a Knowledge Scientist at The Commerce Desk in New York Metropolis. I write about AI, Machine Studying, and the evolving function of information scientists each right here on TDS and on LinkedIn. Should you preferred the article and need to know extra about machine studying and observe my research, you’ll be able to:

    A. Observe me on Linkedin, the place I publish all my tales
    B. Observe me on GitHub, the place you’ll be able to see all my code
    C. For questions, you’ll be able to ship me an e-mail at piero.paialunga@hotmail



    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous ArticleA new way to increase the capabilities of large language models | MIT News
    Next Article DataRobot Q4 update: driving success across the full agentic AI lifecycle
    ProfitlyAI
    • Website

    Related Posts

    Artificial Intelligence

    Three OpenClaw Mistakes to Avoid and How to Fix Them

    March 9, 2026
    Artificial Intelligence

    I Stole a Wall Street Trick to Solve a Google Trends Data Problem

    March 9, 2026
    Artificial Intelligence

    Why Your AI Search Evaluation Is Probably Wrong (And How to Fix It)

    March 9, 2026
    Add A Comment
    Leave A Reply Cancel Reply

    Top Posts

    How to Use Gyroscope in Presentations, or Why Take a JoyCon to DPG2025

    April 21, 2025

    AI Text Classification – Use Cases, Application, Process and Importence

    April 6, 2025

    How to Define the Modeling Scope of an Internal Credit Risk Model

    February 25, 2026

    The Secret Inner Lives of AI Agents: Understanding How Evolving AI Behavior Impacts Business Risks

    April 29, 2025

    Your Personal Analytics Toolbox | Towards Data Science

    July 7, 2025
    Categories
    • AI Technology
    • AI Tools & Technologies
    • Artificial Intelligence
    • Latest AI Innovations
    • Latest News
    Most Popular

    Faster Is Not Always Better: Choosing the Right PostgreSQL Insert Strategy in Python (+Benchmarks)

    January 8, 2026

    How to Build an AI Journal with LlamaIndex

    May 16, 2025

    Transformers (and Attention) are Just Fancy Addition Machines

    July 24, 2025
    Our Picks

    Three OpenClaw Mistakes to Avoid and How to Fix Them

    March 9, 2026

    I Stole a Wall Street Trick to Solve a Google Trends Data Problem

    March 9, 2026

    How AI is turning the Iran conflict into theater

    March 9, 2026
    Categories
    • AI Technology
    • AI Tools & Technologies
    • Artificial Intelligence
    • Latest AI Innovations
    • Latest News
    • Privacy Policy
    • Disclaimer
    • Terms and Conditions
    • About us
    • Contact us
    Copyright © 2025 ProfitlyAI All Rights Reserved.

    Type above and press Enter to search. Press Esc to cancel.