{ "metadata": { "name": "", "signature": "sha256:d7021b070074bb6fdbb55b0d03debb0df0faca08baa827f5040eb4fa579c5946" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Change Detection Tutorial\n", "\n", " author: @amanqa\n", " source: github.com/amanahuja/change-detection-tutorial\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Modified Stylesheet for notebook.\n", "from IPython.core.display import HTML\n", "def css_styling():\n", " styles = open(\"custom.css\", \"r\").read()\n", " return HTML(styles)\n", "\n", "css_styling()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n" ], "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "##Section 02: Noise and Windows\n", "\n", "Lesson Plan\n", "\n", "* A seasonal signal\n", "* Streaming windows\n", "* Practical considerations in online algorithms\n", "* A Z-score based detector\n", "* A noisy signal (with outliers)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import matplotlib.pyplot as plt\n", "import numpy as np" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "from collections import defaultdict\n", "np.random.seed(seed=111111)\n", "np.set_printoptions(precision=3, suppress=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Recap\n", "\n", "So far, we have\n", "\n", " * discussed what online algorithm is\n", " * written some utility code to simulate an online algorithm\n", " * Implemented a static mean change detector\n", " * .. and talked about some of its limitations\n", " \n", "\n", "We'll import the utility code so we can use it:\n", " " ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sys; sys.path.append('../src/')\n", "from change_detector import ChangeDetector, OnlineSimulator" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A signal with Seasonality\n", "\n", "How well would our previous change detector, the MeanDetector, work on a signal that had a seasonal component? \n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Create a seasonal signal\n", "# I imagined a metric that rises from 0 to 5 each calendar month\n", "\n", "sig = np.linspace(0, 5, num=30)\n", "sig = np.concatenate([sig for x in xrange(12)])\n", "\n", "# Add a jump\n", "jump_size = 5\n", "sig[250:] = sig[250:] + jump_size\n", "\n", "# Noise\n", "noise = np.random.normal(\n", " size=sig.shape,\n", " scale=jump_size * 0.02)\n", "\n", "plt.figure(figsize=(15,5))\n", "plt.plot(sig + noise, 'b.', linestyle='')\n", "plt.plot(sig + noise, 'b-', alpha=0.15)\n", "plt.ylim(0,15)\n", "plt.xlim(0,365)\n", "plt.title(\"Imaginary Seasonal signal\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nEZHHvfnmm/D7/WhoaMAdd9yB0047zbIkrLW1FY8//jhKSkoseT43+eijj3Do0CEEAgG89NJL2LJl\nC370ox8l+7CIiChGTMSIiDzujTfeQHZ2NrKzs7Fr166w8jszVVRUICMjA4cPH8YvfvELS57TTbZt\n24aJEyciIyMDjz32GFauXBnWTZOIiOyNpYlEREREREQW44wYERERERGRxXqZ9cATJ07Epk2bzHp4\nIiIiIiIiW7vgggtQVlYW8WemlSampKTEvRcN2cvcuXMxd+7cZB8GJYj/j+7B/0v34P+lO/D/0T34\nf+kedvm/jJYTsTSRiIiIiIjIYkzEiIiIiIiILMZEjLqUl5eX7EMgA/D/0T34f+ke/L90B/4/ugf/\nL93DCf+XXCNGRERERERkAq4RIyIiIiIishEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJG\nRERERERkMSZiREREREREFmMiRkREREREZDEmYkRERERERBaLmogVFRUhKysLEyZMOO5njzzyCHr0\n6IGqqirTDo6IiIiIiMiNoiZihYWFWLVq1XHf//rrr/Hee+9h7Nixph0YERERERGRW0VNxM477zxk\nZGQc9/3bb78d//Vf/2XaQREREREREblZt9eIvf7668jJycFpp51mxvEQERERERG5Xq/u/LLf78eD\nDz6I9957r/17mqZ1+vtz585t/zwvLw95eXndPkAiIiIiIiInKCsrQ1lZWUy/m6JFy6QA7NmzB5dd\ndhk2b96MzZs344c//CEGDBgAANi3bx+ys7OxYcMGDB8+PPyBU1KiJmlERERERERuFi0n6taM2IQJ\nE3D48OH2r8ePH49//etfyMzMTOwIiYiIiIiIPCTqGrFp06bhnHPOwfbt2zF69GgsWLAg7OcpKSmm\nHhwREREREZEbdVmaGPcDszSRiIiIiIg8LFpO1O2uiURERERERJQYJmJEREREREQWYyJGRERERERk\nMSZiREREREREFmMiRkREREREZDEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJGRERERERk\nMSZiREREREREFmMiRkREREREZDEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJGRERERERk\nMSZiREREREREFmMiRkREREREZDEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJGRERERERk\nMSZiREREREREFmMiRkREREREZDEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJGRERERERk\nMSZiREREREREFusyESsqKkJWVhYmTJjQ/r05c+bg5JNPxumnn44rr7wStbW1ph4kERERERGRm3SZ\niBUWFmLVqlVh37vkkkuwdetWbNq0CSeddBLmzZtn2gESERERERG5TZeJ2HnnnYeMjIyw71188cXo\n0UP+6llnnYV9+/aZc3REREREREQulPAasRdffBGTJ0824liIiIiIiIg8IaFE7IEHHkCfPn1w/fXX\nG3U8RERERERErtcr3r+4cOFCvP3221izZk2nvzN37tz2z/Py8pCXlxfv0xEREREREdlaWVkZysrK\nYvrdFE3TtK5+ac+ePbjsssuwefNmAMCqVavwq1/9Ch9++CGGDh0a+YFTUhDDQxMREREREblStJyo\ny0Rs2rRp+PDDD3H06FFkZWXh/vvvx7x589DS0oLMzEwAwKRJk/DUU0/F/KRERERERERul1AiZsaT\nEhERERERuV20nCjhrolERERERETUPUzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCzGRIyIiIiI\niMhiTMSIiIiIiIgsxkSMiIiIiIjIYkzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCzGRIyIiIiI\niMhiTMSIiIiIiIgsxkSMiIiIiIjIYkzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCzGRIyIiIiI\niMhiTMSIiIiIiIgsxkSMiIiIiIjIYkzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCzGRIyIiIiI\niMhiTMSIiIiIiIgsxkSMiIiIiIjIYkzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCwWNRErKipC\nVlYWJkyY0P69qqoqXHzxxTjppJNwySWXoKamxvSDJCIiIiIicpOoiVhhYSFWrVoV9r358+fj4osv\nxvbt2/GDH/wA8+fPN/UAiYiIiIiI3CZF0zQt2i/s2bMHl112GTZv3gwA+M53voMPP/wQWVlZOHTo\nEPLy8lBZWXn8A6ekoIuHJiIiIiJKqlmzgD17gNRUYPFiYPDgZB8RuUm0nKjba8QOHz6MrKwsAEBW\nVhYOHz6c2NERERERESVBSwtQWQl8/DHwzjtAaWmyj4i8JKFmHSkpKUhJSTHqWIiIiIjIREVFwPnn\n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\niIiIaIX9H/PYuCdxwWt0AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What would work?\n", "\n", "We can imagine that the MeanDetector will be ineffective against such a signal. Why? What kind of change detector would work? \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using Streaming Windows\n", "\n", "Streaming windows is an approach to change detection where we maintain statistics (such as mean) on two separate samples (or windows) of the signal. \n", "\n", "Commonly, for one of the windows we use just the $n$ most recent data points. For the other window, we might use a much larger window or all of the signal that we've seen since $t=0$. \n", "\n", "Then, we can compare what's been going on \"recently\" with what the signal has done as a whole \"so far\". There's plenty of research on how to compare two populations, which we'll be able to take advantage of. \n", "\n", "### Beware practical limitations\n", "There's a practical limitation, though, in streaming problems. It's usually impossible to store the entire history of data points and compute statistics at each step. We need clever ways of computing the statistics we need using on-line algorithms. \n", "\n", "#### Welford's Method\n", "In this section, we'll use Welford's Method to compute mean and variance. This allows us to contimually update an estimate of these two parameters as our detector gets each new data point. We can do this without storing a history of all the data points we've seen before. \n", "\n", "A separate section of the tutorial will take a closer look at Welford's method for those that are interested. Refer to the Tutorial [Table of Contents](https://github.com/amanahuja/change-detection-tutorial) if you'd like to read this material before proceeding. \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2b. Change detector based on z-scores\n", "\n", "### Zscore (definition)\n", "When comparing two gaussian models, a z-score is the distance from the sample mean to the population mean in units of the standard error. It's often used to determine if a sample of data points is deviating from the expected statistics of the population. \n", "\n", "$$z_{score} = \\frac{(M - \\sigma )}{SE}$$\n", "\n", " * The population has mean $\\mu$ and standard deviation $\\sigma$. \n", " * The sample has mean $M$ and a size of $n$. We will treat the local window as the sample. \n", " * SE is the Standard Error defined as: \n", "$$SE = \\frac{\\sigma}{\\sqrt{n}}$$\n", " \n", "\n", "### Using Z-scores in a change detector. \n", "\n", "For our next change detector, we'll maintain two sets of statistics about our signal, and compare them using the z-score. Referring to the formulae above, we'll need to compute the mean and standard deviation for each set.\n", "\n", "We'll use the global stream -- the entire signal that we've seen so far -- to compute the first set of statistics. Imagine this is our \"population\". We'll use a moving window of the $n$ most recent points for the second set of statistics, we'll think of that as our \"sample\". \n", "\n", "The z-score, then, will tell us the \"difference\" between our local window and the global stream. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "import change_detector\n", "reload(change_detector)\n", "from change_detector import ChangeDetector, OnlineSimulator" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "from collections import deque\n", "\n", "class ZScoreDetector(ChangeDetector):\n", " \"\"\"\n", " A change detection algorithm based on z-scores\n", " ---\n", " 1. We will use Welford's algorithm to collect mean and variance \n", " of the full stream. \n", " \n", " 2. At the same time, we will collect a window of recent\n", " observations. We are storing all the recent observations for this\n", " window, and compute local statistics traditionally.\n", " \n", " 3. Then, we compute a Z-score to compare the sample (window) \n", " distribution to the population (global) distribution. \n", "\n", " Our stopping rule is based on this computed z-score\n", " \"\"\"\n", " \n", " def __init__(self, window_size = 100, threshold=0.05):\n", " super( ZScoreDetector, self ).__init__()\n", " \n", " # hyper-parameters\n", " self.threshold = threshold\n", " self.window_size = window_size\n", " \n", " # Interim and calculated values\n", " self.k = 0 # total signal_size\n", " self.g_mean = 0.0 # global mean \n", " self.s = 0.0 # for Welford's method. variance = s / (k + 1)\n", " \n", " # This is the window\n", " self.window = deque(maxlen = window_size)\n", " \n", " # ... and, finally, our residuals\n", " self.z_score_ = np.nan\n", " self.z_array = []\n", " \n", " def update_residuals(self, new_signal_value):\n", " self._update_base_residuals(new_signal_value)\n", " x = new_signal_value\n", " \n", " # Add new value to local window (deque will\n", " # automatically drop a value to maintain window size)\n", " self.window.append(x)\n", " \n", " \"\"\"Calculate Statistics on global and local window \"\"\"\n", " # Calculate global statistics using welford's method\n", " oldm = self.g_mean\n", " newm = oldm + (x - oldm) / (self.k + 1)\n", " s = self.s + (x - newm) * (x - oldm)\n", " \n", " g_mean = newm # Global mean\n", " g_std = np.sqrt(s / (self.k+1)) # Global std\n", " \n", " # Calculate local statistics on the window\n", " # We have all values stored for the window, so \n", " # can use built-in numpy stats methods\n", " w_mean = np.mean(self.window) # Window mean\n", " w_std = np.std(self.window) # Window std\n", "\n", " \"\"\"Calculate variables required for Zscore\"\"\"\n", " # Calculate SE, see formula above\n", " std_diff = (g_std - w_std) / g_std \n", " SE = g_std / np.sqrt(self.window_size)\n", " \n", " # Difference between the means\n", " mean_diff = (g_mean - w_mean) / g_mean\n", " \n", " # Z-score (residual)\n", " self.z_score_ = (w_mean - g_mean) / SE\n", " self.z_array.append(self.z_score_)\n", " \n", " # Store attributes\n", " self.g_mean = g_mean\n", " self.s = s\n", " \n", " # Update k (size of global window). \n", " # This must be done at the end!\n", " self.k += 1\n", " \n", " def check_stopping_rules(self, new_signal_value): \n", " # Check stopping rule!\n", " if np.abs(self.z_score_) > self.threshold:\n", " self.rules_triggered = True\n", " " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Testing out the Zscore detector\n", "\n", "To test our detector, let's see what happens when we pass some signals that we looked at in previous sections. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Our first, most basic, signal. \n", "\n", "basic_sig = np.ones(150)\n", "basic_sig[:100] *= 50\n", "basic_sig[100:] *= 4\n", "\n", "# On Signal 1\n", "detector = ZScoreDetector(window_size = 10, threshold=10.0)\n", "OnlineSimulator(detector, basic_sig).run(\n", " signal_name='Original first signal, sig1'\n", " )" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Residuals: ['z_score_']\n", "Change detected. Stopping Rule triggered at 109.\n", "\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "-c:64: RuntimeWarning: invalid value encountered in double_scalars\n", "-c:71: RuntimeWarning: invalid value encountered in double_scalars\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "True" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nTp1STk6OpKt7w93gwYO1bt06ffPNN5o4caKmTZtW51qPHTtW49jRo0dppQDgMARjAG7Lz89P8+fP\n15w5c/Tee+/p/Pnzys3N1bRp09SzZ88ab65ryJQpU7R+/Xp98sknqqysVEpKylXvMp45c0Y+Pj7q\n2LGjDhw4oD/96U+NvvaHc15uDTabTXv27FF1dbV8fHzk7e1tf1OZ2WzW4cOHr+raS02bNk3Lli1T\nQUGBysrKtGjRolpBs751njlzRu3atVNAQIAqKir02GOPNXidl5eXPvroo1r3OX/+vFatWqVTp06p\nTZs28vHxqXOtN9xwg9q0aaPnn39eVVVVSk9P13/+858aY7777judO3eu1s8A0BgEYwBu7aGHHtLC\nhQv1u9/9Tn5+fvrRj36ksLAwffDBB/L29pZU9+flXnqsf//+eu655zR9+nT16NFDPj4+CgoKUrt2\n7eq8vqEdyCVLlugf//iHfH199atf/UrTp09v9LV1zdPQtUVFRbr55pvl5+en6Oho+2cXS9J9992n\nN954QwEBAbr//vtrzdXQtZe66667lJSUpNjYWA0aNEhjx45VmzZtavR117fmW2+9VWFhYQoJCdGA\nAQN0ww031Ds2Ly9PPj4+iomJqbM2r732miIiIuTn56cXX3xRq1atqjX/Nddco3/96196+eWX5e/v\nr1WrVmncuHG65ppr7GP79u2rjh07qqCgQKNHj1anTp109OjROucEgB8yGTRnAfAwZ86ckb+/vw4d\nOqSwsDBXL8etvPvuu7r77ruVm5vr0PuuWrVK+/fv14IFCxx636FDh+qee+5RcnKyQ+8LwDOxYwzA\nI6xfv15nz55VRUWFfve73yk2NpZQrIufd7xhwwZVVVXp2LFjeuKJJ2p9PJ4jzJw50yGh+KOPPlJR\nUZGqqqq0cuVK7d27VzfddJMDVggABGMAHiIjI0MhISEKCQnR4cOHtWbNGlcvyS0YhqGUlBQFBARo\n4MCB6t+/v5588klXL6teX375peLj4+Xv769nnnlGb7zxhsxms6uXBaCVoJUCAAAAEDvGAAAAgCSp\nrasX8L34+Hjt3r3b1csAAABAKzZy5EjZbLY6z7nNjvHu3btlGAYPJz7mz5/v8jW09gc1ps6t5UGN\nqXFreVBnavzDx+bNm+vNo24TjAEAAABXIhgDAIDaUlJcvQKg2RGMPYjFYnH1Elo9atw8qLPzUWPn\n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\nEIwBtFjh4eHq2LGjfHx8FBwcrFmzZqm8vLxJ95w5c6bee++9es+bTCaZTKYmzXGlQkJC9N133+nD\nDz/UlClTapz7wx/+oJiYGHl7e+uJJ55o1nUBQGtDMAbQYplMJr399ts6ffq0du/erT179uipp55y\n9bIcKi8vT926dVO7du20Y8cODRo0qMb56667Tk8//bTGjh3b7IHd0aqqqly9BAAejmAMoFUwm81K\nSkrSvn377Me2bdumYcOGyd/fX/Hx8dq8ebP93IoVK9S7d2/5+vrq2muv1T/+8Q/78eHDh9vHZWVl\nKSoqSl26dNGcOXNkGIb9XEpKimbNmmV/npubKy8vL124cEGS9Le//U3R0dHy9fVV79699eKLL17x\n6/rss880cOBA+88JCQk1zt9666266aab5OPjU2NtjdGlSxf5+PjIx8dHnTt3lpeXl44ePVrv+BMn\nTmjcuHHy9/dXYGCgRowYYZ8zLy9PkydPVlBQkLp27ao5c+ZIki5cuKCnnnpK4eHhMpvNSk5Otu/q\nf1+vV155RWFhYRo1apQk6ZVXXlF0dLQCAgJ00003NbgmAHAkgjGAFu37YJafn6/MzEwNHTpUknTs\n2DGNGzdOjz/+uEpLS7VkyRJNmTJFJ0+eVEVFhe677z5lZmaqvLxcn3zyieLj42vd+8SJE5oyZYoW\nLlyokydPqnfv3vr444/t5y+3Q2s2m/XOO++ovLxcf/vb3/TAAw9o586djXpdTz75pPz9/XXLLbdo\n7dq18vf315tvvqkZM2YoICCgUSH46NGj8vf3V35+fp3ny8rKdPr0aZ0+fVr33nuvRowYoZCQkHrv\nt3TpUvXs2VMnTpzQ8ePHlZqaKpPJpOrqao0bN04RERH6+uuvdezYMc2YMUPSxT9orFy5UjabTUeO\nHNGZM2f029/+tsZ9P/roIx04cECZmZlKT09Xamqq3nrrLZ04cULDhw+33wsAnI1gDKDFMgxDEydO\nlK+vr3r16qXevXvr//2//ydJeu211zRmzBjddNNNkqRRo0Zp8ODBeuedd2QymeTl5aU9e/bo22+/\nldlsVnR0dK37b9iwQQMGDNDkyZPVpk0b3X///QoODq4xf0PGjBmjiIgISdKIESOUlJSkLVu2NOq1\nPf744/rmm28UERGhI0eO6J133tFNN92ksrIylZSUNKptolevXiotLVVoaGiD415//XWtXr1ab775\n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\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Did that work? \n", "\n", "The stopping rules were triggered, but not immediately. This is an effect of having a local window. With a window size of 10, it took until data point 109 for the stopping rule to be triggered. \n", "\n", "In general, we would now only be able to say that \"the change took place somewhere in our local window.\" The larger the window, the less sure we are where the change took place, and the more delay in detection time. \n", "\n", "## Trade offs in change detection\n", "This is a characteristic of many online change detectors. There is a trade off between the delay for detection and the frequency of false alarms. \n", "\n", "*TODO: insert Basseville Quote? This one isn't the one I was looking for... *\n", "\n", " \"Apart from the tradeoff between the mean time between false alarms and the delay for detection -- both increasing when the sensitivity of the detector to high frequencies decreases -- there exists another tradeoff to be kept in mind which is closely related to the first one: efficiency vs complexity. -- Basseville\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Signal with Seasonality" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.figure(figsize=(15,5))\n", "plt.plot(sig + noise, 'b.', linestyle='')\n", "plt.plot(sig + noise, 'b-', alpha=0.15)\n", "plt.ylim(0,15)\n", "plt.xlim(0,365)\n", "plt.title(\"Imaginary Seasonal signal\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nEZHHvfnmm/D7/WhoaMAdd9yB0047zbIkrLW1FY8//jhKSkoseT43+eijj3Do0CEEAgG89NJL2LJl\nC370ox8l+7CIiChGTMSIiDzujTfeQHZ2NrKzs7Fr166w8jszVVRUICMjA4cPH8YvfvELS57TTbZt\n24aJEyciIyMDjz32GFauXBnWTZOIiOyNpYlEREREREQW44wYERERERGRxXqZ9cATJ07Epk2bzHp4\nIiIiIiIiW7vgggtQVlYW8WemlSampKTEvRcN2cvcuXMxd+7cZB8GJYj/j+7B/0v34P+lO/D/0T34\nf+kedvm/jJYTsTSRiIiIiIjIYkzEiIiIiIiILMZEjLqUl5eX7EMgA/D/0T34f+ke/L90B/4/ugf/\nL93DCf+XXCNGRERERERkAq4RIyIiIiIishEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJG\nRERERERkMSZiREREREREFmMiRkREREREZDEmYkRERERERBaLmogVFRUhKysLEyZMOO5njzzyCHr0\n6IGqqirTDo6IiIiIiMiNoiZihYWFWLVq1XHf//rrr/Hee+9h7Nixph0YERERERGRW0VNxM477zxk\nZGQc9/3bb78d//Vf/2XaQREREREREblZt9eIvf7668jJycFpp51mxvEQERERERG5Xq/u/LLf78eD\nDz6I9957r/17mqZ1+vtz585t/zwvLw95eXndPkAiIiIiIiInKCsrQ1lZWUy/m6JFy6QA7NmzB5dd\ndhk2b96MzZs344c//CEGDBgAANi3bx+ys7OxYcMGDB8+PPyBU1KiJmlERERERERuFi0n6taM2IQJ\nE3D48OH2r8ePH49//etfyMzMTOwIiYiIiIiIPCTqGrFp06bhnHPOwfbt2zF69GgsWLAg7OcpKSmm\nHhwREREREZEbdVmaGPcDszSRiIiIiIg8LFpO1O2uiURERERERJQYJmJEREREREQWYyJGRERERERk\nMSZiREREREREFmMiRkREREREZDEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJGRERERERk\nMSZiREREREREFmMiRkREREREZDEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJGRERERERk\nMSZiREREREREFmMiRkREREREZDEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJGRERERERk\nMSZiREREREREFmMiRkREREREZDEmYkRERERERBZjIkZERERERGQxJmJEREREREQWYyJGRERERERk\nMSZiREREREREFusyESsqKkJWVhYmTJjQ/r05c+bg5JNPxumnn44rr7wStbW1ph4kERERERGRm3SZ\niBUWFmLVqlVh37vkkkuwdetWbNq0CSeddBLmzZtn2gESERERERG5TZeJ2HnnnYeMjIyw71188cXo\n0UP+6llnnYV9+/aZc3REREREREQulPAasRdffBGTJ0824liIiIiIiIg8IaFE7IEHHkCfPn1w/fXX\nG3U8RERERERErtcr3r+4cOFCvP3221izZk2nvzN37tz2z/Py8pCXlxfv0xEREREREdlaWVkZysrK\nYvrdFE3TtK5+ac+ePbjsssuwefNmAMCqVavwq1/9Ch9++CGGDh0a+YFTUhDDQxMREREREblStJyo\ny0Rs2rRp+PDDD3H06FFkZWXh/vvvx7x589DS0oLMzEwAwKRJk/DUU0/F/KRERERERERul1AiZsaT\nEhERERERuV20nCjhrolERERERETUPUzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCzGRIyIiIiI\niMhiTMSIiIiIiIgsxkSMiIiIiIjIYkzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCzGRIyIiIiI\niMhiTMSIiIiIiIgsxkSMiIiIiIjIYkzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCzGRIyIiIiI\niMhiTMSIiIiIiIgsxkSMiIiIiIjIYkzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCzGRIyIiIiI\niMhiTMSIiIiIiIgsxkSMiIiIiIjIYkzEiIiIiIiILMZEjIiIiIiIyGJMxIiIiIiIiCwWNRErKipC\nVlYWJkyY0P69qqoqXHzxxTjppJNwySWXoKamxvSDJCIiIiIicpOoiVhhYSFWrVoV9r358+fj4osv\nxvbt2/GDH/wA8+fPN/UAiYiIiIiI3CZF0zQt2i/s2bMHl112GTZv3gwA+M53voMPP/wQWVlZOHTo\nEPLy8lBZWXn8A6ekoIuHJiIiIiJKqlmzgD17gNRUYPFiYPDgZB8RuUm0nKjba8QOHz6MrKwsAEBW\nVhYOHz6c2NERERERESVBSwtQWQl8/DHwzjtAaWmyj4i8JKFmHSkpKUhJSTHqWIiIiIjIREVFwPnn\n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\niIiIaIX9H/PYuCdxwWt0AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "detector = ZScoreDetector(window_size = 30, threshold=10.0)\n", "OnlineSimulator(detector, sig).run(signal_name = \"Imaginary Seasonal Signal\")" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Residuals: ['z_score_']\n", "Change detected. Stopping Rule triggered at 276.\n", "\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "-c:68: RuntimeWarning: invalid value encountered in double_scalars\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "True" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A slightly different seasonal signal" ] }, { "cell_type": "code", "collapsed": false, "input": [ "jump_size = 30\n", "\n", "sig2 = np.linspace(40, 50, num=20)\n", "sig2 = np.concatenate([sig2 for x in xrange(8)])\n", "\n", "# TODO need a change to detect\n", "sig2[120:] = sig2[120:] + jump_size\n", "\n", "noise = np.random.normal(\n", " size=sig2.shape,\n", " scale=jump_size * 0.05\n", " )\n", "\n", "sig2 = sig2 + noise\n", "\n", "\n", "detector = ZScoreDetector(window_size = 20, threshold=10.0)\n", "OnlineSimulator(detector, sig2).run(signal_name = \"Second Imaginary Seasonal Signal\")" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Residuals: ['z_score_']\n", "Change detected. Stopping Rule triggered at 138.\n", "\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "True" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAskAAAF6CAYAAADrg8WrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4VOX5//HPsMkaCAESICCKAqKsouwwCIkYoSIgCrJv\nl5WftVYRta1EqyRUrNtXa3HBhaqFby9FKyBWGtS68KVoRFCRJSRkg0A2CCQkOb8/ns4kmUySSTKZ\nZCbv13XNBTPnzDnPPHNy5j73uc9zbJZlWQIAAADg1KS+GwAAAAA0NATJAAAAgAuCZAAAAMAFQTIA\nAADggiAZAAAAcEGQDAAAALggSAbgV1577TWNHTu2vptRTlRUlN588836bkZASUhIUJMmTVRcXFzt\n9/71r3/V9ddfXwetKisuLk49evSo8/UA8D2CZABlfP755xo1apQ6dOigkJAQjRkzRnv27KnvZnmk\nNkFVbW3dulXz5s3z+XrdWbNmjS699FK1a9dOPXr00G233VbfTaoTlW2rt99+uz766KN6biEAf9as\nvhsAoOHIycnRlClT9Je//EWzZs1Sfn6+PvvsM1100UX13bRGq7CwUM2aeb6rfv3117Vx40Z98skn\nuuSSS5Senq4PPvigDltYP9hWAdQ1MskAnA4ePCibzaZbb71VNptNLVu2VEREhAYMGOCc59VXX1X/\n/v3VsWNHTZ48WYmJic5p+/fvV0REhEJCQhQWFqaYmBhJUn5+vn7961+re/fu6t69u+655x4VFBRI\nMqerw8PD9ac//UmhoaHq1q2bXnvtNecyT506pV/84hdq3769hg8frsOHD3v8eRYuXKg777xTUVFR\nateuncaOHau0tDTdfffdCg4O1hVXXKFvv/3WOX9sbKwuu+wyBQUF6corr9R7773nnFZcXKx7771X\nnTt31qWXXqr/+Z//KZO1ttvteuWVVySZkpAxY8Zo5cqV6tixoy699FJt377duawNGzaof//+CgoK\nUu/evbV+/XrnNEd//PGPf1TXrl21ePFiDRgwQP/4xz+c81y4cEGdOnVSfHx8uc+8Z88eXX/99brk\nkkskSaGhoVq6dKlzenZ2tpYsWaJu3bopPDxcv//9752f4fDhw7ruuuvUqVMnde7cWXPnzlV2drbz\nvWvXrlV4eLiCgoLUr18/7dy5U1Ltvt8PP/xQQ4YMUfv27dWzZ0898sgjHn23VW2rrmU5O3bsUN++\nfdWhQwetWLFC48eP98r3BSBwESQDcOrbt6+aNm2qhQsXavv27crMzCwzfcuWLYqJidG7776rjIwM\njR07VrNnz5Yk5ebmatKkSYqKilJqaqoOHTqkiRMnSpIef/xx7d69W/Hx8YqPj9fu3bv12GOPOZeb\nnp6unJwcpaSk6JVXXtGKFSucwdmKFSvUunVrpaWl6dVXX9WGDRtks9k8/kybN2/W448/royMDLVo\n0UIjRozQNddco9OnT2vmzJn6zW9+45z3sssu0+eff66cnBytXr1ac+fOVXp6uiRp/fr12r59u+Lj\n47V371699957Zdphs9nKPN+9e7f69eunU6dO6f7779eSJUuc00JDQ/Xhhx8qJydHGzZs0D333KNv\nvvmmTH9kZmYqMTFR69ev1/z587Vx40bn9K1bt6p79+4aNGhQuc87YsQIvfHGG1q3bp327NmjoqKi\nMtMXLlyoFi1a6PDhw/rmm2+0Y8cOvfzyy87pv/3tb5WamqoffvhBSUlJio6OliT99NNPev7557Vn\nzx7l5ORox44d6tWrl6Tafb9t27bVxo0blZ2drQ8//FB//vOftWXLliq/16q21dIyMjJ0yy23aO3a\ntTp9+rT69u2rL7/80mvfF4AAZQFAKT/88IO1cOFCKzw83GrWrJn1i1/8wkpPT7csy7ImT55svfLK\nK855i4qKrNatW1vHjh2z3nrrLWvo0KFul9m7d29r27ZtzucfffSR1atXL8uyLOtf//qX1apVK6uo\nqMg5vUuXLtbXX39tFRYWWs2bN7d++ukn57SHHnrIGjNmjNv1HD161LLZbM5lLVy40Fq+fLlz+nPP\nPWf179/f+fy7776zOnToUGFfDB482Hr//fcty7KsCRMmWOvXr3dO++c//1lmXXa73dk3GzZssC67\n7DLnvGfPnrVsNpuzH11NmzbNeuaZZ5z90aJFCys/P985PTk52Wrbtq2Vm5trWZZlzZgxw3riiScq\nbPdf//pXa9KkSVabNm2skJAQa+3atZZlWVZaWpp10UUXWefOnXPO+9Zbb1kTJkxwu5x3333XGjJk\niGVZlvXzzz9bXbp0sf75z39aBQUFZear6ffrzt13323dc889lmWV/z5dVbatbtiwwbmdvP7669ao\nUaPKvLdHjx5e+77Cw8PdzgfAv5FJBlBGv379tGHDBiUlJen7779XSkqKfv3rX0uSjh075ixVCA4O\nVkhIiCQpOTlZx48f16WXXup2mSkpKbr44oudz3v27KmUlBTn85CQEDVpUrI7at26tc6cOaOTJ0+q\nsLCwzOgBPXv2rNbn6dKli/P/LVu2LPO8VatWOnPmjPP5G2+8oSFDhjg/3/fff6+MjAxJUmpqapl2\nhIeHV7resLCwMp9HknNd27Zt04gRIxQSEqLg4GBt3bpVp06dcs7fuXNntWjRwvm8W7duGj16tP73\nf/9XWVlZ2r59u26//fYK1z1nzhx9/PHHys7O1osvvqjf//732rFjh44dO6YLFy6oa9euzs94xx13\n6OTJk5JMxve2225TeHi42rdvr3nz5jnbddlll+npp59WdHS0QkNDNXv2bKWmpkqq+fcrSV9//bUm\nTJigLl26qEOHDvrLX/5Spi8qU9m2WlpKSkq578v1eW2+LwCBiSAZQIX69u2rBQsW6Pvvv5dkgp/1\n69crMzPT+Th79qxGjhypHj166MiRI26X061bNyUkJDifJyYmqlu3blWuv3PnzmrWrFmZuufS//em\nY8eOafny5Xr++ed1+vRpZWZm6qqrrpJlWZKkrl27KikpyTl/6f9XR35+vmbMmKH7779fJ06cUGZm\npqKiopzrkeS2nGTBggXauHGjNm/erFGjRqlr165Vrqtp06aaOXOmBg4cqP3796tnz5666KKLdOrU\nKef3l52drX379kmSHnroITVt2lTff/+9srOz9eabb5YZKWT27Nn67LPPdOzYMdlsNq1atUpSzb9f\nyQT006ZN0/Hjx5WVlaU77rijRqOTuG6rpXXr1k3Hjx93Prcsq8zzynjyfQEITATJAJx++ukn/elP\nf1JycrIkEwi+/fbbGjlypCTpjjvu0Jo1a3TgwAFJ5iKwzZs3S5KmTJmi1NRUPfPMM8rPz1dubq52\n794tyQRXjz32mDIyMpSRkaFHH33Uo+HSmjZtqunTpys6Olrnzp3TgQMH9Prrr3tck1ydQObs2bOy\n2Wzq1KmTiouLtWHDhjIB16xZs/TMM88oJSVFWVlZWrt2bbVqox0KCgpUUFCgTp06qUmTJtq2bZt2\n7NhR5ftuvvlm7d27V88++6zmz59f4Xyvv/66tm7dqtzcXBUXF2vbtm3av3+/hg8frrCwMEVGRuo3\nv/mNc/rhw4f16aefSjKZ0zZt2igoKEjJycl64oknnMs9ePCgdu7cqfz8fF100UVq2bKlmjZtKqnm\n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\nv664uDgdOXJEZ86c0f/7f/+vzHI//fRT/fjjj9q+fbu2bNmimJgYvfvuu8rIyNDYsWOdywKA+kaQ\nDMAvWJaladOmKSgoSD179lTv3r31u9/9TpK0ceNGRUVFafLkyZKkSZMmadiwYfrwww9ls9nUpEkT\n7du3T+fOnVNoaKj69+9fbvlbt27VVVddpenTp6tp06b69a9/rbCwsDLrr0xUVJQuueQSSdK4ceMU\nGRmpzz77zKPP9vDDD+vkyZO65JJLdOTIEX344YeaPHmysrKydPr0aY9KK3r27KnMzEyFh4dXOt/f\n/vY3vf322/r73/+upk2bVjhfixYtlJqaqoSEBDVt2lSjR4+WJO3evVupqal64okn1KpVK1100UUa\nNWqUJHMh5L333qtevXqpTZs2iomJ0TvvvOPMtksmI9+qVSu1bNlSL774oh588EH17dtXTZo00YMP\nPqhvv/1WSUlJnnQbANQpgmQAfsFms2nLli3KyclRXFycdu7cqT179kiSjh07ps2bNys4ONj5+Pe/\n/620tDS1bt1af/vb3/Tiiy+qW7dumjJlin766adyy09JSSkXYFZnRIpt27ZpxIgRCgkJUXBwsLZu\n3apTp05V+b5vv/1WwcHB6tixow4dOqS+ffvquuuuU1xcnIKDg/Xuu+963IaqfPPNN7rrrrv03nvv\nKSQkpNJ5V65cqcsuu0yRkZHq3bu31q5dK8mUWlx88cVq0qT8z0dqaqouvvhi5/OePXuqsLBQ6enp\nztdK9+mxY8d09913O78zR5uSk5Nr9TkBwBsIkgH4nXHjxumuu+7SqlWrJJlgbN68ecrMzHQ+cnNz\ndf/990uSIiMjtWPHDqWlpalfv35atmxZuWV269atTAbTsqwyz9u2bau8vDzn87S0NOf/8/PzNWPG\nDN1///06ceKEMjMzFRUV5VGZxODBg5WZmanf/va3+sMf/qDMzEz1799f3333nTIzM3XzzTe7fV91\nL9w7ceKEbr75Zr3wwgsaNGhQlfO3bdtW69at0+HDh/X+++/rT3/6k3bu3KmePXsqMTFRRUVF5d7T\nrVs3JSQkOJ8nJiaqWbNmCg0Nddvunj17av369WW+t7Nnz2rEiBHV+mwAUBcIkgH4pV//+tfavXu3\nvv76a82dO1cffPCBduzYoaKiIp0/f15xcXFKTk7WiRMntGXLFp09e1bNmzdXmzZt3JYZREVFaf/+\n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\nAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is pretty impressive, eh? \n", "\n", "Even visually inspecting the original signal, it seems the change is small. Yet the detector does a good job here. \n", "\n", "The residual stays at fairly low values, and then jumps dramatically after the point of the change. \n", "\n", "The detector is resistant to the noise in the signal, and managed well with the seasonality.\n", " - how important do you think the window-size is on this seasonal signal?\n", "\n", "The dramatic jump in our residual suggests that we're not too sensitive to the chosen threshold. The jump in the residual is large, even though the change (jump size) is not much larger than the seasonality magnitude and noise.\n", " - How well do you think the zscore detector would do if the seasonality magnitude was the same as the jump size? \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What about Outliers?\n", "\n", "So far, the noise we've added has been gaussian in shape. What if we had signal points that were several standard deviations away from the mean? \n", "\n", "This is a type of noise commonly found in signals. They can occur due to data entry or import errors, or missing data points." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A signal with outliers\n", "\n", "We looked at a noisy signal before. This time, we'll increase the noise level and add some outliers to the signal, too. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "jump_size = 20\n", "signal_size = 300\n", "\n", "# Create a signal with a small jump (change)\n", "sig3 = np.ones(signal_size)\n", "sig3[:150] = 30\n", "sig3[150:] = 30 + jump_size\n", "\n", "# Add noise\n", "noise = np.random.normal(\n", " scale = 0.10 * jump_size,\n", " size=signal_size)\n", "\n", "sig3 = sig3 + noise\n", "\n", "# Add outliers\n", "outlier_idx = np.random.choice(signal_size, size=3)\n", "sig3[outlier_idx] = 0\n", "outlier_idx = np.random.choice(signal_size, size=2)\n", "sig3[outlier_idx] = 90\n", "\n", "# What does this look like?\n", "plt.figure(figsize=(15, 5))\n", "plt.plot(sig3, 'b.')\n", "plt.plot(sig3, '-', alpha=0.15)\n", "plt.ylim(0,100)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "(0, 100)" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA3EAAAE4CAYAAAD1vHrBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmUVeWZ7/FfISjKIEiHQgXFYGw1oqAEnEURHBIVFYgE\nsZCpV3r1XZ2+6bR2+vZqb+5akay+6cRMfWPa2+EmUUM6N+rq1XqN3cGYUROHqKhADVBQA1ADNY/n\nvX+8/bL32Wefsc4+u+rU97NWrao6dersd+/97n3e533e9z0VxhgjAAAAAMCYMCHuAgAAAAAAckcQ\nBwAAAABjCEEcAAAAAIwhBHEAAAAAMIYQxAEAAADAGEIQBwAAAABjSMYgbvPmzaqsrNTChQtPPNba\n2qqVK1fqggsu0KpVq9Te3n7ib48++qg+8pGP6MILL9SLL74YXakBAAAAYJzKGMQ9+OCDeuGFF5Ie\n27Fjh1auXKm9e/dqxYoV2rFjhyRpz549+uEPf6g9e/bohRde0J/+6Z8qkUhEV3IAAAAAGIcyBnHX\nXXedZs6cmfTYc889p6qqKklSVVWVnnnmGUnSs88+q/Xr12vSpEmaP3++zj//fL366qsRFRsAAAAA\nxqe858Q1NzersrJSklRZWanm5mZJUkNDg+bOnXvieXPnztXhw4eLVEwAAAAAgDTChU0qKipUUVGR\n8e8AAAAAgOKZmO8/VFZWqqmpSXPmzFFjY6Nmz54tSTr77LNVX19/4nmHDh3S2WefnfL/559/vqqr\nq0dQZAAAAAAYuxYsWKD9+/cX/P95Z+LuvPNO7dy5U5K0c+dOrV69+sTjTz/9tAYGBlRbW6t9+/Zp\n6dKlKf9fXV0tYwxffOX09Xd/93exl4GvsfFFXeErny/qC1+5flFX+Mrni/rCV65fI01qZczErV+/\nXi+//LKOHTumefPm6Qtf+IIefvhhrVu3Tk888YTmz5+vXbt2SZIuvvhirVu3ThdffLEmTpyob33r\nWwynBAAAAIAiyxjEPfXUU6GPv/TSS6GPf/7zn9fnP//5kZcKAAAAABBqRAubAFFbvnx53EXAGEFd\nQT6oL8gVdQX5oL6gVCqMMaakG6yoUIk3CQAAAACjxkhjIjJxAAAAADCGEMQBAAAAwBhCEAcAAAAA\nYwhBHAAAAACMIQRxAAAAADCGEMQBAAAAwBhCEAcAAAAAYwhBHAAAAACMIQRxAAAAADCGEMQBAAAA\nwBhCEAcAAAAAYwhBHAAAAACMIQRxAAAAADCGEMQBAAAAwBhCEAcAAAAAYwhBHAAAAACMIQRxAAAA\nADCGEMQBAAAAwBhCEAcAAAAAYwhBHAAAAACMIQRxAAAAADCGEMQBQJnaskW65hrp9tul9va4SwMA\n49P990vLl3MvRnERxAFAmdq7V/rVr6Tnn5e2b4+7NAAwPu3dK738MvdiFBdBHACUqVNPtd+XLJEe\nfzzesgDAeMW9GFGoMMaYkm6wokIl3iQAjEv19dKnPy19//vSjBlxlwYAxh9jpN//XvrSl6TvfId7\nMTwjjYkI4gCgTHV0SMePS/PmxV0SABifEglp/37pwx+WJk6MuzQYTUYaEzGcEgAAAIiAa6OTv0Cx\nEcQBQJkyhoYDAMSJIA5RIYgDgDJGwwEA4kMQh6gQxAFAmaLRAADxIohDVAjiAKBMMZwSAOJFEIeo\nEMQBAAAAESCIQ1QI4gCgTJGJA4B4EcQhKgRxAFCmCOIAIF4EcYgKQRwAAAAQAYI4RIUgDgDKFJk4\nAIgXQRyiQhAHAGWMhgMAxId7MKJCEAcAZYrGAwDEi0wcokIQBwBliuGUADA6cC9GsRHEAUAZo+EA\nAPFJJOx37sUoNoI4AChTNBoAYHTgfoxiI4gDgDLFXAwAiBf3YUSFIA4AAACIgDFSRQVBHIqPIA4A\nyhQ9wAAQL2OkCRO4D6P4COIAoMzReACAeBDEISoFB3GPPvqoPvrRj2rhwoX61Kc+pf7+frW2tmrl\nypW64IILtGrVKrW3txezrACAPNBoAIB4EcQhKgUFcXV1dfrOd76j119/XW+//baGh4f19NNPa8eO\nHVq5cqX27t2rFStWaMeOHcUuLwAgRwynBIB4EcQhKgUFcdOnT9ekSZPU09OjoaEh9fT06KyzztJz\nzz2nqqoqSVJVVZWeeeaZohYWAJA/Gg8AEA+COESloCDujDPO0Gc/+1mdc845OuusszRjxgytXLlS\nzc3NqqyslCRVVlaqubm5qIUFAOSORgMAxIsgDlEpKIirrq7WV7/6VdXV1amhoUFdXV36/ve/n/Sc\niooKVVRUFKWQAID8MZwSAOJFEIeoTCzkn373u9/p6quv1qxZsyRJ99xzj379619rzpw5ampq0pw5\nc9TY2KjZs2eH/v8jjzxy4ufly5dr+fLlhRQDAAAAGLX4nDg4u3fv1u7du4v2ehXG5F+t3nrrLW3Y\nsEGvvfaaJk+erE2bNmnp0qU6cOCAZs2apYceekg7duxQe3t7yuImFRUVKmCTAIA8HTwo9fVJ554r\nnXJK3KUBgPHn8GF7/+3rk+bOjbs0GE1GGhMVlIm77LLL9MADD2jJkiWaMGGCLr/8cm3fvl2dnZ1a\nt26dnnjiCc2fP1+7du0quGAAgJGhBxgA4sVwSkSloEzciDZIJg4ASuLAAWlw0Pb+Tp4cd2kAYPyp\nr5emTZM6OqRzzom7NBhNRhoTFfxh3wCA0Y0eYACIF/dhRIUgDgDKGMMpASA+BHGICkEcAJQpNycO\nABAPgjhEhSAOAMoUC5sAQLwI4hAVgjgAKGMTuMsDQKzoTEMUeHsHgDJFJg4A4pVIkIlDNAjiAKBM\nEcQBQPwI4hAFgjgAKGMMpwSA+DAnDlHh7R0AyhSZOACIl7sPcy9GsRHEAUCZIogDgNGBezGKjSAO\nAMqU6/0FAJSe/7M6uRej2AjiAKAMuR5fen8BIB7BII57MYqJIA4AypRrPNBwAIDSI4hDlAjiAKAM\n+SfTAwBKjyAOUSKIA4Ay5G8s0HAAgNIjiEOUCOIAoEyRiQOA+BDEIUoEcQBQhljYBADiRRCHKBHE\nAUAZ8jceaDgAQOkRxCFKBHEAUKYYTgkA8fEHce53oFgI4gCgDDGcEgDi5b/3ci9GsRHEAUCZYjgl\nAMSH4ZSIEkEcAJQhPicOAOJFEIcoEcQBQBliOCUAxIsgDlEiiAOAMkUWDgDiEwzigGIiiAOAMkQm\nDgDiRyYOUSGIA4AyxcImABCfRIIgDtEhiAOAMsTCJgAQP4I4RIUgDgDKEMMpASBeLGyCKBHEAUCZ\nYjglAMSHIA5RIogDgDLEcEoAiBdBHKJEEAcAZYjhlAAQL4I4RIkgDgDKFFk4AIgPQRyiRBAHAGWI\nTBwAxIsgDlEiiAOAMsXCJgAQH38Q534HioUgDgDKEAubAEC8yMQhSgRxAFCGGE4JAPEiiEOUCOIA\noEwxnBIA4kMQhygRxAFAGWI4JQDEiyAOUSKIA4AyxHBKAIhXMIgDiokgDgDKFMMpASA+/nsvHWoo\nNoI4AChD/kwcAKD0GE6JKBHEAUAZ8s+Jo+EAAKVHEIcoEcQBQJkiCwcA8SGIQ5QI4gCgDLGwCQDE\niyAOUSKIA4AyxcImABAvgjhEhSAOAMoQnxMHAPFKJAjiEB2COAAoQzQWACB+/o407ssopoKDuPb2\ndq1Zs0YXXXSRLr74Yv32t79Va2urVq5cqQsuuECrVq1Se3t7McsKAMgDjQcAiA9z4hClgoO4P//z\nP9ftt9+u9957T3/4wx904YUXaseOHVq5cqX27t2rFStWaMeOHcUsKwAgR8HGAwCgtAjiEKUKY/Kv\nUsePH9fixYtVU1OT9PiFF16ol19+WZWVlWpqatLy5cv1/vvvJ2+wokIFbBIAkIfGRmnqVGnaNKm6\nWjrvPGkCA+gBoGT27ZM+8pHk388/n441WCONiQp6S6+trdWHPvQhPfjgg7r88su1bds2dXd3q7m5\nWZWVlZKkyspKNTc3F1wwAMDI0FAAgHj4s3AO2TgU08RC/mloaEivv/66vvGNb+hjH/uYPvOZz6QM\nnayoqFBFmhbEI488cuLn5cuXa/ny5YUUAwCQhr+hQMMBAEorXRCH8Wv37t3avXt30V6voOGUTU1N\nuuqqq1RbWytJ+sUvfqFHH31UNTU1+tnPfqY5c+aosbFRN954I8MpASAGhw9LM2ZIU6ZItbXSvHnS\nxIK67QAA+Roelg4ckD78Ye+xmhrp3HOlk06Kr1wYPWIZTjlnzhzNmzdPe/fulSS99NJL+uhHP6o7\n7rhDO3fulCTt3LlTq1evLrhgAICRodcXAOLBcEpEreB+2a9//evasGGDBgYGtGDBAv3zP/+zhoeH\ntW7dOj3xxBOaP3++du3aVcyyAgByxHBKAIgPQRyiVtBwyhFtkOGUABC5Q4ekWbOkU0+V6uqks86S\nTj457lIBwPgwMGBXCT73XO+xAwekM8/kXgwrluGUAIDRjc+JA4D4kIlD1AjiAKAMMZwSAOJDEIeo\nEcQBQJnyNyBoOABA6RDEIWoEcQBQhhhOCQDxCQvWCOJQTARxAFCGGE4JAPEJy8S5x4FiIIgDgDJF\nBg4A4sFwSkSNIA4AyhCZOACID0EcokYQBwBlioVNACAeBHGIGkEcAJQhFjYBgHiFBXFAsRDEAUAZ\nYjglAMQnkSATh2gRxAFAmWI4JRCPrVulK6+Ubr9dam+PuzSIC0EcokQQBwBliOGUQHw++ED67W+l\n55+Xtm+PuzSIA3PiEDWCOAAoQwynxGi0fbu0fHn5Z6gmT7bfFy+WHn883rIUy/bt0vXXl+7cbd0q\nXXPN2K0rBHGIGkEcAJQpMnAYbd55R3r55fLPUH3729Ktt0o//rE0Y0bcpSmO996TXnmldOfu/fel\nX/1q7NYVgjhEjSAOAMoQmTiMRiefbL8vXCgND0s33DB2My3Oli2p+3HaadITT0innBJv2Ypp0iT7\n/fLLS5NddMfuiivGZjaTIA5RI4gDgDIUbDzQcMhu06byGOq3adPoDI6Mkf7hH6S1a6Wf/1xqaLDf\nx2qmxXn33dT9GBiQpk6V+vvjLVuxDA9LX/6ydMcd0r/8S2myi1/9qnTbbdKzz47NbCZBHKJGEAcA\nZSbYeGBYZXbDw9KePWN/qF8iYYe9jcbgaGBAmjVL2rXLNsqnTLGPL1kyNjMtktTb62WM/PsxOGj3\nL5GwdSub+++Xrr3WBi2jKfB2jh+XzjpLeuopL5taTA88kNzxYIx06qnSd79rs5ql8MAD0tVXF6/z\ngyAuVannVZa7iXEXAABQXMFGwnhvOOSiv982GqXRE1Rs3y7t3WsbsU8+mVs2oqvLW1Qjl/3Yts1u\nY8qU3LdRqIGB5ADg+9+3QxF/8IOxkWkJOx/Hj0v/+I/SX/2V3Z8ZM2zgZox00kk2wOvvzxyIdHVJ\n+/fb1SwlacECadmy4p+PrVvtdvKpT05HhzRnjh1S2ddXvDJJtjH//vvSa6/Z37dvl3butHVl8mSp\np6e42wtKJKSmJntu3TnYvt12NoxEPkHc1q3Svn0juw43b5Zqago7v6Xy7rt2nqOU3zHevt3WkZNP\nlmbOlA4ftvs3WvezVAjiAKAMMZwyP/390te/Lv3N30jf+57XMNi2zS4XP3Vq6RoMg4M2OHjrLenV\nV+1juTZ4jh+3c7E+8xkvqMjknXek3/wmv22ks327zWaecop0xhl2uOTpp3vHLRjEzZkjfe1r0rRp\nhW+zlN5/3y7sIdl9ffppqbtbOv986bHHvGM9OOjNH8sliDt+XJo+3f48ZYrU2uplUcPOx7ZttsGf\nb2P97bfzr0+SDaIqKrzOgYkT7T4VY75fX5/d39NPt7+7joe+PtupcsopUlvbyLeTzpYt9hqYOtWr\nh8VaUTQsiHOPB39/553MAeT27fY+FBbkDQ9Lzc32NfyB8EiD0DAPPuh1BMyeLdXX514Pjxzxrv98\nj7H/2ps1S2ppsT9HtZ9jBUEcAJQZhlPmr69POucc6Stf8RqUku05/vWv7c+laDBs2mSHQ06b5jX8\nc80MDgzYAOK885KDinT8DfFiNFzfecc7VmecYRvnknfc3Dwxv1NPtUMSg4+PRq4Betll9lh1dNhG\ntXt8aMgGOP5gdfJkm2lLZ3DQnocf/lD6kz+xActLL2U+H2+/nX/GyJj8MrR+27dLdXU20HzySfs6\n/mGkhdq2TfrDH+z19k//JH3609L/+T+23jY22jpx8sn2GEWho8PWWRfY3nWXtHq19MUvJl87hWYw\nc83EtbdnPzfvvSf94hf2Z/8537zZ3qOmTSv8/AbL3N9vt7F/v63fs2fb8z9pku20+N3v7HNnzvQC\n7Gz1cONG7/Vuu0365jfz6xBznSJLltj/e+kladGi0TFiIlamxGLYJACMK4ODxlRXe7+3tBhz7Fh8\n5RkLamuN6e835uBBY3p67GOJhDE33GCMZMxllxnT1hZ9OZYts9uTjLnrLmNuv92Yw4dz+9+jR+2X\nMcbU1BgzMJD5+Y2Ndr/vvdeY11/P/ny/LVuMuf56Y267zR6X9nZjli+35V6yxJibb7Y/X365d9zq\n6ozp60t+nbY2Y5qbc9/uSFRV2fPpypzO4KAxGzcm758xxrz7rjGrVxvz1lvGdHTY/XF1pb7emO5u\n+3NLi3ce+vvtMU7nyJHka7OtzZ73vXvDn9/TY8vljrMr2+bNxlx5Zfp9Gxgw5rXXjLnjjvzqcW+v\nMUuXenVy7Vpjjh83pqEh99cIk0jY8vpft6nJK5u//rprs5juv99ea7NmJR/L4WFj9u+3342x34P7\nn6vDh43p6kp+rLMz+XoeGrLba2625+7IkfDXWrHCbn/RIu8YDQ0ll+322/M/v36bN9vXW748+XVn\nzvR+njPHO17+6z3bNv33tdWr09/TEgljNmww5tprvbqcSNj707332t/b2oy5+25j3nmnsP3Mdgxy\nuUcUy0hjIoI4ACgzg4O2EeT4G5VIlUgYs2+f/fnYMa9R3dlpGwpr1tiGe2dn6v9u22YbHDfdZMw9\n92RuSGczOJjaQD9+3JhDh3L7/+pqr+F7+HB4ef3b8jdW29qMWb8+twbM8ePJjbxzz7W/33STbaC5\nhtYddxhz4ID3f/v22WPt19eXOcgpRFWVMdddl7wfPT3GfOxjmRvjW7cac/XV9hxccUXqc/fvt8et\nr8+YT37SNkzdNo4cMaa11T6vqckGtf79dse5qsqYa64x5tZb7fPda/r19ydfv35NTcbs2WPMxz+e\nfI6uvjrzvnV32/pRV5ft6HkSCXtuVq5MrpMDA8mdROn+d+NGu6+33JJc1kTC1umbbkp+3a4uGwy7\nuuk0NNig2bn/fru//vO7bVtq0J3u8WDwM3du8v8cPmzruDH2vplPsOJ36JAX2DtdXcnXc1OTF7g1\nNXl1KOgPf7DX1uuv2/K74+KCuyVL7O8HD+ZeviB/UO0P1lyHzJIltv6sXetd45/4RG7Xr/8YHjkS\nXn8GB+39Ihjcd3Sk3gMTCVtH3LHIxZYtycGhX1+frXvZ7hH52Lo1vE76EcQBAJIMDCQ3AltbCeL8\nXEPavbn29nrBRk+P1xA6dMhrzPX22oZ78E352mu9N33Xqx9sAIQFFWHa2415/32vkWSMbaxUV6dm\nsPwSCbsNfwB57Fjmc370aGqvv7+3PF2Qc9VVNtBzDfBFi8IDHrc/TU3254GB9I29sECmEImEzS6G\nZU4aG4258Ub72BVXhJ+Hq67y/m/27NTAxX9NXXNNanaqsdH+zZ+VM8bL7nZ0JJftnHPSB/01NanZ\nJ9dwHRxMDgyN8RrJl14avm9tbfZcBAPpzZvtfoeV4ehRGxi0tSXXSWOSOwzCNDQkN8ZnzrR1Zv16\n+/iNNyYHBP79a29PztT4O1bSZcb8585fB8OC244Ory6EBWYuaOjvt+U5dsxmudJlH7dtC+/8WL8+\nNWjo7rb1wxhjHnzQ7suttyYHsUHDw955a262121Xl72eWlu9Y+ieFyxbtkDCGHt/caMOwoK14Pl3\nXMCdLYv/1lteJs2Y1GveZQFvvtkLGl3Wsb4+vEOqsTH3oHpoKPz+NjhoM39u22FZ7mz6+oy5777U\n45ytY8UYgjgAQECwwdzamn6YzngUbPC5Bq4xXlbONeD8Dd6wN+WwIYSLFyc3ALIFR86hQ+GNldZW\nL0Dw27zZvvb119vt+7cR7PH3c43lYMPL3+MebMD09KQO9XTH7rbbwv/PP5QwOIzMr6HBC5YLMTxs\nG8TLltnGuctOuKGcbojcsWPpMwfDw8kNuL17bcPd7U9HR3IjPrjPvb1elqumJrmBeuSIPRfV1TYr\n5epI8Jz5+YcWOsePe8fQX1eGhmyGZs2a9MNiXabwwAFbViddQzMYYAQFs2N+jY22fLfeal936tTw\noXlh10JDgz1+LS3eY/6609bmBWALF9rtNDZ612Hw2gsL3BsbUwNIPxcMHTzo/b2tLfwaNCa5I8e/\nT2HXfU+PDUoGBlKDUXfv8QfnxiRfy0NDtjNp6VJjVq1KLX9w6Gm6sgUdOpT5mGTywAPZRyAEh3cH\n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\nYMECU1tbawYGBsxll11m9uzZU6rNYwyYP3++aWlpSXrsc5/7nPnSl75kjDFmx44d5qGHHoqjaBgF\nfv7zn5vXX3/dXHLJJSceS1c/3n33XXPZZZeZgYEBU1tbaxYsWGCGh4djKTdKL6yuPPLII+bLX/5y\nynOpK2hsbDRvvPGGMcaYzs5Oc8EFF5g9e/Zwf0GKdHWF+wvS6e7uNsYYMzg4aJYtW2ZeeeWVot1b\nSpaJ44PAkQsTGN373HPPqaqqSpJUVVWlZ555Jo5iYRS47rrrNHPmzKTH0tWPZ599VuvXr9ekSZM0\nf/58nX/++Xr11VdLXmbEI6yuSKn3F4m6AmnOnDlatGiRJGnq1Km66KKLdPjwYe4vSJGurkjcXxDu\ntNNOkyQNDAxoeHhYM2fOLNq9pWRBHB8EjmwqKip08803a8mSJfrOd74jSWpublZlZaUkqbKyUs3N\nzXEWEaNMuvrR0NCguXPnnnge9xtI0te//nVddtll2rJly4nhK9QV+NXV1emNN97QsmXLuL8gI1dX\nrrzySkncXxAukUho0aJFqqysPDEUt1j3lpIFcXwQOLL55S9/qTfeeEPPP/+8vvnNb+qVV15J+ntF\nRQX1CGllqx/UnfHt05/+tGpra/Xmm2/qzDPP1Gc/+9m0z6WujE9dXV2699579dhjj2natGlJf+P+\nAr+uri6tWbNGjz32mKZOncr9BWlNmDBBb775pg4dOqSf//zn+tnPfpb095HcW0oWxJ199tmqr68/\n8Xt9fX1StAmceeaZkqQPfehDuvvuu/Xqq6+qsrJSTU1NkqTGxkbNnj07ziJilElXP4L3m0OHDuns\ns8+OpYwYHWbPnn3izXLr1q0nhqhQVyBJg4ODuvfee7Vx40atXr1aEvcXhHN15f777z9RV7i/IJvT\nTz9dH//4x/X73/++aPeWkgVxS5Ys0b59+1RXV6eBgQH98Ic/1J133lmqzWOU6+npUWdnpySpu7tb\nL774ohYuXKg777xTO3fulCTt3LnzxA0TkJS2ftx55516+umnNTAwoNraWu3bt+/EiqcYnxobG0/8\n/JOf/OTEypXUFRhjtGXLFl188cX6zGc+c+Jx7i8ISldXuL8gzLFjx04Mre3t7dVPf/pTLV68uGj3\nlqJ+2HcmfBA4Mmlubtbdd98tSRoaGtKGDRu0atUqLVmyROvWrdMTTzyh+fPna9euXTGXFHFZv369\nXn75ZR07dkzz5s3TF77wBT388MOh9ePiiy/WunXrdPHFF2vixIn61re+xRCWcSRYV/77f//v2r17\nt958801VVFTovPPO07e//W1J1BXYofzf//73T3zEjWSX+eb+gqCwuvLFL35RTz31FPcXpGhsbFRV\nVZUSiYQSiYQ2btyoFStWaPHixUW5t/Bh3wAAAAAwhpT0w74BAAAAACNDEAcAAAAAYwhBHAAAAACM\nIQRxAAAAADCGEMQBAAAAwBhCEAcAAAAAYwhBHAAAAACMIQRxAAAAADCG/H+OJqV75NmZawAAAABJ\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Outliers vs. Anomalies vs. Noise\n", "\n", "Early on, I said I was adding \"noise\" to the system, and I generated this noise by sampling a gaussian distribution. Now I'm adding these radical data points to the system and calling them anomalies. \n", "\n", "It's time to get some definitions straight! \n", "\n", "What do we mean when we talk about noise, outliers, and anomalies? How are they different? \n", "\n", "[quote]\n", "\n", "Since data entry errors and missing data can be considered to have been generated by a different mechanism, it would be sensible to call them anomalies. \n", "\n", "But the real question is, do we want to set off the alarm when we see them, or do we want to ignore them? That's the critical question, and the answer depends on the application we're working on and the needs of its users.\n", "\n", "[left-to-right chart: --> outlier (noise) --> outlier --> anomaly]\n", "\n", "This is one of the first questions you'll have to address when designing any change detection or anomaly detection system: what kind of anomalies are important to identify? And what should be ignored? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay, let's see how our zscore detector does on sig3, which we created above. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# On Signal 3\n", "\n", "detector = ZScoreDetector(window_size = 40, threshold=8.0)\n", "OnlineSimulator(detector, sig3).run(signal_name = \"Signal with noise and outlier\")\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Residuals: ['z_score_']\n", "Change detected. Stopping Rule triggered at 180.\n", "\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "True" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n4+DBg/j8888xdepUpKSk4MsvvzQ8tsVa1dS8jUr7rNFqtSbDXrt2DS0tLSgpKbG4akT//v1RUlJi\neKyExscffxyDBw/GjBkzMGjQIGzZsgUAkJ+fj5KSEoSFhRn+ZWVlWT1IAYBvv/0Wt912G6KiohAa\nGoq//vWvFsvP1ryZtzc+Pt7mPJeUlFi83r9/fxQXF9t8jzMuXryI+vp6jB071jD/d955JyoqKgzD\n9OnTB926dXPpdImo82JQJiK3Gjp0KDIyMvDjjz9avBYTE4OioiLDYyGEyWN7GhoaMH/+fGzYsAEX\nLlxAVVUV0tLSHK5ATp06FZ9++imOHTuGcePGYerUqdi/fz8OHz5s6Bdrrr0n89l7f0xMDAoLC03a\nn5+fj9jYWIthg4KC8Pzzz+PcuXPYvXs3XnjhBXz22WeIj4/HgAEDUFVVZfhXW1uLPXv2WJ3msmXL\nMHfuXBQVFaG6uhr/9V//ZffqEmp9+/ZFQUGB4bH6b3OxsbHIz883eU49b7169UJdXZ3htbKyMsPf\nbVnmkZGR6NGjB06ePGmY/+rqatTW1jo1PiIiBmUicqnTp0/jhRdeMFQLCwsLsX37dtxyyy0Ww6al\npeHEiRPYtWsXmpqa8Oc//9kkJNnT2NiIxsZGREZGIiAgAB9//LHNvrjWTJ06Ff/4xz9w0003oWvX\nrtDpdPj73/+OgQMHIiIiwup7tFotzp07Z3e89oK6vdcmTJiAnj174g9/+AOuX78OvV6PPXv2YMmS\nJRbv3bNnD3JyciCEQEhICAIDAxEYGIjx48cjODgYf/jDH3D16lU0Nzfjxx9/NFyaz9yVK1cQFhaG\nbt264fDhw3j33XcdDpKLFi1CVlYWqqurUVRUZPekwbS0NJw5cwbbt29HU1MT3n//ffz888+YNWsW\nACApKQnvvfcempqacOTIEXz44YeGdvTp0wcBAQGtLndAdqtYt24dHnnkEVy8eBEAUFxc3KbtgohI\njUGZiFwqODgY3377LSZMmICgoCDccsstGDlyJLZu3QrA9MStyMhIfPDBB9iwYQMiIyNx6tQpJCcn\nGy4lZ36Sl/KcMp2XXnoJixYtQnh4OLZv3445c+ZYHdaaW265BdeuXTNUj4cPH44ePXpYVJPV43j4\n4Yfxv//7vwgPD7falcRWm+29pjzu1q0bPvroI3z88cfo06cPHnjgAfzP//wPhgwZYvHenJwcpKam\n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\ner0e/fr1a/d4iIjIsxiUicgnJCQkoGfPnggODkZ0dDRWrFiB2trado1z+fLl+Ne//mXzdY1GA41G\n065ptFVsbCwaGhrw2WefYf78+Sav/eY3v0FiYiK6du2KzZs3e7RdRET+iEGZiHyCRqPBnj17cPny\nZRw/fhwnTpzA73//e283y6UKCwvRp08f3HDDDfjPf/6DsWPHmrx+44034rnnnsNdd93l8QDvak1N\nTd5uAhFRqxiUicjnaLVazJgxAz/99JPhuW+++QYpKSkICwtDUlISDh48aHjtzTffxKBBgxASEoKB\nAwfi3XffNTw/efJkw3CffPIJhg0bhtDQUDz44IMQQhhey8zMxIoVKwyP8/LyEBAQgJaWFgDAtm3b\nMGLECISEhGDQoEF47bXX2jxfR44cwZgxYwx/jx492uT19PR0zJw5E8HBwSZtc0RoaCiCg4MRHByM\noKAgBAQEoKCgwObwFRUVmDVrFsLCwhAREYEpU6YYpllYWIh58+YhKioKkZGRePDBBwEALS0t+P3v\nf4+EhARotVpkZGQYqv7K8nrjjTfQv39/TJ8+HQDwxhtvYMSIEQgPD8fMmTPttomIyNMYlInIZyhB\nraioCPv378eECRMAAMXFxZg1axZ++9vfoqqqCs8//zzmz5+PS5cuoa6uDg8//DD279+P2tpafP31\n10hKSrIYd0VFBebPn49nn30Wly5dwqBBg/Dll18aXm+tgqvVarF3717U1tZi27ZtePTRR3Hs2DGH\n5uvpp59GWFgYli1bhh07diAsLAwffvghli5divDwcIdCcUFBAcLCwlBUVGT19erqaly+fBmXL1/G\nQw89hClTpiA2Ntbm+LZu3Yp+/fqhoqICFy5cQFZWFjQaDZqbmzFr1iwMGDAA+fn5KC4uxtKlSwHI\nA4+33noLer0eubm5uHLlCh544AGT8X7++ef4+eefsX//fuzatQtZWVn45z//iYqKCkyePNkwLiKi\njoBBmYh8ghACc+fORUhICOLj4zFo0CD8+te/BgC8/fbbSEtLw8yZMwEA06dPR3JyMvbu3QuNRoOA\ngACcOHECV69ehVarxYgRIyzGv2/fPtx8882YN28eAgMD8cgjjyA6Otpk+vakpaVhwIABAIApU6Zg\nxowZOHTokEPz9tvf/hYXL17EgAEDkJubi71792LmzJmorq5GZWWlQ90s4uPjUVVVhbi4OLvDvf/+\n+9i+fTs+/PBDBAYG2hyuW7duKC0tRV5eHgIDAzFp0iQAwOHDh1FaWornnnsOPXr0wA033ICUlBQA\n8uTIxx57DAkJCejVqxeysrLw3nvvGarugKzM9+jRA927d8df/vIXPPHEExg6dCgCAgLwxBNP4Pvv\nv0dhYaEji42IyO0YlInIJ2g0GuzatQu1tbXQ6/X47LPPcOTIEQBAfn4+PvjgA4SFhRn+ffnllygr\nK0PPnj3x/vvv4y9/+QtiYmIwa9YsnD592mL8JSUlFiGzLVeq+PjjjzFx4kREREQgLCwM+/btw6VL\nl1p93/fff4+wsDCEh4cjJycHQ4cOxe233w69Xo+wsDD885//dLgNrTl27BgefPBB7Ny5ExEREXaH\nffzxxzF48GDMmDEDgwYNwpYtWwDIbhf9+/dHQIDl7qO0tBT9+/c3PI6Pj0dTUxPKy8sNz6mXaX5+\nPh5++GHDOlPaVFxc3K75JCJyFQZlIvI5U6ZMwYMPPoiNGzcCkIFsxYoVqKqqMvy7fPkyNmzYAACY\nMWMGDhw4gLKyMgwbNgzr1q2zGGdMTIxJJVMIYfI4KCgI9fX1hsdlZWWGvxsaGjB//nxs2LABFy5c\nQFVVFdLS0hzqMpGUlISqqio8+eST+N3vfoeqqiqMGDECP/zwA6qqqnDPPfdYfV9bT+a7cOEC7rnn\nHrzyyisYNWpUq8MHBQXh+eefx7lz57B792688MIL+OyzzxAfH4+CggI0NzdbvCcmJgZ5eXmGxwUF\nBejSpQu0Wq3VdsfHx+O1114zWW91dXWYOHFim+aNiMhdGJSJyCc98sgjOHz4ML799lvce++9+Oij\nj3DgwAE0Nzfj2rVr0Ov1KC4uxoULF7Br1y7U1dWha9eu6NWrl9UuB2lpafjpp5/wz3/+E01NTXjp\npZdMwnBSUhI+//xzFBYWoqamBllZWYbXGhsb0djYiMjISAQEBODjjz/GgQMH2jQ/yol8jY2NKCkp\nwcCBAy2GaWpqwrVr19Dc3Izr16/j2rVrJt0abGlqasKCBQtw7733YsGCBQ61Z+/evcjJyYEQAiEh\nIQgMDERgYCDGjx+Pvn37YtOmTaivr8e1a9fw1VdfAQCWLl2KP/7xj8jLy8OVK1fwq1/9CkuWLLFa\nfQaA//qv/8Kzzz6LkydPAgBqamrwwQcfONQ+IiJPYFAmIp8UGRmJjIwMbNmyBXFxcdi1axeeffZZ\nREVFIT4+Hlu3boUQAi0tLfjjH/+I2NhYRERE4NChQ3j11VcBmF4nOTIyEh988AE2bdqEyMhI5OTk\n4Cq6gawAABuTSURBVNZbbzVMb/r06Vi8eDFGjhyJcePGYfbs2Yb3BgcH46WXXsKiRYsQHh6O7du3\nY86cOSbtba0CfPToUYwZMwYnTpxAYmKi1WHWrl2Lnj174r333sMzzzyDnj174u233wYgq7fBwcFW\nT+YrKirCF198gRdffNFw5YuQkBCbJ/4BwNmzZ5Gamorg4GCkpKTg/vvvx9SpUxEQEICPPvoIOTk5\niI+PR79+/bBjxw4AwOrVq7FixQpMmTIFAwcORM+ePfHyyy/bXAZz587Fxo0bsWTJEvTu3RuJiYl2\nr2tNRORpGtHWawwREREREfkBVpSJiIiIiKxwOiivXr0aWq3W5CfCxx9/HMOHD8eoUaMwb9481NTU\nuKSRRETkes8++6yhK4b631133eXVdh06dMhqu0JCQrzaLiLyP053vTh06BCCgoKQnp6OEydOAJB3\ntZo2bRoCAgKwadMmAEB2drbrWktERERE5CFdnH3j5MmTTS4DBACpqamGvydMmIAPP/zQ4n1JSUk4\nfvy4s5MlIiIiInLIqFGj8P333zv9fqeDcmveeOMNq7ciPX78uEPXFqWOKTMzE5mZmd5uBjmJ6893\ncd35Nq4/38V159vaes15c24Jys888wy6deuGZcuWWX1dvcHpdDrodDp3NIOIiIiI/Iher4der3fZ\n+FwelN98803s27cPn376qc1heGRGREROy8yU/4iIzJgXYDdv3tyu8bk0KO/fvx/PPfccDh48iO7d\nu7ty1NRBsPrv27j+fBfXnW/j+vNdXHf+zemrXixduhQHDx5ERUUFtFotNm/ejKysLDQ2NiI8PBwA\ncMstt+CVV14xnaBGwz7KREREROR27c2dHr8zH4MyEREREXlCe3Mn78xHRES+hf2TichDGJSJiIiI\niKxg1wsiIiIi6pTY9YKIiIiIyA0YlImIyLewjzIReQiDMhERERGRFeyjTERERESdEvsoExERERG5\nAYMyERH5FvZRJiIPYVAmIiIiIrKCfZSJiIiIqFNiH2UiIiIiIjdgUCYiIt/CPspE5CEMykRERERE\nVrCPMhERERF1Sl7ro7x69WpotVokJiYanqusrERqaiqGDBmCGTNmoLq62umGERERERF5k9NBedWq\n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\nKlPyO4aRopYAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "raw", "metadata": {}, "source": [ "Note [Aman Ahuja]\n", "\n", "So far this demonstrates the need for windows, but still has a dependency on hyperparameters. \n", " - How would we know what to pick for the Z-score threshold? \n", " - We also now have a new hyper parameter, the window size.\n", "\n", "This discussion leads to the Page Hinkley Stopping Rule\n", "\n", "The likelihood ratio, or the ratio of the gaussian probability densities, can be used to detect the time at which the change occurred, if the magnitude of the jump (magnitude of the change in mean) is known a priori. Else the maximum likelihood estimate of the point (time) of change can be used, requiring some threshold value lambda for the size of the change in mean. This leads to the Page-Hinkley stopping rule (E.S. Page, 1954) and the cumulative sum algorithm (CUSUM)\n", "\n", "There is a recursive method to compute the stopping rule. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Return to the Change Detection Tutorial [Table of Contents](https://github.com/amanahuja/change-detection-tutorial)" ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 } ], "metadata": {} } ] }