{ "cells": [ { "cell_type": "markdown", "id": "35f92df6", "metadata": {}, "source": [ "# A Gentle Introduction to Anomaly Detection in Merlion" ] }, { "cell_type": "markdown", "id": "6504e0e6", "metadata": {}, "source": [ "We begin by importing Merlion's `TimeSeries` class and the data loader for the Numenta Anomaly Benchmark `NAB`. We can then divide a specific time series from this dataset into training and testing splits." ] }, { "cell_type": "code", "execution_count": 1, "id": "caa231be", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Time series /Users/abhatnagar/Desktop/Merlion/data/nab/realKnownCause/ec2_request_latency_system_failure.csv (index 2) has timestamp duplicates. Kept first values.\n", "Time series /Users/abhatnagar/Desktop/Merlion/data/nab/realKnownCause/machine_temperature_system_failure.csv (index 3) has timestamp duplicates. Kept first values.\n" ] } ], "source": [ "from merlion.utils import TimeSeries\n", "from ts_datasets.anomaly import NAB\n", "\n", "time_series, metadata = NAB(subset=\"realKnownCause\")[3]\n", "train_data = TimeSeries.from_pd(time_series[metadata.trainval])\n", "test_data = TimeSeries.from_pd(time_series[~metadata.trainval])\n", "test_labels = TimeSeries.from_pd(metadata.anomaly[~metadata.trainval])" ] }, { "cell_type": "markdown", "id": "1ab7488e", "metadata": {}, "source": [ "We can then initialize and train Merlion's `DefaultDetector`, which is an anomaly detection model that balances performance with efficiency. We also obtain its predictions on the test split." ] }, { "cell_type": "code", "execution_count": 2, "id": "26f41bf4", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Inferred granularity <5 * Minutes>\n", "Inferred granularity <5 * Minutes>\n" ] } ], "source": [ "from merlion.models.defaults import DefaultDetectorConfig, DefaultDetector\n", "model = DefaultDetector(DefaultDetectorConfig())\n", "model.train(train_data=train_data)\n", "test_pred = model.get_anomaly_label(time_series=test_data)" ] }, { "cell_type": "markdown", "id": "28de2123", "metadata": {}, "source": [ "Next, we visualize the model's predictions." ] }, { "cell_type": "code", "execution_count": 3, "id": "869a78e7", "metadata": {}, "outputs": [ { "data": { "image/png": "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nRBCKgYKnAkph+644w5UrVoVCQkJeOWVV/DYY4/hiy++4B9/7bXXkJiYiC5duiAiIgK33nqrbG7rwIEDMWjQIDRp0gT16tVDaGioQ3rCvffeizZt2qB+/foYMGCAbBUFoKzaAQBER0ejXbt2/P0zZsxA1apVUatWLTz66KMYMWIEUlJS+IDrkUcewdChQzFgwABUrVoVXbp04YPd8PBwPPfcc+jWrRsiIyOxa9cuDBs2DE8//TTGjBmDiIgItGzZEuvXrwcAVK1aFb/++it++ukn1K5dG40bN8amTZtk27dkyRKcPXsWderUwbBhw/DSSy+5nMzl1VdfxeDBgyUfW7RoEe677z7UrVsXtWvX5v/NmDED33zzjdtydtHR0VizZg3eeustREdH4/XXX8eaNWv4tA9PuNuurixevBglJSVo3rw5qlevjpEjR/LT7f7555/o3LkzqlSpgqFDh+Ldd99Fw4YNPW6fO7GxsbjllluwY8cOh+/chAkTUK9ePcTFxaF58+bo0qWL7DKaNGmCF154AbfeeisaN27slI/tye+EEFIxmDh31+UIIYQQQojXjh49iqSkJKObQbwg3nbU40wIIYQQUgGsXLkSJpMJx44dM7QdVapUUfxcu92Ohx9+GC1btkSrVq3QsWNHnDlzRsPWuUaBMyGEEEJIBbBkyRJ0794dS5YsMbopin333Xe4ePEi/vrrL/z9999YsWIFIiMjfVqm0llepVDgTAghhBBSzl27dg3btm3DwoULHSoLbd68Gb1798bIkSPRrFkzjB8/nq9Cs2HDBrRt2xatWrXC5MmTcf36dQBA/fr18cwzzyA5ORkdOnTAvn37MHDgQDRq1Agff/wxv75+/fqhXbt2aNWqFT+gW2jChAlYuXIlf3v8+PFOz7t06RJiY2P5MS/x8fGoXr06gLIZadu1a4c2bdqgX79+AIDs7GzcddddaN26Nbp06YK//voLQNlMr/feey+6deuGe++9F5mZmRgxYgQ6duyIjh07Yvv27Yo+RypHRwghhBCil0cfBWQm9/FacjLgoqIRAKxatYofEBwdHY29e/eiffv2AID9+/fj8OHDqFOnDrp164bt27ejQ4cOmDRpEjZs2IAmTZpgwoQJ+Oijj/Doo48CAOrWrYsDBw5g5syZmDRpErZv347i4mK0bNkS06dPR2hoKFasWIGIiAhk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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from merlion.plot import plot_anoms\n", "import matplotlib.pyplot as plt\n", "fig, ax = model.plot_anomaly(time_series=test_data)\n", "plot_anoms(ax=ax, anomaly_labels=test_labels)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "d5343929", "metadata": {}, "source": [ "Finally, we can quantitatively evaluate the model. The precision and recall come from the fact that the model fired 3 alarms, with 2 true positives, 1 false negative, and 1 false positive. We also evaluate the mean time the model took to detect each anomaly that it correctly detected." ] }, { "cell_type": "code", "execution_count": 4, "id": "7e98f175", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Precision: 0.6667, Recall: 0.6667, F1: 0.6667\n", "Mean Time To Detect: 1 days 10:25:00\n" ] } ], "source": [ "from merlion.evaluate.anomaly import TSADMetric\n", "p = TSADMetric.Precision.value(ground_truth=test_labels, predict=test_pred)\n", "r = TSADMetric.Recall.value(ground_truth=test_labels, predict=test_pred)\n", "f1 = TSADMetric.F1.value(ground_truth=test_labels, predict=test_pred)\n", "mttd = TSADMetric.MeanTimeToDetect.value(ground_truth=test_labels, predict=test_pred)\n", "print(f\"Precision: {p:.4f}, Recall: {r:.4f}, F1: {f1:.4f}\\n\"\n", " f\"Mean Time To Detect: {mttd}\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.5" } }, "nbformat": 4, "nbformat_minor": 5 }