{ "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": [], "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": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAGoCAYAAABbtxOxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAACvkElEQVR4nOydd3gUVdvG7y1JCJCQkAAJCT30FnpHepFioYl0VFQsqIgF9bW9ClixK37giw1EVJrYAEVp0lFAqhAgiRASAsG0LfP9kZxhdnZmd3Z3ZnZ28/yui4vs7pQz7Zx7nvMUE8dxHAiCIAiCIAiCAACYg90AgiAIgiAIgjASJJAJgiAIgiAIQgAJZIIgCIIgCIIQQAKZIAiCIAiCIASQQCYIgiAIgiAIASSQCYIgCIIgCEIACWSCIBTz3nvvoVatWqhatSpyc3MD2lb9+vWxYcMGlVpG6MUzzzyDiRMnAgDOnDmDqlWrwuFwqLZ9LbaphKlTp+LJJ5/UdZ8EQRgXEsgEUUGoX78+oqOjERMTg7i4OHTv3h3vv/8+nE6novVtNhseeugh/Pjjj7h69SoSEhJUa5tQdDH69OmDSpUqISYmBrGxsejQoQPmz5+PkpISRds8ffo0TCYT7Ha7Ju3Tij59+iA+Pl7xcQaTunXr4urVq7BYLIbeJkEQhK+QQCaICsTatWtRUFCAjIwMPPbYY1iwYAFuu+02ReueP38excXFaNmypcatvMbbb7+NgoICZGdn49VXX8Xy5ctx/fXXI9TqGykV6adPn8Zvv/0Gk8mENWvWaNwqgiAIQg4SyARRAalWrRpGjhyJL774AkuXLsXBgwcBACUlJXj44YdRt25d1KpVC3fddReKiopw7NgxNG3aFAAQFxeHfv36AQBmzZqFOnXq8Bbe3377jd+HeMr6l19+QWpqqltbvv/+e7z44ov44osvULVqVbRt29ZtmSpVqqBPnz5Ys2YNtm/fjm+//RYA4HQ6MX/+fDRq1AgJCQkYO3Ys8vLyAAC9e/fm21u1alVs374dALBkyRI0b94c8fHxGDx4MDIyMvj9HDp0CAMHDkT16tVRq1YtvPjii7Lty8rKwsiRI1G9enWkpaXhww8/5LfzzDPPYPTo0Zg4cSJiY2Pxv//9T9F1+fjjj9G1a1dMnToVS5cudflt6tSpuOeeezBs2DDExMSgS5cuOHnyJP/7tm3b0KlTJ1SrVg2dOnXCtm3b+N/69OmDJ598Et27d0fVqlUxYsQI5ObmYsKECYiNjUWnTp1w+vRpfnlP11WI2Ep/+fJl3HbbbUhOTkZKSgqefPJJ3lXixIkTuO6661CtWjUkJiZi3LhxirbZp08fPPXUU+jRowdiYmIwaNAgXLx4UXLd5s2bY926dfxnu92OGjVqYO/evQCAMWPGICkpCdWqVUPv3r1x6NAhye3873//Q8+ePV2+M5lMOHHiBAD554QgiPCBBDJBVGA6d+6M1NRUXgA99thjOHbsGPbv348TJ04gMzMTzz33HJo0acKLifz8fGzatAkA0KlTJ+zfvx95eXm49dZbMWbMGBQXF/vUhiFDhmDu3LkYN24crl69igMHDsguW7duXXTs2JFv71tvvYVVq1Zh8+bNyMrKQnx8PO655x4AwK+//sq39+rVq+jWrRtWr16NF198EV9//TVycnLQq1cvjB8/HgBQUFCAAQMGYMiQIcjKysKJEyfQv39/2fbdcsstSE1NRVZWFlauXIm5c+fy5wUAVq9ejdGjRyM/Px8TJkzA/PnzMXz4cI/n4uOPP8aECRMwYcIE/PDDDzh//rzL78uXL8fTTz+NS5cuIS0tDU888QQAIC8vD8OGDcP999+P3NxcPPTQQxg2bJiLn/jy5cvxySefIDMzEydPnkS3bt0wbdo05OXloXnz5nj22Wf5Zf29rlOnToXVasWJEyewb98+/Pjjj/i///s/AMBTTz2FQYMG4dKlSzh37hzuu+8+r9tjfP755/joo49w4cIFlJaW4pVXXpFcbvz48Vi2bBn/+YcffkBiYiLat28PABg6dCiOHz+OCxcuoH379pgwYYLiNgiRe04IgggfSCATRAWndu3ayMvLA8dxWLRoEV5//XVUr14dMTExmDt3LpYvXy677sSJE5GQkACr1YrZs2ejpKQER48e1aW9APD+++/jhRdeQGpqKqKiovDMM89g5cqVsi4N77//Ph5//HE0b94cVqsVc+fOxf79+5GRkYF169YhKSkJs2fP5n2fu3TpIrmds2fPYuvWrViwYAEqVaqE9PR03H777fj444/5Zbp164Ybb7wRZrMZ0dHReOyxx1ysm2K2bNmCjIwMjB07Fh06dECjRo3w+eefuyxz0003oXPnzrBarZgwYQL2798PAPj222/RuHFj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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:30: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 }